startChatContact method
- required String contactFlowId,
- required String instanceId,
- required ParticipantDetails participantDetails,
- Map<
String, String> ? attributes, - int? chatDurationInMinutes,
- String? clientToken,
- String? customerId,
- List<
DisconnectOnCustomerExitParticipantType> ? disconnectOnCustomerExit, - ChatMessage? initialMessage,
- ParticipantConfiguration? participantConfiguration,
- PersistentChat? persistentChat,
- Map<
String, SegmentAttributeValue> ? segmentAttributes, - List<
String> ? supportedMessagingContentTypes,
Initiates a flow to start a new chat for the customer. Response of this API provides a token required to obtain credentials from the CreateParticipantConnection API in the Connect Customer Participant Service.
When a new chat contact is successfully created, clients must subscribe to the participant’s connection for the created chat within 5 minutes. This is achieved by invoking CreateParticipantConnection with WEBSOCKET and CONNECTION_CREDENTIALS.
A 429 error occurs in the following situations:
-
API rate limit is exceeded. API TPS throttling returns a
TooManyRequestsexception. -
The quota
for concurrent active chats is exceeded. Active chat throttling
returns a
LimitExceededException.
ChatDurationInMinutes parameter and receive a
400 error, your account may not support the ability to configure custom
chat durations. For more information, contact Amazon Web Services Support.
For more information about chat, see the following topics in the Connect Customer Administrator Guide:
- Concepts: Web and mobile messaging capabilities in Connect Customer
- Connect Customer Chat security best practices
May throw InternalServiceException.
May throw InvalidParameterException.
May throw InvalidRequestException.
May throw LimitExceededException.
May throw ResourceNotFoundException.
Parameter contactFlowId :
The identifier of the flow for initiating the chat. 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 instanceId :
The identifier of the Connect Customer instance. You can find
the instance ID in the Amazon Resource Name (ARN) of the instance.
Parameter participantDetails :
Information identifying the participant.
Parameter attributes :
A custom key-value pair using an attribute map. The attributes are
standard Connect Customer attributes. They 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 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.
Parameter customerId :
The customer's identification number. For example, the
CustomerId may be a customer number from your CRM.
Parameter disconnectOnCustomerExit :
A list of participant types to automatically disconnect when the end
customer ends the chat session, allowing them to continue through
disconnect flows such as surveys or feedback forms.
Parameter initialMessage :
The initial message to be sent to the newly created chat.
Parameter participantConfiguration :
The configuration of the participant.
Parameter persistentChat :
Enable persistent chats. For more information about enabling persistent
chat, and for example use cases and how to configure for them, see Enable
persistent chat.
Parameter relatedContactId :
The unique identifier for an Connect Customer contact. This identifier is
related to the chat starting.
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.
Parameter supportedMessagingContentTypes :
The supported chat message content types. Supported types are
text/plain, text/markdown,
application/json,
application/vnd.amazonaws.connect.message.interactive, and
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<StartChatContactResponse> startChatContact({
required String contactFlowId,
required String instanceId,
required ParticipantDetails participantDetails,
Map<String, String>? attributes,
int? chatDurationInMinutes,
String? clientToken,
String? customerId,
List<DisconnectOnCustomerExitParticipantType>? disconnectOnCustomerExit,
ChatMessage? initialMessage,
ParticipantConfiguration? participantConfiguration,
PersistentChat? persistentChat,
String? relatedContactId,
Map<String, SegmentAttributeValue>? segmentAttributes,
List<String>? supportedMessagingContentTypes,
}) async {
_s.validateNumRange(
'chatDurationInMinutes',
chatDurationInMinutes,
60,
10080,
);
final $payload = <String, dynamic>{
'ContactFlowId': contactFlowId,
'InstanceId': instanceId,
'ParticipantDetails': participantDetails,
if (attributes != null) 'Attributes': attributes,
if (chatDurationInMinutes != null)
'ChatDurationInMinutes': chatDurationInMinutes,
'ClientToken': clientToken ?? _s.generateIdempotencyToken(),
if (customerId != null) 'CustomerId': customerId,
if (disconnectOnCustomerExit != null)
'DisconnectOnCustomerExit':
disconnectOnCustomerExit.map((e) => e.value).toList(),
if (initialMessage != null) 'InitialMessage': initialMessage,
if (participantConfiguration != null)
'ParticipantConfiguration': participantConfiguration,
if (persistentChat != null) 'PersistentChat': persistentChat,
if (relatedContactId != null) 'RelatedContactId': relatedContactId,
if (segmentAttributes != null) 'SegmentAttributes': segmentAttributes,
if (supportedMessagingContentTypes != null)
'SupportedMessagingContentTypes': supportedMessagingContentTypes,
};
final response = await _protocol.send(
payload: $payload,
method: 'PUT',
requestUri: '/contact/chat',
exceptionFnMap: _exceptionFns,
);
return StartChatContactResponse.fromJson(response);
}