Mit der Supervisor-Unterstützung für Kundenservicemitarbeiter können menschliche Supervisoren Unterhaltungen zwischen Endnutzern und Kundenservicemitarbeitern überwachen. Sie definieren Regeln dafür, wann eine Unterhaltung an einen menschlichen Supervisor eskaliert werden soll. Supervisor Assist benachrichtigt dann automatisch den menschlichen Supervisor, wenn eine Unterhaltung einer Ihrer Regeln entspricht.
Für jede Äußerung des Endnutzers in einer Unterhaltung sehen Sie Stimmungsbewertungen und ein Transkript. In Ihren Regeln können Sie entweder diese Stimmungsbewertungen oder den KI-Coach verwenden, um festzulegen, wann die Aufsichtsperson eine Benachrichtigung erhält.
Hinweis
Um die Funktion „Supervisor Assist“ zu verwenden, benötigen Sie ein Agent Assist-Konversationsprofil und die folgenden IAM-Rollen (Identity and Access Management):
dialogflow.virtualAgentMonitoringSupervisordialogflow.processor
Schritt 1: Unterhaltungsprofil konfigurieren
In einem Konversationsprofil wird eine Reihe von Parametern konfiguriert, die die Vorschläge steuern, die ein Kundenservicemitarbeiter während einer Unterhaltung erhält. In den folgenden Schritten wird ein ConversationProfile mit einem HumanAgentAssistantConfig-Objekt erstellt. Sie können diese Aktionen auch über die Agent Assist-Konsole ausführen, wenn Sie die API nicht direkt aufrufen möchten.
Unterhaltungsprofil erstellen
Rufen Sie zum Erstellen eines Konversationsprofils die Methode create für die Ressource ConversationProfile auf. Geben Sie Ihre Wissensdatenbank-ID, Dokument-ID, Projekt-ID und Modell-ID an. Die Antwort enthält die ID Ihres neuen Konversationsprofils.
Hier ein JSON-Beispiel:
{
"displayName": "smart_compose_assist",
"humanAgentAssistantConfig": {
"humanAgentSuggestionConfig": {
"featureConfigs": [
{
"suggestionFeature": {
"type": "SMART_COMPOSE"
},
"queryConfig": {
"documentQuerySource": {
"documents": "projects/project-id/knowledgeBases/knowledge-base-id/documents/document-id"
},
"maxResults": "1"
},
"conversationModelConfig": {
"model": "projects/project-id/conversationModels/model-id"
}
}
]
}
}
}
Schritt 2: Sentiment oder KI-Coach auswählen
Wählen Sie aus, ob Sie die Sentimentanalyse, den KI-Coach oder beides verwenden möchten, um Unterhaltungen zu überwachen. Diese Auswahl wird auch in Ihren Eskalierungsregeln berücksichtigt.
Sentiment
Wenn Sie die Stimmung des Endnutzers während einer Unterhaltung analysieren möchten, fügen Sie Ihrem Konversationsprofil die Sentimentanalyse hinzu.
KI-Coach
Wenn Sie Unterhaltungen mit dem KI-Coach analysieren möchten, erstellen Sie einen KI-Coach-Generator. Sie können jeweils nur einen KI-Coach-Generator für ein einzelnes Konversationsprofil erstellen. Sie können dem KI-Coach-Generator eine unbegrenzte Anzahl von Anweisungen hinzufügen. Jede Anweisung muss mindestens einen Anzeigetitel und eine Bedingung enthalten.
Nachdem Sie einen Generator erstellt haben, kopieren Sie die neue Generator-ID und fügen Sie sie in Ihr Konversationsprofil ein.
Schritt 3: Regeln zum Überwachen von Unterhaltungen konfigurieren
Aktualisieren Sie Ihr Konversationsprofil, um Überwachungsregeln für Ihre Kundensupport-Konversationen zu aktivieren und zu konfigurieren, die entweder die Funktion „Sentiment“ oder „AI Coach“ verwenden. Wählen Sie eine der folgenden Optionen aus, um Ihr Konversationsprofil mit der API zu aktualisieren:
- Rufen Sie die Methode
updatefür die RessourceConversationProfileauf. Legen Sie die Konfiguration für die Interaktionsüberwachung mit der Methode
UpdateConversationProfilefest. Ihre Anfrage zum Festlegen der Konfiguration für die Interaktionsüberwachung sollte in etwa so aussehen:conversation_profile { name: "projects/agent-assist-console-demo/locations/global/conversationProfiles/your_new_conv_profile_id" interaction_monitoring_config { event_notification_config = { notification_config = { # If you want to enable notifications on your custom pub/sub topic, add it here. topic = 'ADD_YOUR_CUSTOM_PUBSUB_TOPIC' message_format = 'JSON' } # Optional: Leave both empty for *Default Mode*. # Other supported configurations: # 1. **Default Mode:** Always publish alert events when they are triggered and publish metric events only when an alert is triggered, # - Metric event: `METRIC_EVENT_PUBLISH_IF_ALERT_TRIGGERED` # - Alert event: `ALERT_EVENT_ALWAYS_PUBLISH` # 2. **Pure Monitoring Mode:** Publish all metric events, but never publish alert events. # - Metric event: `METRIC_EVENT_ALWAYS_PUBLISH` # - Alert event: `ALERT_EVENT_NEVER_PUBLISH` # 3. **Publish All Events:** Always publish both metric and alert events. # - Metric event: `METRIC_EVENT_ALWAYS_PUBLISH` # - Alert event: `ALERT_EVENT_ALWAYS_PUBLISH` # Note: Avoid setting `metric_event_notification_mode` to `METRIC_EVENT_PUBLISH_IF_ALERT_TRIGGERED` while `alert_event_notification_mode` is `ALERT_EVENT_NEVER_PUBLISH`, as this combination will result in no events being published. metric_event_notification_mode = 'ADD' alert_event_notification_mode = 'ADD' } alerting_config { # Required. rules { alert_rule_id: "rule_1" description: "rule_1_description" trigger_condition { ... } rules { alert_rule_id: "rule_2" description: "rule_2_description" trigger_condition { ... } } # Optional Tool config to retrieve customer name. If not required, skip setting the metadata_config metadata_config = { tool_configs = [ { display_name = 'Customer Name' toolset_tool = { toolset = 'ADD_CUSTOM_TOOLSET' operation_id = 'load_profile' } response_key_path = 'sessionInfo.customerProfile.customerName' }, ] } } } } update_mask { paths: "interaction_monitoring_config" } }
Wenden Sie sich an Ihren Google Cloud Ansprechpartner, um weitere Unterstützung zu erhalten.
Beispielkonfigurationen
Die folgenden Beispiele veranschaulichen Konfigurationen von Konversationsprofilen für verschiedene Kombinationen von Monitoring-Regeln.
Beispiel 1: Regel für KI-Coach erfüllt
conversation_profile {
name: "projects/agent-assist-console-demo/locations/global/conversationProfiles/your_new_conv_profile_id"
interaction_monitoring_config {
event_notification_config = {
...
}
alerting_config {
rules {
alert_rule_id: "agent coaching alert trigger rule(s) matched"
description: "agent coaching alert trigger rule(s) matched"
trigger_condition {
metric_condition {
metric_type: AGENT_COACHING_INSTRUCTIONS
agent_coaching_config {
generator_name: "projects/agent-assist-console-demo/locations/global/generators/newly_created_generator_id"
}
display_name: "agent coaching alert trigger rule(s) matched"
}
}
}
# Optional Tool config to retrieve customer name. If not required, skip setting the metadata_config.
metadata_config = {
...
}
}
}
}
update_mask {
paths: "interaction_monitoring_config"
}
Beispiel 2: Sentiment-Score < -0,01
conversation_profile {
name: "projects/agent-assist-console-demo/locations/global/conversationProfiles/your_new_conv_profile_id"
interaction_monitoring_config {
event_notification_config = {
...
}
alerting_config {
rules {
alert_rule_id: "customer sentiment negative"
description: "negative sentiment"
trigger_condition {
metric_condition {
metric_type: SENTIMENT
value_range {
max_threshold: -0.01
}
display_name: "negative sentiment"
}
}
}
# Optional Tool config to retrieve customer name. If not required, skip setting the metadata_config.
metadata_config = {
...
}
}
}
}
update_mask {
paths: "interaction_monitoring_config"
}
Beispiel 3: Stimmungsbewertung < -0,01 und Regel für KI-Coach erfüllt
conversation_profile {
name: "projects/agent-assist-console-demo/locations/global/conversationProfiles/your_new_conv_profile_id"
interaction_monitoring_config {
event_notification_config = {
...
}
alerting_config {
# Required.
rules {
alert_rule_id: "sentiment is negative and agent coaching alert trigger rule(s) matched"
description: "agent coaching alert trigger rule(s) matched and customer is unhappy"
trigger_condition {
and_condition {
alert_conditions {
metric_condition {
metric_type: SENTIMENT_SCORE
value_range {
max_threshold: -0.01
}
display_name: "negative sentiment and agent coaching alert trigger rule(s) matched"
}
}
alert_conditions {
metric_condition {
metric_type: AGENT_COACHING_INSTRUCTIONS
agent_coaching_config {
generator_name: "projects/agent-assist-console-demo/locations/global/generators/newly_created_generator_id"
}
display_name: "negative sentiment and agent coaching alert trigger rule(s) matched"
}
}
}
}
}
# Optional Tool config to retrieve customer name. If not required, skip setting the metadata_config.
metadata_config = {
...
}
}
}
}
update_mask {
paths: "interaction_monitoring_config"
}
Beispiel 4: Regel für KI-Coach erfüllt oder Sentimentwert < -0,01
conversation_profile {
name: "projects/agent-assist-console-demo/locations/global/conversationProfiles/your_new_conv_profile_id"
interaction_monitoring_config {
event_notification_config = {
...
}
alerting_config {
rules {
alert_rule_id: "agent coaching alert trigger rule(s) matched"
description: "agent coaching alert trigger rule(s) matched"
trigger_condition {
metric_condition {
metric_type: AGENT_COACHING_INSTRUCTIONS
agent_coaching_config {
generator_name: "projects/agent-assist-console-demo/locations/global/generators/newly_created_generator_id"
}
display_name: "agent coaching alert trigger rule(s) matched"
}
}
}
rules {
alert_rule_id: "customer sentiment negative"
description: "negative sentiment"
trigger_condition {
metric_condition {
metric_type: SENTIMENT
value_range {
max_threshold: -0.01
}
display_name: "negative sentiment"
}
}
}
# Optional Tool config to retrieve customer name. If not required, skip setting the metadata_config.
metadata_config = {
...
}
}
}
}
update_mask {
paths: "interaction_monitoring_config"
}
Schritt 4: Supervisor Assist konfigurieren
- Erstellen Sie ein Pub/Sub-Thema, um Benachrichtigungen zu erhalten. Agent Assist verwendet dieses Pub/Sub-Thema, um Benachrichtigungen und Messwerte zu empfangen. Notieren Sie sich die Themen-ID.
- Senden Sie Ihr Projekt und Ihre Pub/Sub-Themen-ID an Google, um sie auf die Zulassungsliste setzen zu lassen.
Der Dienst für die Überprüfung durch Menschen veröffentlicht die folgenden Ereignistypen:
- Stimmungsbezogene Messwerte sind aggregierte Stimmungsberechnungen für alle Äußerungen von Endnutzern in einer Unterhaltung.
- Benachrichtigungsereignisse sind Benachrichtigungen mit Regeldetails, die von Agent Assist generiert werden, wenn die Stimmung einen konfigurierten Schwellenwert überschreitet.
Supervisor Assist unterstützt die folgenden Standardkonfigurationen, um den unterschiedlichen Integrationsanforderungen für diese beiden Ereignisse gerecht zu werden. Sie können diese Einstellungen in Ihre Konfiguration für die Interaktionsüberwachung einbeziehen.
- Standardmodus: Benachrichtigungen werden sofort veröffentlicht, wenn eine Bedingung erfüllt ist. Stimmungsbezogene Messwerte werden erst veröffentlicht, nachdem eine Benachrichtigung ausgelöst wurde.
- Reiner Monitoring-Modus: Sentiment-Messwerte werden für jede Runde kontinuierlich veröffentlicht. Warnereignisse werden ignoriert.
- Verhalten im Modus „Alle veröffentlichen“: Beide Arten von Ereignissen werden immer bedingungslos veröffentlicht.
Schritt 5a: Chat testen
So testen Sie die Unterstützung durch den Supervisor mit dem Chat-Simulator:
Rufen Sie den Monitoring-Simulator auf:
https://agentassist.cloud.google.com/projects/project-id/locations/location-id/human-supervisor
Klicken Sie auf die EinstellungenEinstellungen und wählen Sie Kundenservicemitarbeiter aus.
Öffnen Sie einen weiteren Tab in Ihrem Browser und rufen Sie den Chat-Konversationssimulator mit Ihrem Konversationsprofil auf.
Starten Sie das Gespräch im Gesprächssimulator. Im Monitoring-Simulator werden Transkripte und Stimmungsbewertungen angezeigt.
Schritt 5b: Stimme testen
So testen Sie die Unterstützung durch den Supervisor mit dem Sprachsimulator:
Rufen Sie den Monitoring-Simulator auf:
https://agentassist.cloud.google.com/projects/project-id/locations/location-id/human-supervisor
Klicken Sie auf die EinstellungenEinstellungen und wählen Sie dann Kundenservicemitarbeiter und Nur Telefonanrufe überwachen aus.
Öffnen Sie einen weiteren Tab in Ihrem Browser und rufen Sie den Simulator für Sprachunterhaltungen mit Ihrem Unterhaltungsprofil auf.
Klicken Sie auf AnrufAuf Sprache umstellen.
Geben Sie die Telefonnummer für einen Kundenservicemitarbeiter ein.
Rufen Sie mit einem anderen Smartphone mit einer anderen Nummer die neuen Nummern an, die auf dem Bildschirm angezeigt werden.
Karten mit Ergebnissen
Supervisor Assist bietet zwei Werte:
- Die Sentiment-Bewertung pro Zug ist ein diskreter Gleitkommawert zwischen -1 und 1.
- Der aktuelle Sentiment-Score ist ein kontinuierlicher Gleitkommawert zwischen -1 und 1.
Sie können die kontinuierlichen, aktuellen Sentiment-Werte einem benutzerdefinierten Wert zuordnen, der für die verschiedenen Geschäftseinheiten geeignet ist. Das folgende Beispiel veranschaulicht einen Ansatz für die Zuordnung.
Beispiel für JavaScript-Code für die Zuordnung:
/**
* Maps a score to a bucket index (1-10) based on 11 boundary points.
* * @param {number} score - The input score (between -1 and 1)
* @param {number[]} boundaries - An array of exactly 11 numbers sorted in ascending order.
* @return{number} The bucket index (1 to 10).
*/
function getBucketIndex(score, boundaries) {
// 1. Validation: Ensure we have exactly 11 boundary points
if (!Array.isArray(boundaries) || boundaries.length !== 11) {
throw new Error("Boundaries must be an array of exactly 11 points.");
}
// 2. Validate Input Score Range
if (typeof score !== 'number' || score < -1 || score > 1) {
throw new Error(`Input score ${score} is out of bounds. Must be between -1 and 1.`)
}
// 3. Iterate through boundaries to find the slot
// We start checking from index 1 (the first upper bound)
for (let i = 1; i < boundaries.length; i++) {
// If the score is strictly less than the current boundary,
// it belongs to the bucket corresponding to this index.
if (score <= boundaries[i]) {
return i;
}
}
// Fallback (should be covered by step 2 validation, but ensures integer return)
return -1;
}
// --- Example Usage ---
// Create 11 boundary points from -1 to 1
// [-1.0, -0.8, -0.6, -0.4, -0.2, 0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
const boundaries = [];
for (let i = 0; i <= 10; i++) {
// Creating points: -1 + (i * 0.2)
boundaries.push(parseFloat((-1 + (i * 0.2)).toFixed(1)));
}
console.log("Boundaries:", boundaries);
// Test Cases
console.log(`Score -0.9 maps to Bucket: ${getBucketIndex(-0.9, boundaries)}`); // Expected: 1
console.log(`Score -0.8 maps to Bucket: ${getBucketIndex(-0.8, boundaries)}`); // Expected: 2 (Inclusive lower)
console.log(`Score 0.0 maps to Bucket: ${getBucketIndex(0.0, boundaries)}`); // Expected: 6
console.log(`Score 0.95 maps to Bucket: ${getBucketIndex(0.95, boundaries)}`); // Expected: 10
console.log(`Score 1.0 maps to Bucket: ${getBucketIndex(1.0, boundaries)}`); // Expected: 10 (Inclusive upper)
Optional können Sie die Zuordnung mit dem folgenden Code optimieren, um automatisch Grenzwerte zu ermitteln, die die Korrelation zwischen zugeordneten Vorhersagen und dem CX-Score maximieren. Nachdem Sie diese einmalige Optimierung für Ihre Daten durchgeführt haben, können Sie die resultierenden datengesteuerten Grenzen verwenden, anstatt sie manuell zu konfigurieren.
Pub/Sub-Ereignisbenachrichtigung
Sowohl die Stimmungs-Messwerte als auch die Benachrichtigungen werden in einem einzigen konfigurierten Pub/Sub-Thema veröffentlicht. Die Nutzlasten unterscheiden sich je nach Ereignistyp.
Nutzlast der Pub/Sub-Nachricht für Stimmungsanalysen:
{
"data": "{\"metric\":{\"metricType\":\"SENTIMENT_SCORE\",\"value\":{\"createTime\":\"2024-01-01T00:00:00.000Z\",\"sentiment\":{\"score\":0.5,\"magnitude\":0.5},\"advancedValues\":{\"exponentialMovingAverageValue\":0.5}},\"conversation\":\"projects/your-project-id/locations/global/conversations/conversation_id\",\"message\":{\"name\":\"projects/your-project-id/locations/global/conversations/conversation_id/messages/message_id\",\"content\":\"ok\",\"languageCode\":\"en-US\",\"participant\":\"projects/your-project-id/locations/global/conversations/conversation_id/participants/participant_id\",\"participantRole\":\"END_USER\",\"sendTime\":\"2024-01-01T00:00:00.000Z\"}}}",
"attributes": {
"conversation_id": "conversation_id"
}
}
Beispiel für die Nutzlast einer Pub/Sub-Nachricht:
{"data": "{\"alert\":{\"name\":\"projects/project_id/locations/location_id/interactionMonitoringAlerts/alert_id\",\"conversation\":\"projects/project_id/locations/location_id/conversations/conversation_id\",\"alertState\":\"CREATED\",\"alertMetadata\":{\"alertTriggerRules\":[{\"alertRuleId\":\"negative-sentiment\",\"description\":\"dummy_description\",\"Strong negative sentiment detected in last 30 seconds\":[{\"metricType\":\"SENTIMENT_SCORE\",\"values\":[{\"createTime\":\"2024-01-01T00:00:00.000Z\",\"sentiment\":{\"score\":0.0,\"magnitude\":0.0}}]}]}],\"channelType\":\"CHAT\"},\"createTime\":\"2024-01-01T00:00:00.000Z\"}}",
"attributes": {
"conversation_id": "conversation_id"
}
}
API-Referenz
- Anwendungsfall: Überwacht Chatunterhaltungen zwischen einem Endnutzer und einem Kundenservicemitarbeiter.
- Testmethoden:
- Konsolensimulator: Verwenden Sie den Chat-Simulator der Agent Assist-Konsole.
- API-Integration: Senden Sie direkte HTTP- oder RPC-Anfragen (siehe Beispielcode).
- Anwendungsfall: Überwacht Sprachunterhaltungen zwischen einem Endnutzer und einem Kundenservicemitarbeiter.
- Testmethoden:
- Konsolensimulator: Verwenden Sie den Sprachsimulator der Agent Assist-Konsole.
- API-Integration: Senden Sie direkte HTTP- oder RPC-Anfragen (siehe Beispielcode).
- Ruft die vollständige Liste der Transkripte (sowohl Kundenservice- als auch Kundenbeiträge) für eine Unterhaltung ab.
- Best Practice: Diese API ist besonders nützlich für Sprachunterhaltungen, um die endgültigen, korrigierten Transkripte für jede Äußerung nach Abschluss des Streams zu überprüfen.
ListInteractionMonitoringMetrics: Ruft alle Sentimentmesswerte ab, die für eine bestimmte Unterhaltung berechnet und zusammengefasst wurden.
Beispiel für eine Anfragenutzlast:
{
"parent": "projects/{project-id}/locations/{location-id}",
"conversation":
"projects/{project-id}/locations/{location-id}/conversations/{conversation-id}"
}
Beispiel für die Antwortnutzlast:
{
"interactionMonitoringMetrics": [{
"metricType": "SENTIMENT_SCORE",
"values": {
"createTime": "2025-12-01T22:20:49.925Z",
"sentiment": {
"score": -1.0,
"magnitude": 1.0
},
"advancedValues": {
"movingAverageValue": -0.4994999999762513
}
}, {
"createTime": "2025-12-01T22:20:21.027Z",
"sentiment": {
"score": 0.001,
"magnitude": 0.001
},
"advancedValues": {
"movingAverageValue": -0.4994999999762513
}
},
"advancedValues": {
}
}]
}
ListInteractionMonitoringAlert: Ruft generierte Benachrichtigungen ab. Das kann für ein ganzes Projekt gelten oder auf eine bestimmte Unterhaltung gefiltert werden.
So fragen Sie alle Benachrichtigungen in einem Projekt ab:
{
"parent": "projects/{project-id}/locations/{location-id}"
}
**So fragen Sie Benachrichtigungen für eine bestimmte Unterhaltungs-ID ab **
{
"parent": "projects/{project-id}/locations/{location-id}",
"filter": "context_id=projects/{project-id}/locations/{location-id}/conversations/{conversation-id}"
}
Filteroptionen. Nutzer können zusätzliche Filterkriterien anwenden, z. B. den Warnungsstatus:
alert_state=CREATED,alert_state=ACKNOWLEDGED