startEmailContact method

Future<StartEmailContactResponse> startEmailContact({
  1. required String destinationEmailAddress,
  2. required InboundEmailContent emailMessage,
  3. required EmailAddressInfo fromEmailAddress,
  4. required String instanceId,
  5. InboundAdditionalRecipients? additionalRecipients,
  6. List<EmailAttachment>? attachments,
  7. Map<String, String>? attributes,
  8. String? clientToken,
  9. String? contactFlowId,
  10. String? description,
  11. String? name,
  12. Map<String, Reference>? references,
  13. String? relatedContactId,
  14. Map<String, SegmentAttributeValue>? segmentAttributes,
})

Creates an inbound email contact and initiates a flow to start the email contact for the customer. Response of this API provides the ContactId of the email contact created.

May throw AccessDeniedException. May throw IdempotencyException. May throw InternalServiceException. May throw InvalidRequestException. May throw ResourceNotFoundException. May throw ServiceQuotaExceededException. May throw ThrottlingException.

Parameter destinationEmailAddress : The email address associated with the Connect Customer instance.

Parameter emailMessage : The email message body to be sent to the newly created email.

Parameter fromEmailAddress : The email address of the customer.

Parameter instanceId : The identifier of the Connect Customer instance. You can find the instance ID in the Amazon Resource Name (ARN) of the instance.

Parameter additionalRecipients : The additional recipients address of the email.

Parameter attachments : List of S3 presigned URLs of email attachments and their file name.

Parameter attributes : A custom key-value pair using an attribute map. The attributes are standard Connect Customer attributes, and can be accessed in flows just like any other contact attributes.

There can be up to 32,768 UTF-8 bytes across all key-value pairs per contact. Attribute keys can include only alphanumeric, dash, and underscore characters.

Parameter clientToken : A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If not provided, the Amazon Web Services SDK populates this field. For more information about idempotency, see Making retries safe with idempotent APIs.

Parameter contactFlowId : The identifier of the flow for initiating the emails. To see the ContactFlowId in the Connect Customer admin website, on the navigation menu go to Routing, Flows. Choose the flow. On the flow page, under the name of the flow, choose Show additional flow information. The ContactFlowId is the last part of the ARN, shown here in bold:

arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/846ec553-a005-41c0-8341-xxxxxxxxxxxx

Parameter description : A description of the email contact.

Parameter name : The name of a email that is shown to an agent in the Contact Control Panel (CCP).

Parameter references : A formatted URL that is shown to an agent in the Contact Control Panel (CCP). Emails can have the following reference types at the time of creation: URL | NUMBER | STRING | DATE. EMAIL | EMAIL_MESSAGE |ATTACHMENT are not a supported reference type during email creation.

Parameter relatedContactId : The contactId that is related to this contact. Linking emails together by using RelatedContactID copies over contact attributes from the related email contact to the new email contact. All updates to user-defined attributes in the new email contact are limited to the individual contact ID. There are no limits to the number of contacts that can be linked by using RelatedContactId.

Parameter segmentAttributes : A set of system defined key-value pairs stored on individual contact segments using an attribute map. The attributes are standard Connect Customer attributes. They can be accessed in flows.

Attribute keys can include only alphanumeric, -, and _.

This field can be used to show channel subtype, such as connect:Guide.

Implementation

Future<StartEmailContactResponse> startEmailContact({
  required String destinationEmailAddress,
  required InboundEmailContent emailMessage,
  required EmailAddressInfo fromEmailAddress,
  required String instanceId,
  InboundAdditionalRecipients? additionalRecipients,
  List<EmailAttachment>? attachments,
  Map<String, String>? attributes,
  String? clientToken,
  String? contactFlowId,
  String? description,
  String? name,
  Map<String, Reference>? references,
  String? relatedContactId,
  Map<String, SegmentAttributeValue>? segmentAttributes,
}) async {
  final $payload = <String, dynamic>{
    'DestinationEmailAddress': destinationEmailAddress,
    'EmailMessage': emailMessage,
    'FromEmailAddress': fromEmailAddress,
    'InstanceId': instanceId,
    if (additionalRecipients != null)
      'AdditionalRecipients': additionalRecipients,
    if (attachments != null) 'Attachments': attachments,
    if (attributes != null) 'Attributes': attributes,
    'ClientToken': clientToken ?? _s.generateIdempotencyToken(),
    if (contactFlowId != null) 'ContactFlowId': contactFlowId,
    if (description != null) 'Description': description,
    if (name != null) 'Name': name,
    if (references != null) 'References': references,
    if (relatedContactId != null) 'RelatedContactId': relatedContactId,
    if (segmentAttributes != null) 'SegmentAttributes': segmentAttributes,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'PUT',
    requestUri: '/contact/email',
    exceptionFnMap: _exceptionFns,
  );
  return StartEmailContactResponse.fromJson(response);
}