startOutboundChatContact method

Future<StartOutboundChatContactResponse> startOutboundChatContact({
  1. required String contactFlowId,
  2. required Endpoint destinationEndpoint,
  3. required String instanceId,
  4. required Map<String, SegmentAttributeValue> segmentAttributes,
  5. required Endpoint sourceEndpoint,
  6. Map<String, String>? attributes,
  7. int? chatDurationInMinutes,
  8. String? clientToken,
  9. ChatMessage? initialSystemMessage,
  10. TemplatedMessageConfig? initialTemplatedSystemMessage,
  11. ParticipantDetails? participantDetails,
  12. String? relatedContactId,
  13. List<String>? supportedMessagingContentTypes,
})

Initiates a new outbound SMS or WhatsApp contact to a customer. Response of this API provides the ContactId of the outbound SMS or WhatsApp contact created.

SourceEndpoint only supports Endpoints with CONNECT_PHONENUMBER_ARN as Type and DestinationEndpoint only supports Endpoints with TELEPHONE_NUMBER as Type. ContactFlowId initiates the flow to manage the new contact created.

This API can be used to initiate outbound SMS or WhatsApp contacts for an agent, or it can also deflect an ongoing contact to an outbound SMS or WhatsApp contact by using the StartOutboundChatContact Flow Action.

For more information about using SMS or WhatsApp in Connect Customer, see the following topics in the Connect Customer Administrator Guide:

May throw AccessDeniedException. May throw ConflictException. May throw InternalServiceException. May throw InvalidRequestException. May throw LimitExceededException. May throw ResourceNotFoundException. May throw ThrottlingException.

Parameter contactFlowId : The identifier of the flow for the call. To see the ContactFlowId in the Connect Customer console user interface, on the navigation menu go to Routing, Contact 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/123ec456-a007-89c0-1234-xxxxxxxxxxxx

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 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:SMS and connect:WhatsApp.

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.

Parameter chatDurationInMinutes : The total duration of the newly started chat session. If not specified, the chat session duration defaults to 25 hour. The minimum configurable time is 60 minutes. The maximum configurable time is 10,080 minutes (7 days).

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. The token is valid for 7 days after creation. If a contact is already started, the contact ID is returned.

Parameter relatedContactId : The unique identifier for an Connect Customer contact. This identifier is related to the contact starting.

Parameter supportedMessagingContentTypes : The supported chat message content types. Supported types are:

  • text/plain
  • text/markdown
  • application/json, application/vnd.amazonaws.connect.message.interactive
  • application/vnd.amazonaws.connect.message.interactive.response
Content types must always contain text/plain. You can then put any other supported type in the list. For example, all the following lists are valid because they contain text/plain:
  • \[text/plain, text/markdown, application/json\]
  • \[text/markdown, text/plain\]
  • \[text/plain, application/json, application/vnd.amazonaws.connect.message.interactive.response\]

Implementation

Future<StartOutboundChatContactResponse> startOutboundChatContact({
  required String contactFlowId,
  required Endpoint destinationEndpoint,
  required String instanceId,
  required Map<String, SegmentAttributeValue> segmentAttributes,
  required Endpoint sourceEndpoint,
  Map<String, String>? attributes,
  int? chatDurationInMinutes,
  String? clientToken,
  ChatMessage? initialSystemMessage,
  TemplatedMessageConfig? initialTemplatedSystemMessage,
  ParticipantDetails? participantDetails,
  String? relatedContactId,
  List<String>? supportedMessagingContentTypes,
}) async {
  _s.validateNumRange(
    'chatDurationInMinutes',
    chatDurationInMinutes,
    60,
    10080,
  );
  final $payload = <String, dynamic>{
    'ContactFlowId': contactFlowId,
    'DestinationEndpoint': destinationEndpoint,
    'InstanceId': instanceId,
    'SegmentAttributes': segmentAttributes,
    'SourceEndpoint': sourceEndpoint,
    if (attributes != null) 'Attributes': attributes,
    if (chatDurationInMinutes != null)
      'ChatDurationInMinutes': chatDurationInMinutes,
    'ClientToken': clientToken ?? _s.generateIdempotencyToken(),
    if (initialSystemMessage != null)
      'InitialSystemMessage': initialSystemMessage,
    if (initialTemplatedSystemMessage != null)
      'InitialTemplatedSystemMessage': initialTemplatedSystemMessage,
    if (participantDetails != null) 'ParticipantDetails': participantDetails,
    if (relatedContactId != null) 'RelatedContactId': relatedContactId,
    if (supportedMessagingContentTypes != null)
      'SupportedMessagingContentTypes': supportedMessagingContentTypes,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'PUT',
    requestUri: '/contact/outbound-chat',
    exceptionFnMap: _exceptionFns,
  );
  return StartOutboundChatContactResponse.fromJson(response);
}