Questa guida illustra la procedura per creare e configurare un nuovo numero di telefono della piattaforma di telefonia Google (GTP) per l'applicazione dell'agente. Questa funzionalità predefinita ti consente di collegare un nuovo numero di telefono al tuo agente in grado di gestire il traffico in entrata in pochi minuti.
Se vuoi utilizzare un numero di telefono preesistente, puoi configurare il sistema SBC (Session Border Control) in modo che reindirizzi automaticamente il numero esistente al nuovo numero GTP. Per istruzioni dettagliate sull'integrazione e la configurazione di SBC, consulta la documentazione sulla telefonia di Dialogflow CX.
Prima di iniziare
- Segui i passaggi nella pagina di configurazione e pulizia per creare o configurare il progetto che vuoi utilizzare per il deployment.
- Crea e configura un'applicazione dell'agente da utilizzare nel deployment.
- Abilita l'API Dialogflow nel progetto.
Limitazioni
Si applicano le seguenti limitazioni:
- I numeri di telefono PSTN (Public Switched Telephone Network) standard sono supportati per la multi-regione
us. Per la multi-regioneeu, puoi utilizzare i numeri di telefono virtuali. - Nella multi-regione
ussono supportati solo i numeri di telefono statunitensi. - I numeri di telefono virtuali non possono essere chiamati da telefoni PSTN standard.
Collegare un'applicazione dell'agente a un numero di telefono GTP
- Apri la console CX Agent Studio e seleziona l'applicazione dell'agente.
- Nella parte superiore della console, fai clic sulla scheda Esegui il deployment , seguita da Connetti a una piattaforma. Se hai già eseguito il deployment dei canali, fai clic su + Nuovo canale.
- Inserisci un nome per il canale e seleziona Piattaforma di telefonia Google (GTP) dal menu Piattaforma.
- L'opzione predefinita è il provisioning di un numero di telefono virtuale per testare l'applicazione dell'agente nel browser. Per eseguire il provisioning di un numero di telefono PSTN (Public Switched Telephone Network) standard, seleziona questa opzione dal menu a discesa
Connection type(Tipo di connessione). - Seleziona una versione per il deployment. Se non hai versioni preesistenti, creane una nuova.
- (Facoltativo) Fai clic sul pulsante Comportamento specifico del canale per configurare altre opzioni. Puoi modificare la lunghezza della risposta dell'agente, attivare l'input DTMF e consentire agli utenti di interrompere l'agente a metà della risposta. Per ulteriori informazioni su queste impostazioni, consulta la documentazione sulle impostazioni dell'applicazione dell'agente.
- Fai clic su Crea canale. Ora puoi visualizzare il numero di telefono e l'ID di deployment del canale.
Se hai eseguito il provisioning di un numero di telefono PSTN, chiamalo per verificare che si connetta all'applicazione dell'agente, quindi fai clic su Fine. Il nuovo canale viene visualizzato nella pagina Deployed channels (Canali di cui è stato eseguito il deployment) dell'applicazione dell'agente. Ora puoi utilizzare questo numero per consentire ai clienti di chiamare il tuo agente. Se hai eseguito il provisioning di un numero di telefono virtuale, puoi testarlo nel widget WebRTC.
Testare l'applicazione dell'agente nel widget WebRTC
Indipendentemente dal fatto che tu abbia eseguito il provisioning di un numero di telefono PSTN standard o virtuale, puoi testare l'applicazione dell'agente nel widget WebRTC utilizzando audio, video o testo.
- Nella parte superiore della console, fai clic sulla scheda Esegui il deployment.
- Fai clic sull'icona accanto al nome del canale di cui è stato eseguito il deployment. Si aprirà un widget WebRTC sulla destra.
- Se richiesto dal widget WebRTC, concedi al browser l'autorizzazione ad accedere al microfono e alla videocamera.
- Interagisci con l'agente tramite audio, video o testo. Quando utilizzi il video, puoi anche passare alla condivisione dello schermo utilizzando il menu a discesa accanto all'icona della videocamera.
Configurare il comportamento dell'applicazione dell'agente
Puoi personalizzare il comportamento dell'agente in merito alla chiusura e al trasferimento delle chiamate.
Configurare la terminazione della chiamata dell'agente
Per consentire all'agente di terminare una chiamata:
- Fai clic sul simbolo più in alto a destra dell'agente e fai clic su Aggiungi strumenti.
- Aggiungi lo strumento
end_sessionall'agente (e a tutti i sotto-agenti, se presenti). Questo strumento di sistema è disponibile automaticamente per ogni agente per impostazione predefinita. - Aggiungi una descrizione del comportamento di terminazione della chiamata alle istruzioni.
Ad esempio:
End the call by executing the end_session tool with arguments reason="customer_query_ended".
Trasferire una chiamata a un agente umano
Per configurare l'agente in modo che trasferisca la chiamata a un agente umano e termini la parte della chiamata dell'agente virtuale:
- Aggiungi lo strumento di sistema
end_sessionall'agente (e a tutti i sotto-agenti, se presenti). - Crea le seguenti variabili:
ESCALATION_MESSAGE: (facoltativo) aggiungi testo al campo Valore predefinito se vuoi che l'agente dica un messaggio prima di trasferire la chiamata.telephonyTransferCall: imposta il tipo su Schema personalizzato. Inserisci il seguente oggetto JSON nella casella di immissione Schema con il numero di telefono a cui vuoi che l'agente trasferisca le chiamate (è richiesto il formato E.164).
{
"phoneNumber": "+PHONE_NUMBER"
}- Aggiungi una descrizione di questo comportamento alle istruzioni. Ad esempio:
Escalate the call to a human agent by executing the end_session tool with session_escalated=true
Trasferimento di agenti umani supportato dai partner
Se il tuo sistema include un partner non Google
sono disponibili due opzioni per il trasferimento di agenti umani: una variabile liveAgentHandoff
o una variabile TELEPHONY_PAYLOAD. In entrambi i casi, il payload JSON potrebbe variare a seconda delle istruzioni del partner.
Trasferimento di agenti umani con handoff di operatori:
- Aggiungi lo strumento di sistema
end_sessionall'agente (e a tutti i sotto-agenti, se presenti). - Crea la seguente variabile:
liveAgentHandoff: imposta il tipo su Schema personalizzato e aggiungi lo schema JSON richiesto dal partner, ad esempio:
{ "PARTNER_NAME": { "type": "action", "action": "deflection", "deflection_type": "sip", "sip_uri": "SIP_URI", "sip_refer": true, "sip_parameters": { "x-header": "value" } } }
- Aggiungi una descrizione di questo comportamento alle istruzioni. Ad esempio:
Escalate the call to a human agent by executing the end_session tool with session_escalated=true
Trasferimento di agenti umani con payload personalizzato:
- Aggiungi lo strumento di sistema
end_sessionall'agente (e a tutti i sotto-agenti, se presenti). - Crea la seguente variabile:
TELEPHONY_PAYLOAD: imposta il tipo su Schema personalizzato e aggiungi lo schema JSON richiesto dal partner, ad esempio:
{ "PARTNER_NAME": { "type": "action", "action": "deflection", "deflection_type": "sip", "sip_uri": "SIP_URI", "sip_refer": true, "sip_parameters": { "x-header": "value" } } }
- Aggiungi una descrizione di questo comportamento alle istruzioni. Ad esempio:
Escalate the call to a human agent by executing the end_session tool with session_escalated=true
Utilizzare la segnalazione SIP per passare i dati all'agente e dall'agente
Se hai eseguito un'integrazione SBC, puoi utilizzare la segnalazione SIP per passare i dati all'agente utilizzando le intestazioni SIP. Puoi anche passare i dati quando l'agente attiva un BYE, un REFER o un INVITE.
Tutti i dati passati all'agente sono accessibili tramite le variabili. Devi prima creare le variabili per accedere ai dati.
Il numero di telefono del chiamante (ANI) è memorizzato nella variabile telephony-caller-id di tipo Text.
Se l'agente deve dire un messaggio prima di eseguire un'escalation, il messaggio deve essere memorizzato nella variabile ESCALATION_MESSAGE di tipo Text.
Per eseguire un SIP REFER o un SIP INVITE, deve esistere la variabile telephonyTransferCall di tipo Custom schema (advanced) con le variabili phoneNumber e useOriginatingTrunk specificate.
Tutti i dati da passare devono essere presenti nella variabile liveAgentHandoff di tipo Custom schema (advanced).
Intestazione SIP UUI
Puoi inserire un elenco di coppie chiave-valore separate da punti e virgola con codifica esadecimale, seguito da ;encoding=hex;purpose=Goog-Session-Param. Per accedervi all'interno dell'agente, crea una variabile con il nome uui-headers e il tipo List.
Ad esempio, se è necessario inserire la stringa key1=value1;key2=value2, deve essere inviata la seguente intestazione UUI, in cui il payload è il valore con codifica esadecimale key1=value1;key2=value2.
User-to-User: 6B6579313D76616C7565313B6B6579323D76616C756532;encoding=hex;purpose=Goog-Session-Param
La variabile uui-headers conterrà il seguente oggetto:
"uui-headers": ["key1=value1;key2=value2"]
Per passare uuiHeaders quando chiami lo strumento end_session, specifica params={"liveAgentHandoff": {"uuiHeaders": [ {uui-headers}[0] ]}}
Ad esempio, se le intestazioni UUI passate dovevano essere passate a un SIP BYE, avresti un'istruzione simile alla seguente:
If the user says that they would like to speak to an agent, escalate the call to the agent by executing the end_session tool with session_escalated=true and params={"ESCALATION_MESSAGE": "I am transferring you to an agent", "liveAgentHandoff":{"uuiHeaders": [ {uui-headers}[0] ]}}.
Intestazioni SIP x
Le intestazioni SIP che iniziano con x- possono essere passate all'agente e salvate come variabile x-headers e tipo Custom schema (advanced). Il prefisso x- viene rimosso dal nome dell'intestazione nella variabile.
Ad esempio, se il SIP INVITE contiene la seguente intestazione:
x-billing-id: 12345
La variabile x-headers conterrà il seguente oggetto:
{
"x-headers": {
"billing-id": "12345"
}
}
Per passare xHeaders, quando chiami lo strumento end_session, specifica params={"liveAgentHandoff": {"xHeaders": {x-headers} }}
Ad esempio, se le intestazioni x passate dovevano essere passate a un SIP BYE, avresti un'istruzione simile alla seguente:
If the user says that they would like to speak to an agent, escalate the call to the agent by executing the end_session tool with session_escalated=true and params={"ESCALATION_MESSAGE": "I am transferring you to an agent", "liveAgentHandoff":{"xHeaders": {x-headers} }}.
Inviare un SIP BYE
Quando l'agente termina la chiamata, viene inviato un SIP BYE. Per inviare uuiHeaders e xHeaders nel SIP BYE, utilizza un'istruzione simile all'esempio seguente:
If the user says that they would like to speak to an agent, escalate the call to the agent by executing the end_session tool with session_escalated=true and params={"ESCALATION_MESSAGE": "I am transferring you to an agent", "liveAgentHandoff":{"xHeaders": {x-headers}, "uuiHeaders": [{uui-headers[0]}] }}.
Inviare un SIP REFER
Se l'agente deve eseguire l'escalation della chiamata a un agente umano e abbandonare la chiamata, deve essere utilizzato un SIP REFER. Un SIP REFER viene attivato specificando "sipRefer": true nella variabile liveAgentHandoff e il numero refer-to deve essere fornito nella variabile telephonyTransferCall. Un'istruzione di esempio per eseguire un SIP REFER e passare uuiHeaders e xHeaders:
If the user says that they would like to speak to an agent, escalate the call to the agent by executing the end_session tool with session_escalated=true and params={"ESCALATION_MESSAGE": "I am transferring you to an agent", "telephonyTransferCall": {"phoneNumber": "+19496855555", "useOriginatingTrunk": true}, "liveAgentHandoff":{"sipRefer": true, "xHeaders": {x-headers}, "uuiHeaders": [{uui-headers[0]}] }}.
Inviare un SIP INVITE
Se l'agente deve eseguire l'escalation della chiamata a un agente umano e rimanere in chiamata in modo che sia possibile utilizzare le funzionalità di Agent Assist, deve essere utilizzato un SIP INVITE. Un SIP INVITE viene attivato da phoneNumber nella variabile telephonyTransferCall. Un'istruzione di esempio per eseguire un SIP INVITE e passare uuiHeaders e xHeaders:
If the user says that they would like to speak to an agent, escalate the call to the agent by executing the end_session tool with session_escalated=true and params={"ESCALATION_MESSAGE": "I am transferring you to an agent", "telephonyTransferCall": {"phoneNumber": "+19496855555", "useOriginatingTrunk": true}, "liveAgentHandoff":{"xHeaders": {x-headers}, "uuiHeaders": [{uui-headers[0]}] }}.
Creare un gestore per le disconnessioni delle chiamate da remoto
Quando un cliente riaggancia la chiamata, viene attivato un evento specifico, sys.remote-call-disconnected, che può essere utilizzato per attivare una chiamata allo strumento all'interno di CX Agent Studio. Nell'esempio seguente, lo strumento sum viene chiamato quando il cliente riaggancia la chiamata.
Lo strumento sum è definito come strumento di codice Python e contiene il codice:
def sum(x: int, y: int) -> int:
"""
Computes the sum of two numbers.
Args:
x: The first number.
y: The second number.
Returns:
The sum of the two numbers.
"""
return x+y
Nell'agente principale, crea un callback Before LLM con la logica per monitorare l'evento di disconnessione della chiamata. In LlmResponse, effettua la chiamata allo strumento sum, quindi chiama lo strumento end_session.
def before_model_callback(callback_context: CallbackContext, llm_request: LlmRequest) -> Optional[LlmResponse]:
for part in callback_context.get_last_user_input():
if part.text == "<event>sys.remote-call-disconnected</event>":
return LlmResponse.from_parts(
[Part.from_function_call('sum', {'x': 1, 'y': 2}),
Part.from_end_session(reason='sum tool called after caller disconnected')]
)
return None