In dieser Anleitung erfahren Sie, wie Sie eine neue Telefonnummer der Google Telephony Platform (GTP) für Ihre Agent-Anwendung erstellen und konfigurieren. Mit dieser sofort einsatzbereiten Funktion können Sie Ihrem Agent in nur wenigen Minuten eine neue Telefonnummer zuweisen, die eingehenden Traffic verarbeiten kann.
Wenn Sie eine bereits vorhandene Telefonnummer verwenden möchten, können Sie Ihr Session Border Control-System (SBC) so konfigurieren, dass die vorhandene Nummer automatisch an die neue GTP-Nummer weitergeleitet wird. Eine detaillierte Anleitung zur SBC-Integration und -Einrichtung finden Sie in der Dialogflow CX Telefondokumentation.
Hinweis
- Folgen Sie der Anleitung auf der Seite zur Einrichtung und Bereinigung , um das Projekt zu erstellen oder zu konfigurieren, das Sie für die Bereitstellung verwenden möchten.
- Erstellen und konfigurieren Sie eine Agent-Anwendung, die Sie in der Bereitstellung verwenden möchten.
- Aktivieren Sie die Dialogflow API im Projekt.
Beschränkungen
Es gelten folgende Einschränkungen:
- Standardmäßige PSTN-Telefonnummern (Public Switched Telephone Network) werden für die Multiregion
usunterstützt. Für die Multiregioneukönnen Sie virtuelle Telefonnummern verwenden. - In der Multiregion
uswerden nur US-amerikanische Telefonnummern unterstützt. - Virtuelle Telefonnummern können nicht von Standard-PSTN-Telefonen aus angerufen werden.
Agent-Anwendung mit einer GTP-Telefonnummer verbinden
- Öffnen Sie die CX Agent Studio-Konsole und wählen Sie Ihre Agent-Anwendung aus.
- Klicken Sie oben in der Konsole auf den Tab Bereitstellen und dann auf Mit einer Plattform verbinden. Wenn Sie bereits Channels bereitgestellt haben, klicken Sie auf + Neuer Channel.
- Geben Sie einen Namen für den Channel ein und wählen Sie im Menü Plattform die Option Google Telephony Platform (GTP) aus.
- Standardmäßig wird eine virtuelle Telefonnummer für das Testen Ihrer Agent-Anwendung im Browser bereitgestellt. Wenn Sie eine Standard-PSTN-Telefonnummer (Public Switched Telephone Network) bereitstellen möchten, wählen Sie diese Option im Drop-down-Menü
Connection typeaus. - Wählen Sie eine Version für die Bereitstellung aus. Wenn Sie noch keine Versionen haben, erstellen Sie eine neue.
- (Optional) Klicken Sie auf die Schaltfläche Channel-spezifisches Verhalten, um zusätzliche Optionen zu konfigurieren. Sie können die Länge der Agent-Antwort ändern, die DTMF-Eingabe aktivieren und Nutzern erlauben, die Antwort des Agent zu unterbrechen. Weitere Informationen zu diesen Einstellungen finden Sie in der Dokumentation zu den Einstellungen der Agent-Anwendung.
- Klicken Sie auf Channel erstellen. Jetzt werden die Telefonnummer und die Bereitstellungs-ID für den Channel angezeigt.
Wenn Sie eine PSTN-Telefonnummer bereitgestellt haben, rufen Sie sie an, um zu testen, ob sie mit Ihrer Agent-Anwendung verbunden ist. Klicken Sie dann auf Fertig. Der neue Channel wird auf der Seite Bereitgestellte Channels der Agent-Anwendung angezeigt. Kunden können jetzt über diese Nummer Ihren Agent anrufen. Wenn Sie eine virtuelle Telefon nummer bereitgestellt haben, können Sie sie im WebRTC-Widget testen.
Agent-Anwendung im WebRTC-Widget testen
Unabhängig davon, ob Sie eine Standard-PSTN- oder eine virtuelle Telefonnummer bereitgestellt haben, können Sie Ihre Agent-Anwendung im WebRTC-Widget mit Audio, Video oder Text testen.
- Klicken Sie oben in der Konsole auf den Tab Bereitstellen.
- Klicken Sie neben dem Namen des bereitgestellten Channels auf das Symbol. Rechts wird ein WebRTC-Widget geöffnet.
- Wenn Sie vom WebRTC-Widget dazu aufgefordert werden, gewähren Sie dem Browser Zugriff auf Ihr Mikrofon und Ihre Kamera.
- Interagieren Sie mit Ihrem Agent über Audio, Video oder Text. Wenn Sie Video verwenden, können Sie auch zur Bildschirmfreigabe wechseln. Verwenden Sie dazu das Drop-down-Menü neben dem Kamerasymbol.
Verhalten der Agent-Anwendung konfigurieren
Sie können das Verhalten Ihres Agent beim Beenden und Weiterleiten von Anrufen anpassen.
Beenden von Agent-Anrufen konfigurieren
So erlauben Sie dem Agent, einen Anruf zu beenden:
- Klicken Sie rechts oben auf das Plussymbol des Agent und dann auf Tools hinzufügen.
- Fügen Sie dem Agent das Tool
end_sessionhinzu (und allen Sub-Agent, falls vorhanden). Dieses Systemtool ist standardmäßig für jeden Agent verfügbar. - Fügen Sie der Anleitung eine Beschreibung des Verhaltens beim Beenden von Anrufen hinzu.
Beispiel:
End the call by executing the end_session tool with arguments reason="customer_query_ended".
Anruf an einen Kundenservicemitarbeiter weiterleiten
So konfigurieren Sie den Agent, dass er den Anruf an einen Kundenservicemitarbeiter weiterleitet und den virtuellen Kundenservicemitarbeiter-Teil des Anrufs beendet:
- Fügen Sie dem Agent das Systemtool
end_sessionhinzu (und allen Sub-Agent, falls vorhanden). - Erstellen Sie die folgenden Variablen:
escalationMessage: Optional können Sie im Feld Standardwert Text hinzufügen, wenn der Agent vor der Weiterleitung des Anrufs eine Nachricht sagen soll.telephonyTransferCall: Setzen Sie Typ auf Benutzerdefiniertes Schema. Geben Sie das folgende JSON-Objekt in das Eingabefeld Schema ein. Verwenden Sie dabei die Telefonnummer, an die der Agent Anrufe weiterleiten soll (E.164-Format erforderlich).
{
"phoneNumber": "+PHONE_NUMBER"
}- Fügen Sie der Anleitung eine Beschreibung dieses Verhaltens hinzu. Beispiel:
Escalate the call to a human agent by executing the end_session tool with session_escalated=true
Weiterleitung an Kundenservicemitarbeiter durch Partner unterstützt
Wenn Ihr System einen Partner enthält, der nicht zu Google gehört
gibt es zwei Optionen für die Weiterleitung an Kundenservicemitarbeiter: eine liveAgentHandoff
Variable oder eine telephonyPayload Variable. In beiden Fällen kann die JSON-Nutzlast je nach Anleitung des Partners variieren.
Weiterleitung an Kundenservicemitarbeiter durch Live-Agent :
- Fügen Sie dem Agent das Systemtool
end_sessionhinzu (und allen Sub-Agent, falls vorhanden). - Erstellen Sie die folgende Variable:
liveAgentHandoff: Setzen Sie Typ auf Benutzerdefiniertes Schema und fügen Sie das vom Partner erforderliche JSON-Schema hinzu, z. B.:
{ "PARTNER_NAME": { "type": "action", "action": "deflection", "deflection_type": "sip", "sip_uri": "SIP_URI", "sip_refer": true, "sip_parameters": { "x-header": "value" } } }
- Fügen Sie der Anleitung eine Beschreibung dieses Verhaltens hinzu. Beispiel:
Escalate the call to a human agent by executing the end_session tool with session_escalated=true
Weiterleitung an Kundenservicemitarbeiter mit benutzerdefinierter Nutzlast :
- Fügen Sie dem Agent das Systemtool
end_sessionhinzu (und allen Sub-Agent, falls vorhanden). - Erstellen Sie die folgende Variable:
telephonyPayload: Setzen Sie Typ auf Benutzerdefiniertes Schema und fügen Sie das vom Partner erforderliche JSON-Schema hinzu, z. B.:
{ "PARTNER_NAME": { "type": "action", "action": "deflection", "deflection_type": "sip", "sip_uri": "SIP_URI", "sip_refer": true, "sip_parameters": { "x-header": "value" } } }
- Fügen Sie der Anleitung eine Beschreibung dieses Verhaltens hinzu. Beispiel:
Escalate the call to a human agent by executing the end_session tool with session_escalated=true
SIP-Signalisierung verwenden, um Daten an den Agent zu senden und von ihm zu empfangen
Wenn Sie eine SBC-Integration durchgeführt haben, können Sie die SIP-Signalisierung verwenden, um Daten über SIP-Header an den Agent zu senden. Sie können auch Daten senden, wenn ein BYE, REFER oder INVITE vom Agent ausgelöst wird.
Alle Daten, die an den Agent gesendet werden, sind über Variablen zugänglich. Sie müssen zuerst die Variablen erstellen, um auf die Daten zugreifen zu können.
Die Telefonnummer des Anrufers (ANI) wird in der Variablen telephony-caller-id vom Typ Text gespeichert.
Wenn der Agent vor einer Eskalation eine Nachricht sagen soll, muss die Nachricht in der Variablen escalationMessage vom Typ Text gespeichert werden.
Für ein SIP REFER oder SIP INVITE muss die Variable telephonyTransferCall vom Typ Custom schema (advanced) mit den angegebenen Variablen phoneNumber und useOriginatingTrunk vorhanden sein.
Alle Daten, die gesendet werden müssen, müssen in der Variablen liveAgentHandoff vom Typ Custom schema (advanced) vorhanden sein.
UUI-SIP-Header
Sie können eine durch Semikolons getrennte Liste von Schlüssel/Wert-Paaren senden, die hexadezimal codiert ist, gefolgt von ;encoding=hex;purpose=Goog-Session-Param. Wenn Sie innerhalb des Agent darauf zugreifen möchten, erstellen Sie eine Variable mit dem Namen uui-headers und dem Typ List.
Wenn beispielsweise der String key1=value1;key2=value2 gesendet werden muss, sollte der folgende UUI-Header gesendet werden. Die Nutzlast ist der hexadezimal codierte Wert key1=value1;key2=value2.
User-to-User: 6B6579313D76616C7565313B6B6579323D76616C756532;encoding=hex;purpose=Goog-Session-Param
Die Variable uui-headers enthält das folgende Objekt:
"uui-headers": ["key1=value1;key2=value2"]
Wenn Sie uuiHeaders senden möchten, wenn Sie das Tool end_session aufrufen, geben Sie params={"liveAgentHandoff": {"uuiHeaders": [ {uui-headers}[0] ]}} an.
Wenn beispielsweise die gesendeten UUI-Header bei einem SIP BYE gesendet werden müssen, sieht die Anleitung so aus:
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={"escalationMessage": "I am transferring you to an agent", "liveAgentHandoff":{"uuiHeaders": [ {uui-headers}[0] ]}}.
SIP-X-Header
SIP-Header, die mit x- beginnen, können an den Agent gesendet und als Variable x-headers vom Typ Custom schema (advanced) gespeichert werden. Das Präfix x- wird im Variablennamen entfernt.
Wenn das SIP INVITE beispielsweise den folgenden Header enthält:
x-billing-id: 12345
Die Variable x-headers enthält das folgende Objekt:
{
"x-headers": {
"billing-id": "12345"
}
}
Wenn Sie xHeaders senden möchten, wenn Sie das Tool end_session aufrufen, geben Sie params={"liveAgentHandoff": {"xHeaders": {x-headers} }} an.
Wenn beispielsweise die gesendeten X-Header bei einem SIP BYE gesendet werden müssen, sieht die Anleitung so aus:
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={"escalationMessage": "I am transferring you to an agent", "liveAgentHandoff":{"xHeaders": {x-headers} }}.
SIP BYE senden
Wenn der Agent den Anruf beendet, wird ein SIP BYE gesendet. Wenn Sie uuiHeaders und xHeaders im SIP BYE senden möchten, verwenden Sie eine Anleitung ähnlich dem folgenden Beispiel:
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={"escalationMessage": "I am transferring you to an agent", "liveAgentHandoff":{"xHeaders": {x-headers}, "uuiHeaders": [{uui-headers[0]}] }}.
SIP REFER senden
Wenn der Agent den Anruf an einen Kundenservicemitarbeiter weiterleiten und den Anruf beenden muss, sollte ein SIP REFER verwendet werden. Ein SIP REFER wird ausgelöst, indem Sie "sipRefer": true in der Variablen liveAgentHandoff angeben. Die refer-to-Nummer muss in der Variablen telephonyTransferCall angegeben werden. Beispiel für eine Anleitung zum Ausführen eines SIP REFER und zum Senden von uuiHeaders und 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={"escalationMessage": "I am transferring you to an agent", "telephonyTransferCall": {"phoneNumber": "+19496855555", "useOriginatingTrunk": true}, "liveAgentHandoff":{"sipRefer": true, "xHeaders": {x-headers}, "uuiHeaders": [{uui-headers[0]}] }}.
SIP INVITE senden
Wenn der Agent den Anruf an einen Kundenservicemitarbeiter weiterleiten und im Anruf bleiben muss, damit Agent Assist-Funktionen verwendet werden können, sollte ein SIP INVITE verwendet werden. Ein SIP INVITE wird durch die phoneNumber in der Variablen telephonyTransferCall ausgelöst. Beispiel für eine Anleitung zum Ausführen eines SIP INVITE und zum Senden von uuiHeaders und 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={"escalationMessage": "I am transferring you to an agent", "telephonyTransferCall": {"phoneNumber": "+19496855555", "useOriginatingTrunk": true}, "liveAgentHandoff":{"xHeaders": {x-headers}, "uuiHeaders": [{uui-headers[0]}] }}.
Handler für Remote-Anrufunterbrechungen erstellen
Wenn ein Kunde den Anruf beendet, wird ein bestimmtes Ereignis ausgelöst: sys.remote-call-disconnected. Dieses Ereignis kann verwendet werden, um einen Tool-Aufruf in CX Agent Studio auszulösen. Im folgenden Beispiel wird das Tool sum aufgerufen, wenn der Kunde den Anruf beendet.
Das Tool sum ist als Python-Code-Tool definiert und enthält den folgenden Code:
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
Erstellen Sie im Root-Agent einen Before LLM-Callback mit der Logik, um nach dem Ereignis „Anruf beendet“ zu suchen. Rufen Sie in LlmResponse das Tool sum und dann das Tool end_session auf.
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