IBM Cloud Docs
Integrazione con telefono e Twilio Flex

Integrazione con telefono e Twilio Flex

IBM Cloud

Puoi usare l'integrazione telefonica per aiutare i clienti al telefono e trasferirli agli agenti live all'interno di Twilio Flex. Se, nel corso di una conversazione con il vostro assistente, un cliente chiede di parlare con una persona, potete trasferire la conversazione direttamente a un agente Twilio Flex.

Prima di iniziare

Per utilizzare questo modello di integrazione, è necessario:

  • watsonx Assistant Plus o piano Enterprise (richiesto per l'integrazione telefonica)
  • Un account Twilio con i seguenti prodotti:
    • Twilio Flex
    • Twilio Voice con API voce programmabile
    • Twilio Studio

Aggiunta dell'integrazione telefonica watsonx Assistant

Puoi saltare questa sezione se hai già aggiunto l'integrazione telefonica al tuo assistente.

Se hai bisogno di aggiungere l'integrazione telefonica, segui questi passaggi.

  1. Nella sezione Integrations nella pagina principale del tuo assistente in Essential Channels, vedrai un tile per Phone.

  2. Nel riquadro Telefono, fare clic su Aggiungi.

  3. Nella finestra a comparsa, fare nuovamente clic su Aggiungi.

  4. Selezionare Utilizza un numero telefonico esistente con un fornitore esterno.

  5. Completare il processo di impostazione dell'integrazione telefonica. (Per ulteriori informazioni, vedere Integrazione con il telefono )

Per ora, questo è tutto quello che devi fare. Per ulteriori informazioni sulla configurazione dell'integrazione telefonica, vedi Integrazione con il telefono.

Aggiunta del progetto Twilio Flex

È richiesto un progetto Twilio Flex nuovo o esistente.

Se hai bisogno di un progetto Twilio Flex, puoi crearne uno utilizzando questi passi.

  1. Dal menu a discesa del progetto, fare clic su Crea nuovo progetto. Specificare un nome per il progetto e verificare le informazioni sull'account.

  2. Nella pagina di benvenuto, seleziona Flex come prodotto Twilio per il nuovo progetto. Completa il questionario e fai quindi clic su Introduzione a Twilio.

    Dopo aver eseguito il provisioning del tuo progetto Flex, torna alla console Twilio. Assicurarsi di aver selezionato il progetto corretto dall'elenco a discesa.

  3. Nel menu di navigazione, fare clic sull'icona Tutti i prodotti & servizi.

  4. Fai clic su Twilio Programmable Voice> Settings> General.

  5. In Enhanced Programmable SIP Features, attivare / disattivare lo switch su Enabled.

Creazione del flusso di chiamate

Dopo aver configurato l'integrazione del telefono e il progetto Twilio Flex, devi creare un flusso di chiamate con Twilio Studio e eseguire il provisioning (o la porta) del numero di telefono con cui vuoi che lavori il tuo assistente.

Per creare il flusso di chiamate:

  1. Nel menu di navigazione, fare clic sull'icona Tutti i prodotti & servizi.

  2. Fare clic su Studio.

  3. Fare clic su + per creare un nuovo flusso.

  4. Denominare il nuovo flusso e fare clic su Avanti.

  5. Selezionare Avvia da zero, quindi fare clic su Avanti. Nell'area di disegno del flusso viene visualizzato un widget Trigger.

  6. Fare clic sul widget Trigger.

  7. Prendere nota del valore del campo URL WEBHOOK. Questo valore è necessario in una fase successiva.

Configurazione del numero di telefono

  1. Nel menu di navigazione, fare clic sull'icona Tutti i prodotti & servizi.

  2. Fare clic su Numeri di telefono.

  3. In Gestisci numeri, configurare il numero di telefono che il tuo assistente deve utilizzare. Selezionare Acquista un numero per acquistare un nuovo numero oppure Porta & Host per portare un numero di telefono esistente.

  4. Nell'elenco Numeri attivi, fare clic sul nuovo numero di telefono.

  5. In Voce e fax, configurare queste impostazioni.

    • Per il campo CONFIGURE WITH, selezionare Webhook, TwiML Bins, Functions, Studio o Proxy.

    • Per A CALL COMES IN, selezionare Studio Flow. Selezionare il flusso dall'elenco a discesa.

    • Per PRIMARY HANDLER FAILOVER, selezionare Studio Flow. Selezionare il flusso dall'elenco a discesa.

  6. Vai all'interfaccia utente watsonx Assistant e apri le impostazioni di integrazione del telefono per il tuo assistente.

  7. Nel campo Numero di telefono, immettere il numero di telefono configurato in Flex Studio.

  8. Fare clic su Salva e uscire.

Verifica il tuo numero di telefono

Puoi ora verificare che il tuo numero di telefono sia connesso al tuo flusso attivando un widget Say / Play nell'editor Twilio Flex Flow.

  1. Trascinare un widget Say / Play nell'area di disegno del flusso.

  2. Configurare il widget Say / Play con una frase semplice come I'm alive..

  3. Connettere il nodo Chiamata in entrata nel widget Trigger al widget Say / Play.

  4. Chiama il tuo numero di telefono. Dovresti sentire Twilio flow rispondere con la tua frase di test.

  5. Eliminare il widget Say / Play e continuare con il passo successivo.

  6. Se questo test non ha funzionato come previsto, ricontrolla la configurazione del tuo numero di telefono per assicurarti che sia collegato al tuo flusso.

Creazione di una funzione Twilio per gestire le chiamate in arrivo

Ora devi configurare il flusso di chiamata per indirizzare le chiamate in entrata all'assistente utilizzando una funzione Twilio. Attieniti alla seguente procedura:

  1. Nel menu di navigazione, fare clic sull'icona Tutti i prodotti & servizi.

  2. Fare clic su Servizi.

  3. Fai clic su Create service. Specificare il nome del servizio e fare clic su Avanti.

  4. Fare clic su Aggiungi > Aggiungi funzione per aggiungere una nuova funzione al proprio servizio. Denominare la nuova funzione /receive-call.

  5. Sostituire il modello nella funzione /receive-call con questo codice:

    exports.handler = function(context, event, callback) {
      const VoiceResponse = require('twilio').twiml.VoiceResponse;  
      const response = new VoiceResponse();
      const dial = response.dial({
        answerOnBridge: "true",
        referUrl: "/refer-handler"
      });
      const calledPhoneNumber = event.Called;
      dial.sip(`sip:${calledPhoneNumber}@{sip_uri_hostname};secure=true`);  
      return callback(null, response);
    }
    
    • Sostituisci {sip_uri_hostname} con la parte del nome host dell'URI SIP di integrazione telefonica del tuo assistente (tutto ciò che viene dopo sips:). Nota: Twilio non supporta gli URI SIPS, ma supporta il trunking SIP sicuro aggiungendo ;secure=true all'URI SIP.
  6. Fare clic su Salva.

  7. Fare clic su Distribuisci tutto.

Reindirizzamento al gestore chiamate in arrivo

Utilizzare un widget TwiML Redirect nell'editor Flusso di Studio per richiamare la funzione /receive-call creata nella sezione precedente.

  1. Aggiungere un widget TwiML Redirect all'area di disegno del flusso di studio.

  2. Connettere il trigger Chiamata in entrata al widget TwiML Redirect.

  3. Configurare il widget TwiML Redirect con l' URL della funzione /receive-call creata nella sezione precedente.

  4. Il tuo flusso dovrebbe ora reindirizzare a watsonx Assistant quando ricevi una chiamata in entrata.

  5. Se il reindirizzamento non riesce, assicurati di aver distribuito la tua funzione /receive-call.

Creazione di una funzione Twilio per gestire i trasferimenti dall'assistente

Devi anche configurare il flusso di chiamate per gestire le chiamate trasferite dall'assistente a Twilio Flex, per i casi in cui i clienti chiedono di parlare con un agent. Utilizza un widget Say / Play dopo il widget TwiML Redirect per mostrare che la chiamata viene trasferita nuovamente al flusso da watsonx Assistant. Molte opzioni sono possibili a questo punto, come l'accodamento della chiamata per un agente attivo, e sono discusse in questa sezione.

  1. Aggiungere un widget Say / Play all'area di disegno e configurarlo con una frase come, Transfer from Watson complete.

  2. Connettere il nodo Restituzione nel widget TwiML Redirect al widget Say / Play.

  3. Fare clic sul widget Trigger.

  4. Copiare il valore dal campo URL WEBHOOK. Questo valore è necessario in una fase successiva.

  5. Nella pagina Twilio Functions, fai clic su Add > Add Function per aggiungere un'altra funzione al tuo servizio. Denominare questa nuova funzione /refer-handler.

  6. Sostituire il modello nella funzione /refer-handler con il codice seguente:

    exports.handler = function(context, event, callback) {
      // This function handler will handle the SIP REFER back from the Phone Integration.
      // Before handing the call back to Twilio, it will extract the session history key from the
      // User-to-User header that's part of the SIP REFER Refer-To header. This session history key
      // is a string that is used to load the agent application in order to share the transcripts of the caller
      // with the agent.
      // See https://github.com/watson-developer-cloud/assistant-web-chat-service-desk-starter/blob/main/docs/AGENT_APP.md
      const VoiceResponse = require('twilio').twiml.VoiceResponse;
    
      const STUDIO_WEBHOOK_URL = '{webhook_url}';
    
      let studioWebhookReturnUrl = `${STUDIO_WEBHOOK_URL}?FlowEvent=return`;
    
      const response = new VoiceResponse();
      console.log("ReferTransferTarget: " + event.ReferTransferTarget);
    
      const referToSipUriHeaders = event.ReferTransferTarget.split("?")[1];
      console.log(referToSipUriHeaders);
      if (referToSipUriHeaders) {
        const sanitizedReferToSipUriHeaders = referToSipUriHeaders.replace(">", "");
        console.log("Custom Headers: " + sanitizedReferToSipUriHeaders);
    
        const sipHeadersList = sanitizedReferToSipUriHeaders.split("&");
    
        const sipHeaders = {};
        for (const sipHeaderSet of sipHeadersList) {
          const [name, value] = sipHeaderSet.split('=');
          sipHeaders[name] = value;
        }
    
        const USER_TO_USER_HEADER = 'User-to-User';
    
        // Extracts the User-to-User header value
        const uuiData = sipHeaders[USER_TO_USER_HEADER];
    
        if (uuiData) {
          const decodedUUIData = decodeURIComponent(uuiData);
          const sessionHistoryKey = decodedUUIData.split(';')[0];
          // Passes the session history key back to Twilio Studio through a query parameter.
          studioWebhookReturnUrl = `${studioWebhookReturnUrl}&SessionHistoryKey=${sessionHistoryKey}`;
        }    
      }
    
      response.redirect(
        { method: 'POST' },
        studioWebhookReturnUrl
      );
    
      // This callback is what is returned in response to this function being invoked.
      // It's really important! E.g. you might respond with TWiML here for a voice or SMS response.
      // Or you might return JSON data to a studio flow. Don't forget it!
      return callback(null, response);
    }
    

    Sostituire {webhook_url} con il valore dell'URL WEBHOOK copiato dal widget Trigger in Studio Flow.

  7. Fare clic su Salva.

  8. Fare clic su Distribuisci tutto.

  9. Dopo aver creato questo gestore di riferimenti, copiare l' URL della funzione nel campo referUrl del gestore /receive-call.

Configurazione dell'assistente per trasferire chiamate a Twilio Flex

Ora dobbiamo configurarlo per trasferire le chiamate a Twilio Flex quando un cliente chiede di parlare con un agent. Attieniti alla seguente procedura:

  1. Nell'interfaccia utente watsonx Assistant, apri la capacità di dialogo del tuo assistente.

  2. Aggiungi un nodo con la condizione che attiva il tuo assistente per trasferire clienti a un agente.

  3. Aggiungi una risposta di testo al nodo e specifica il testo che vuoi che il tuo assistente dica prima che trasferisca i clienti a un agente.

  4. Aprire l'editor JSON per la risposta.

  5. Nell'editor JSON, aggiungi una risposta connect_to_agent, specificando il tuo numero di telefono come sip.uri (sostituisci {phone_number} col numero di telefono del tuo trunk SIP):

{
  "generic": [
    {
        "response_type": "connect_to_agent",
        "transfer_info": {
          "target": {
            "service_desk": {
              "sip": {
                "uri": "sip:+{phone_number}@flex.twilio.com",
                "transfer_headers_send_method": "refer_to_header"
              }
            }
          }
        },
        "agent_available": {
          "message": "Ok, I'm transferring you to an agent"
        },
        "agent_unavailable": {
          "message": ""
        }
    }
  ]
}

Questo esempio non mostra come utilizzare il contesto passato da watsonx Assistant a Twilio Flex. Puoi fare riferimento alle informazioni da utente a utente dall'interno del flusso Twilio Flex:

{
  "context": {
    "widgets": {
      "redirect_1": {
        "User-to-User": "value",
      }
    }
  }
}

dove redirect_1 è il nome del widget di reindirizzamento. Ad esempio, se imposti più code, potresti voler utilizzare un widget Twilio Split per scegliere una coda in base al contesto restituito.

Verifica il tuo assistente

Il tuo assistente dovrebbe ora essere in grado di rispondere alle chiamate al tuo numero di telefono e trasferire le chiamate al tuo flusso Twilio Flex. Per verificare il tuo assistente:

  1. Chiama il tuo numero di telefono. Quando l'assistente risponde, chiedi un agent.

  2. Si dovrebbe sentire la frase configurata nel widget Say/Play (ad esempio, Transfer from Watson complete ).

  3. Se il trasferimento non riesce, utilizza il log della console per seguire il flusso della chiamata mentre passa dal flusso al gestore /receive-call, a watsonx Assistant, al gestore dei riferimenti e quindi di nuovo al tuo flusso Twilio Flex.

Condividere la cronologia delle conversazioni con gli agenti del service desk

Per abilitare gli agent di service desk per ottenere una vista rapida della cronologia delle conversazioni tra visitatore e assistente, configura l'applicazione dell'applicazione agent watsonx Assistant per il tuo ambiente Twilio Flex. Per ulteriori informazioni, consulta la documentazione in Twilio Flex watsonx Assistant Agent App.