startOutboundChatContact method
- 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,
- 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:
- Set up SMS messaging
- Request an SMS-enabled phone number through Amazon Web Services End User Messaging SMS
- Set up WhatsApp Business messaging
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:SMSandconnect: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
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);
}