Skip to content

start_chat_contact async

start_chat_contact(
    instance_id: InstanceId,
    contact_flow_id: ContactFlowId,
    participant_details: ParticipantDetails,
    *,
    config_overrides: Optional[AsyncConnectClientConfig] = None,
    attributes: Optional[Attributes] = None,
    participant_configuration: Optional[ParticipantConfiguration] = None,
    initial_message: Optional[ChatMessage] = None,
    client_token: Optional[ClientToken] = None,
    chat_duration_in_minutes: Optional[ChatDurationInMinutes] = None,
    supported_messaging_content_types: Optional[SupportedMessagingContentTypes] = None,
    persistent_chat: Optional[PersistentChat] = None,
    related_contact_id: Optional[ContactId] = None,
    segment_attributes: Optional[SegmentAttributes] = None,
    customer_id: Optional[CustomerIdNonEmpty] = None,
    disconnect_on_customer_exit: Optional[DisconnectOnCustomerExit] = None,
    connection_types: Optional[ConnectionTypeList] = None,
    chat_streaming_configuration: Optional[ChatStreamingConfiguration] = None,
) -> StartChatContactResponse

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.

To receive connection information directly in the response, set ConnectionTypes on the request. To initiate real-time message streaming when the chat is created, set ChatStreamingConfiguration on the request. Both parameters are optional.

A 429 error occurs in the following situations:

  • API rate limit is exceeded. API TPS throttling returns a TooManyRequests exception.

  • The quota for concurrent active chats is exceeded. Active chat throttling returns a LimitExceededException.

If you use the 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:

Parameters:

  • instance_id (InstanceId) –

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

  • contact_flow_id (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

  • attributes (Optional[Attributes], default: None ) –

    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.

  • participant_details (ParticipantDetails) –

    Information identifying the participant.

  • participant_configuration (Optional[ParticipantConfiguration], default: None ) –

    The configuration of the participant.

  • initial_message (Optional[ChatMessage], default: None ) –

    The initial message to be sent to the newly created chat.

  • client_token (Optional[ClientToken], default: None ) –

    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.

  • chat_duration_in_minutes (Optional[ChatDurationInMinutes], default: None ) –

    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).

  • supported_messaging_content_types (Optional[SupportedMessagingContentTypes], default: None ) –

    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].

    The type application/vnd.amazonaws.connect.message.interactive is required to use the Show view flow block.

  • persistent_chat (Optional[PersistentChat], default: None ) –

    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.

  • related_contact_id (Optional[ContactId], default: None ) –

    The unique identifier for an Connect Customer contact. This identifier is related to the chat starting.

    You cannot provide data for both RelatedContactId and PersistentChat.

  • segment_attributes (Optional[SegmentAttributes], default: None ) –

    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.

    The types application/vnd.amazonaws.connect.message.interactive and application/vnd.amazonaws.connect.message.interactive.response must be present in the SupportedMessagingContentTypes field of this API in order to set SegmentAttributes as { "connect:Subtype": {"valueString" : "connect:Guide" }}.

  • customer_id (Optional[CustomerIdNonEmpty], default: None ) –

    The customer's identification number. For example, the CustomerId may be a customer number from your CRM.

  • disconnect_on_customer_exit (Optional[DisconnectOnCustomerExit], default: None ) –

    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.

  • connection_types (Optional[ConnectionTypeList], default: None ) –

    The types of connection information to return in the response. This parameter is optional.

    To receive connection information, specify one or both of the following values:

    • CONNECTION_CREDENTIALS: Returns a connection token.

    • WEBSOCKET: Returns a websocket URL.

    WEBSOCKET and CONNECTION_CREDENTIALS are the values this operation acts on. No other value returns connection information.

    Request WEBSOCKET to get a URL the participant connects to directly. You do not need to call CreateParticipantConnection for it. Request CONNECTION_CREDENTIALS on its own and the response returns a connection token but no websocket URL.

    If you omit this parameter, the response has no connection information.

    When you start a new chat contact and the information you request cannot be returned, StartChatContact returns an error rather than a response that omits it. When you retry a request with the same ClientToken, the response repeats the original contact and can omit a websocket URL if the chat has already ended.

  • chat_streaming_configuration (Optional[ChatStreamingConfiguration], default: None ) –

    The streaming configuration, such as the Amazon SNS streaming endpoint. Use it to initiate real-time message streaming when the chat is created. This parameter is optional.

    Setting this parameter returns a StreamingId in the response, and you do not need to call StartContactStreaming.

    This parameter starts message streaming only. The response does not include connection information, and setting this parameter does not remove the need to call CreateParticipantConnection.

