Integra la chat di Amazon Connect in un'applicazione mobile - Amazon Connect

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Integra la chat di Amazon Connect in un'applicazione mobile

Gli argomenti di questa sezione spiegano come creare un'interfaccia utente di chat Amazon Connect personalizzata nella tua applicazione mobile. Ciò richiede l'utilizzo del proprio back-end di chat. È inoltre necessario utilizzare l'StartChatContactAPI Amazon Connect per avviare un contatto e le API Participant Service per gestire la partecipazione alla chat.

Nota

L'StartChatContactAPI richiede la firma della versione 4 di AWS Signature. Pertanto, le richieste iniziali devono essere inoltrate tramite il back-end della chat personale. Le successive chiamate API ad Amazon Connect Participant Service (ACPS) possono essere gestite direttamente dall'applicazione mobile.

Workflow di integrazione

Il diagramma seguente mostra il flusso di programmazione tra un cliente che utilizza un'app mobile e un agente. Il testo numerato nel diagramma corrisponde al testo numerato sotto l'immagine.

Diagramma che mostra il flusso del programma di chat Amazon Connect.

Nel diagramma:

  1. Quando un cliente avvia una chat nell'app mobile, l'app invia una richiesta ad Amazon Connect utilizzando l'StartChatContactAPI. Ciò richiede parametri specifici, come l'endpoint dell'API e gli ID dell'istanza e del flusso di contatti per autenticare e avviare la chat.

  2. L'StartChatContactAPI interagisce con il sistema di back-end per ottenere un token partecipante e un ID di contatto che fungono da identificatori univoci per la sessione di chat.

  3. Il backend dell'app utilizza il token partecipante e l'ID contatto per comunicare con Amazon Connect, configurando la sessione di chat del cliente.

  4. L'Amazon Connect Participant SDK viene attivato utilizzando il token del partecipante, preparando l'app per la chat.

  5. Il Participant SDK utilizza i dettagli della sessione per stabilire una linea di comunicazione sicura con Amazon Connect.

  6. Amazon Connect risponde fornendo un WebSocket URL tramite il Participant SDK. L'app utilizza questo URL per creare una WebSocket connessione per la messaggistica in tempo reale.

  7. Amazon Connect assegna un agente di supporto alla chat in base al flusso di contatti e al profilo di routing.

  8. I messaggi dell'agente arrivano tramite la WebSocket connessione. L'app mobile WebSocket ascolta i messaggi ricevuti e visualizzati dall'agente e i messaggi inviati ai clienti.

Prerequisiti

È necessario disporre dei seguenti prerequisiti per integrare la chat di Amazon Connect con un'app mobile:

Installa le librerie

Inizi il processo di integrazione installando le librerie per iOS e Android. È necessario installare entrambi i set di librerie.

  • iOS: vai al aws-sdk-iosrepository su GitHub e installa quanto segue:

    pod 'AWSCore' pod 'AWSConnectParticipant' pod 'Starscream', '~> 4.0'
  • Android: vai al aws-sdk-androidrepository su GitHub e installa quanto segue:

    implementation("com.amazonaws:aws-android-sdk-core:2.73.0") implementation("com.amazonaws:aws-android-sdk-connectparticipant:2.73.0")

Configurazione delle credenziali AWS

Dopo aver installato entrambi i set di librerie, ti registri con Amazon Connect Service e Amazon Connect Participant Service. A tale scopo, nei file Config di ogni sistema operativo, utilizzate AWS le vostre credenziali e sostituite i secretKey valori accessKey and con stringhe vuote (“”) come mostrato negli esempi seguenti.

Importante

È necessario specificare la regione in cui si esegue il test.

  • iOS: da utilizzare AWSStaticCredentialsProvider per la registrazione ad Amazon Connect Service e Participant Service.

    private let config = Config() let credentials = AWSStaticCredentialsProvider(accessKey: "", secretKey: "") let participantService = AWSServiceConfiguration(region: config.region, credentialsProvider: credentials)! AWSConnectParticipant.register(with: participantService, forKey: "") connectParticipantClient = AWSConnectParticipant.init(forKey: "")
  • Android: inizializza AmazonConnectParticipantAsyncClient e imposta la regione.

    private var connectParticipantClient: AmazonConnectParticipantAsyncClient = AmazonConnectParticipantAsyncClient() private val chatConfiguration = Config init { connectParticipantClient.setRegion(Region.getRegion(chatConfiguration.region)) }