Raises:

Source code in docs_src/capo_connect/_services/async_connect.py
async def start_chat_contact(
    self,
    instance_id: "capo_connect.types.instance_id.InstanceId",
    contact_flow_id: "capo_connect.types.contact_flow_id.ContactFlowId",
    participant_details: "capo_connect.types.participant_details.ParticipantDetails",
    *,
    config_overrides: Optional[AsyncConnectClientConfig] = None,
    attributes: Optional["capo_connect.types.attributes.Attributes"] = None,
    participant_configuration: Optional[
        "capo_connect.types.participant_configuration.ParticipantConfiguration"
    ] = None,
    initial_message: Optional["capo_connect.types.chat_message.ChatMessage"] = None,
    client_token: Optional["capo_connect.types.client_token.ClientToken"] = None,
    chat_duration_in_minutes: Optional[
        "capo_connect.types.chat_duration_in_minutes.ChatDurationInMinutes"
    ] = None,
    supported_messaging_content_types: Optional[
        "capo_connect.types.supported_messaging_content_types.SupportedMessagingContentTypes"
    ] = None,
    persistent_chat: Optional[
        "capo_connect.types.persistent_chat.PersistentChat"
    ] = None,
    related_contact_id: Optional["capo_connect.types.contact_id.ContactId"] = None,
    segment_attributes: Optional[
        "capo_connect.types.segment_attributes.SegmentAttributes"
    ] = None,
    customer_id: Optional[
        "capo_connect.types.customer_id_non_empty.CustomerIdNonEmpty"
    ] = None,
    disconnect_on_customer_exit: Optional[
        "capo_connect.types.disconnect_on_customer_exit.DisconnectOnCustomerExit"
    ] = None,
    connection_types: Optional[
        "capo_connect.types.connection_type_list.ConnectionTypeList"
    ] = None,
    chat_streaming_configuration: Optional[
        "capo_connect.types.chat_streaming_configuration.ChatStreamingConfiguration"
    ] = None,
) -> "capo_connect.types.start_chat_contact_response.StartChatContactResponse":
    """<p>Initiates a flow to start a new chat for the customer. Response of this API provides a token required to obtain credentials from the <a href="https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html">CreateParticipantConnection</a> API in the Connect Customer Participant Service.</p> <p>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 <a href="https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html">CreateParticipantConnection</a> with WEBSOCKET and CONNECTION_CREDENTIALS. </p> <p>To receive connection information directly in the response, set <code>ConnectionTypes</code> on the request. To initiate real-time message streaming when the chat is created, set <code>ChatStreamingConfiguration</code> on the request. Both parameters are optional.</p> <p>A 429 error occurs in the following situations:</p> <ul> <li> <p>API rate limit is exceeded. API TPS throttling returns a <code>TooManyRequests</code> exception.</p> </li> <li> <p>The <a href="https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html">quota for concurrent active chats</a> is exceeded. Active chat throttling returns a <code>LimitExceededException</code>.</p> </li> </ul> <p>If you use the <code>ChatDurationInMinutes</code> 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. </p> <p>For more information about chat, see the following topics in the <i>Connect Customer Administrator Guide</i>: </p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/connect/latest/adminguide/web-and-mobile-chat.html">Concepts: Web and mobile messaging capabilities in Connect Customer</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/connect/latest/adminguide/security-best-practices.html#bp-security-chat">Connect Customer Chat security best practices</a> </p> </li> </ul>

    Args:
        instance_id: <p>The identifier of the Connect Customer instance. You can <a href="https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html">find the instance ID</a> in the Amazon Resource Name (ARN) of the instance.</p>
        contact_flow_id: <p>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 <b>Routing</b>, <b>Flows</b>. Choose the flow. On the flow page, under the name of the flow, choose <b>Show additional flow information</b>. The ContactFlowId is the last part of the ARN, shown here in bold: </p> <p>arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/<b>846ec553-a005-41c0-8341-xxxxxxxxxxxx</b> </p>
        attributes: <p>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. </p> <p>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.</p>
        participant_details: <p>Information identifying the participant.</p>
        participant_configuration: <p> The configuration of the participant. </p>
        initial_message: <p>The initial message to be sent to the newly created chat.</p>
        client_token: <p>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 <a href="https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/">Making retries safe with idempotent APIs</a>.</p>
        chat_duration_in_minutes: <p>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).</p>
        supported_messaging_content_types: <p>The supported chat message content types. Supported types are <code>text/plain</code>, <code>text/markdown</code>, <code>application/json</code>, <code>application/vnd.amazonaws.connect.message.interactive</code>, and <code>application/vnd.amazonaws.connect.message.interactive.response</code>. </p> <p>Content types must always contain <code>text/plain</code>. You can then put any other supported type in the list. For example, all the following lists are valid because they contain <code>text/plain</code>: <code>[text/plain, text/markdown, application/json]</code>, <code>[text/markdown, text/plain]</code>, <code>[text/plain, application/json, application/vnd.amazonaws.connect.message.interactive.response]</code>. </p> <note> <p>The type <code>application/vnd.amazonaws.connect.message.interactive</code> is required to use the <a href="https://docs.aws.amazon.com/connect/latest/adminguide/show-view-block.html">Show view</a> flow block.</p> </note>
        persistent_chat: <p>Enable persistent chats. For more information about enabling persistent chat, and for example use cases and how to configure for them, see <a href="https://docs.aws.amazon.com/connect/latest/adminguide/chat-persistence.html">Enable persistent chat</a>.</p>
        related_contact_id: <p>The unique identifier for an Connect Customer contact. This identifier is related to the chat starting.</p> <note> <p>You cannot provide data for both RelatedContactId and PersistentChat. </p> </note>
        segment_attributes: <p>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.</p> <p>Attribute keys can include only alphanumeric, -, and _.</p> <p>This field can be used to show channel subtype, such as <code>connect:Guide</code>.</p> <note> <p>The types <code>application/vnd.amazonaws.connect.message.interactive</code> and <code>application/vnd.amazonaws.connect.message.interactive.response</code> must be present in the SupportedMessagingContentTypes field of this API in order to set <code>SegmentAttributes</code> as {<code> "connect:Subtype": {"valueString" : "connect:Guide" }}</code>.</p> </note>
        customer_id: <p>The customer's identification number. For example, the <code>CustomerId</code> may be a customer number from your CRM.</p>
        disconnect_on_customer_exit: <p>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.</p>
        connection_types: <p>The types of connection information to return in the response. This parameter is optional.</p> <p>To receive connection information, specify one or both of the following values:</p> <ul> <li> <p> <code>CONNECTION_CREDENTIALS</code>: Returns a connection token.</p> </li> <li> <p> <code>WEBSOCKET</code>: Returns a websocket URL.</p> </li> </ul> <p> <code>WEBSOCKET</code> and <code>CONNECTION_CREDENTIALS</code> are the values this operation acts on. No other value returns connection information.</p> <p>Request <code>WEBSOCKET</code> to get a URL the participant connects to directly. You do not need to call <a href="https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html">CreateParticipantConnection</a> for it. Request <code>CONNECTION_CREDENTIALS</code> on its own and the response returns a connection token but no websocket URL.</p> <p>If you omit this parameter, the response has no connection information.</p> <note> <p>When you start a new chat contact and the information you request cannot be returned, StartChatContact returns an error rather than a response that omits it. When you retry a request with the same <code>ClientToken</code>, the response repeats the original contact and can omit a websocket URL if the chat has already ended.</p> </note>
        chat_streaming_configuration: <p>The streaming configuration, such as the Amazon SNS streaming endpoint. Use it to initiate real-time message streaming when the chat is created. This parameter is optional.</p> <p>Setting this parameter returns a <code>StreamingId</code> in the response, and you do not need to call <a href="https://docs.aws.amazon.com/connect/latest/APIReference/API_StartContactStreaming.html">StartContactStreaming</a>.</p> <note> <p>This parameter starts message streaming only. The response does not include connection information, and setting this parameter does not remove the need to call <a href="https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html">CreateParticipantConnection</a>.</p> </note>

    Raises:
        capo_connect.errors.internal_service_exception.InternalServiceException: <p>Request processing failed because of an error or failure with the service.</p>
        capo_connect.errors.invalid_parameter_exception.InvalidParameterException: <p>One or more of the specified parameters are not valid.</p>
        capo_connect.errors.invalid_request_exception.InvalidRequestException: <p>The request is not valid.</p>
        capo_connect.errors.limit_exceeded_exception.LimitExceededException: <p>The allowed limit for the resource has been exceeded.</p>
        capo_connect.errors.resource_not_found_exception.ResourceNotFoundException: <p>The specified resource was not found.</p>
        capo_connect.errors.UnknownServiceError: The service returned an error code this client does not model.
    """

    async def _handler(
        req: "AsyncOperationRequest[capo_connect.types.start_chat_contact_request.StartChatContactRequest]",
    ) -> AsyncOperationResponse[
        "capo_connect.types.start_chat_contact_response.StartChatContactResponse"
    ]:
        import capo_connect._operations.amazon_connect_service.start_chat_contact

        (
            output,
            http_response,
        ) = await capo_connect._operations.amazon_connect_service.start_chat_contact.async_start_chat_contact(
            req.options, req.input
        )
        return AsyncOperationResponse(output=output, response=http_response)

    def _redact_input(
        input_: "capo_connect.types.start_chat_contact_request.StartChatContactRequest",
    ) -> dict[str, Any]:
        import capo_connect.types.start_chat_contact_request

        return capo_connect.types.start_chat_contact_request.redact_sensitive(
            input_
        )

    interceptors_, options_ = self.operation_options(
        config_overrides,
        OperationLogging("StartChatContact", redact_input=_redact_input),
    )
    input_: capo_connect.types.start_chat_contact_request.StartChatContactRequest = {
        "instance_id": instance_id,
        "contact_flow_id": contact_flow_id,
        "participant_details": participant_details,
    }
    if attributes is not None:
        input_["attributes"] = attributes
    if participant_configuration is not None:
        input_["participant_configuration"] = participant_configuration
    if initial_message is not None:
        input_["initial_message"] = initial_message
    if client_token is None:
        client_token = str(uuid.uuid4())
    input_["client_token"] = client_token
    if chat_duration_in_minutes is not None:
        input_["chat_duration_in_minutes"] = chat_duration_in_minutes
    if supported_messaging_content_types is not None:
        input_["supported_messaging_content_types"] = (
            supported_messaging_content_types
        )
    if persistent_chat is not None:
        input_["persistent_chat"] = persistent_chat
    if related_contact_id is not None:
        input_["related_contact_id"] = related_contact_id
    if segment_attributes is not None:
        input_["segment_attributes"] = segment_attributes
    if customer_id is not None:
        input_["customer_id"] = customer_id
    if disconnect_on_customer_exit is not None:
        input_["disconnect_on_customer_exit"] = disconnect_on_customer_exit
    if connection_types is not None:
        input_["connection_types"] = connection_types
    if chat_streaming_configuration is not None:
        input_["chat_streaming_configuration"] = chat_streaming_configuration

    response = await aexecute_pipeline(
        AsyncOperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    await response.response.aclose()
    return response.output