Nota

È possibile scaricare i file Config da. GitHub È necessario modificare entrambi i file Config.

Avvia una chat

Successivamente, devi integrare l'StartChatContactAPI fornita da Amazon Connect. L'API avvia la conversazione registrando l'intenzione del cliente di chattare con un agente.

Nota

Per distribuire una funzione StartChatContact Lambda, usa CloudFront il modello su. GitHub

Per iOS e Android, la chiamata StartChatContact API richiede diverse informazioni:

  • InstanceId: l'identificatore dell'istanza Amazon Connect.

  • ContactFlowId: L'identificatore del flusso di contatti per gestire la chat.

  • ParticipantDetails: Informazioni sul partecipante, ad esempio il nome visualizzato del cliente.

  • Attributes: informazioni aggiuntive sul contatto che possono essere utili per instradare o gestire la chat all'interno di Amazon Connect.

Importante

È necessario utilizzare AWS Signature Version 4 (SigV4) per firmare la chiamata API. Il processo SigV4 aggiunge informazioni di autenticazione alle richieste AWS API inviate tramite HTTP. Per i client mobili, consigliamo di eseguire la procedura di firma sul lato server. La tua app mobile invia una richiesta al tuo server, che quindi firma la richiesta e la inoltra ad Amazon Connect. Questo aiuta a proteggere le tue AWS credenziali.

Per iOS:

func startChatSession(displayName: String, completion: @escaping (Result<StartChatResponse, Error>) -> Void) { // Your back end server will handle SigV4 signing and make the API call to Amazon Connect // Use the completion handler to process the response or error }

Per Android:

// Make a network call to your back end server suspend fun startChatSession(displayName: String): StartChatResponse { // Your back end server will handle SigV4 signing if needed and make the // API call to Amazon Connect // Handle the response or error accordingly }

Creare una connessione tra i partecipanti

I dettagli ricevuti da una chiamata StartChatContactAPI vengono utilizzati per creare una connessione tra i partecipanti. Quindi chiami l'SDK dei partecipanti a AWS Connect, che restituisce l' WebSocket URL necessario per stabilire la connessione.

L'esempio seguente mostra come stabilire una connessione per iOS:

// Swift code snippet for iOS participant connection setup /// Creates the participant's connection. https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html /// - Parameter: participantToken: The ParticipantToken as obtained from StartChatContact API response. func createParticipantConnection() { let createParticipantConnectionRequest = AWSConnectParticipantCreateParticipantConnectionRequest() createParticipantConnectionRequest?.participantToken = self.participantToken createParticipantConnectionRequest?.types = ["WEBSOCKET", "CONNECTION_CREDENTIALS"] connectParticipantClient? .createParticipantConnection (createParticipantConnectionRequest!) .continueWith(block: { (task) -> Any? in self.connectionToken = task.result!.connectionCredentials!.connectionToken self.websocketUrl = task.result!.websocket!.url return nil } ).waitUntilFinished() }

L'esempio seguente mostra come stabilire una connessione per Android:

// Kotlin code snippet for Android participant connection setup /// Creates the participant's connection. https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html /// - Parameter: participantToken: The ParticipantToken as obtained from StartChatContact API response. fun createParticipantConnection( _participantToken: String, handler: AsyncHandler<CreateParticipantConnectionRequest, CreateParticipantConnectionResult> ) { val createParticipantConnectionRequest = CreateParticipantConnectionRequest().apply { setType(listOf("WEBSOCKET", "CONNECTION_CREDENTIALS")) participantToken = _participantToken } connectParticipantClient.createParticipantConnectionAsync( createParticipantConnectionRequest, handler ) }

Usa WebSocket le connessioni

Utilizza Participant SDK per ottenere un WebSocket URL per la connessione alla chat.

  • Per implementare WebSocket la gestione, utilizzate soluzioni esistenti o implementate le vostre.

  • Per gestire messaggi ed eventi Websocket, implementa la tua soluzione o utilizza le nostre soluzioni per iOS e Android.

  • Assicurati di coprire tutti i tipi di messaggi ed eventi:

    • caso typing = "application/vnd.amazonaws.connect.event.typing"

    • caso messageDelivered = "application/vnd.amazonaws.connect.event.message.delivered"

    • caso messageRead = "application/vnd.amazonaws.connect.event.message.read"

    • caso metaData = "application/vnd.amazonaws.connect.event.message.metadata"

    • caso joined = "application/vnd.amazonaws.connect.event.participant.joined"

    • caso left = "application/vnd.amazonaws.connect.event.participant.left"

    • caso ended = "application/vnd.amazonaws.connect.event.chat.ended"

    • caso plainText = "text/plain"

    • caso richText = "text/markdown"

    • caso interactiveText = "application/vnd.amazonaws.connect.message.interactive"

L'immagine seguente mostra un'istanza predefinita della chat Connect. I numeri nell'immagine corrispondono al testo numerato riportato di seguito.

Immagine che mostra i componenti di una finestra di chat di Amazon Connect.

Nell'immagine, a partire dall'alto:

  1. L'indicatore di digitazione mostra chi sta digitando un messaggio.

  2. Questo esempio utilizza messaggi di testo semplice. Se lo desideri, puoi abilitare l'uso di markdown.

  3. Il controllo interattivo dell'elenco fornisce agli utenti elenchi di scelte, come il servizio clienti o la fatturazione.

  4. Le risposte rapide interattive forniscono risposte preprogrammate a domande o frasi comuni.

Inviare messaggi

Si utilizza la SendMessage funzione per inviare messaggi di chat.

/// To send a message using the Participant SDK. /// - Parameters: /// - messageContent: The content of the message. /// - connectionToken: The authentication token associated with the connection - Received from Participant Connection /// - contentType: text/plain, text/markdown, application/json, and application/vnd.amazonaws.connect.message.interactive.response func sendChatMessage(messageContent: String) { let sendMessageRequest = AWSConnectParticipantSendMessageRequest() sendMessageRequest?.connectionToken = self.connectionToken sendMessageRequest?.content = messageContent sendMessageRequest?.contentType = "text/plain" connectParticipantClient? .sendMessage(sendMessageRequest!) .continueWith(block: { (task) -> Any? in return nil }) }

Gestisci gli eventi

Utilizzate la SendEvent funzione del Participant SDK per eventi come la digitazione e la lettura delle ricevute.

/// Sends an event such as typing, joined, left etc. /// - Parameters: /// - contentType: The content type of the request /// - content: The content of the event to be sent (for example, message text). For content related to message receipts, this is supported in the form of a JSON string. func sendEvent(contentType: ContentType, content: String = "") { let sendEventRequest = AWSConnectParticipantSendEventRequest() sendEventRequest?.connectionToken = self.connectionToken sendEventRequest?.contentType = contentType.rawValue sendEventRequest?.content = content // Set the content here connectParticipantClient? .sendEvent(sendEventRequest!) .continueWith(block: { (task) -> Any? in return nil }) }

Termina una chat

Per terminare una chat, usa la disconnectParticipant funzione nel Participant SDK.

/// Disconnects a participant. /// - Parameter: connectionToken: The authentication token associated with the connection - Received from Participant Connection func endChat() { let disconnectParticipantRequest = AWSConnectParticipantDisconnectParticipantRequest() disconnectParticipantRequest?.connectionToken = self.connectionToken connectParticipantClient?.disconnectParticipant(disconnectParticipantRequest!) .continueWith(block: { (task) -> Any? in return nil }).waitUntilFinished() self.websocketUrl = nil }

Codice sorgente

I seguenti progetti di esempio GitHub mostrano come implementare la chat Connect.