Mit der Supervisor-Unterstützung für menschliche Kundenservicemitarbeiter können menschliche Supervisoren Unterhaltungen zwischen Endnutzern und menschlichen Kundenservicemitarbeitern überwachen. Sie definieren Regeln, wann eine Unterhaltung an einen menschlichen Supervisor eskaliert werden soll. Die Supervisor-Unterstützung benachrichtigt dann automatisch den menschlichen Supervisor, wenn eine Unterhaltung einer Ihrer Regeln entspricht.
Für jede Endnutzerrunde in einer Unterhaltung sehen Sie Sentimentwerte und ein Transkript. Ihre Regeln können entweder diese Sentimentwerte oder den KI-Coach verwenden, um zu bestimmen, wann der menschliche Supervisor eine Benachrichtigung erhält.
Hinweis
Um die Supervisor-Unterstützung zu verwenden, benötigen Sie ein Agent Assist-Unterhaltungsprofil und die folgenden IAM-Rollen (Identity and Access Management).
dialogflow.virtualAgentMonitoringSupervisordialogflow.processor
Schritt 1: Unterhaltungsprofil konfigurieren
Ein Unterhaltungsprofil konfiguriert eine Reihe von Parametern, die die Vorschläge steuern, die einem Kundenservicemitarbeiter während einer Unterhaltung gegeben wurden. In den folgenden Schritten wird ein
ConversationProfile mit einem
HumanAgentAssistantConfig
-Objekt erstellt. Sie können diese Aktionen auch über die
Agent Assist Console ausführen, wenn Sie die API nicht direkt aufrufen möchten.
Unterhaltungsprofil erstellen
Zum Erstellen eines Unterhaltungsprofils rufen Sie die create Methode für die
ConversationProfile
Ressource auf. Geben Sie Ihre Wissensdatenbank-ID, Dokument-ID, Projekt-ID und Modell-ID an. Die Antwort enthält Ihre neue Unterhaltungsprofil-ID.
Hier ist 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 Sentimentanalyse, KI-Coach oder beides verwenden möchten, um Unterhaltungen zu überwachen. Diese Auswahl wird auch in Ihren Eskalationsregeln berücksichtigt.
Sentiment
Wenn Sie das Sentiment des Endnutzers während einer Unterhaltung analysieren möchten, fügen Sie Ihrem Unterhaltungsprofil eine Sentimentanalyse hinzu.
KI-Coach
Wenn Sie Unterhaltungen mit dem KI-Coach analysieren möchten, folgen Sie der Anleitung zum Erstellen eines KI-Coach-Generators. Sie können jeweils nur einen KI-Coach-Generator für ein einzelnes Unterhaltungsprofil erstellen. Sie können Ihrem 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 Ihrem Unterhaltungsprofil hinzu.
Schritt 3: Regeln zum Überwachen von Unterhaltungen konfigurieren
Aktualisieren Sie Ihr Unterhaltungsprofil, um Überwachungsregeln für Ihre Kundensupport-Unterhaltungen zu aktivieren und zu konfigurieren, die entweder Sentiment oder KI-Coach verwenden. Wählen Sie eine der folgenden Optionen aus, um Ihr Unterhaltungsprofil mit der API zu aktualisieren:
- Rufen Sie die Methode
updatefür die RessourceConversationProfileauf. Legen Sie die Konfiguration für die Interaktionsüberwachung mit der
UpdateConversationProfileMethode fest. Ihre Anfrage zum Festlegen der Konfiguration für die Interaktionsüberwachung sollte so aussehen wie im folgenden Beispiel.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
In den folgenden Beispielen werden Konfigurationen für Unterhaltungsprofile für verschiedene Kombinationen von Überwachungsregeln veranschaulicht.
Beispiel 1: KI-Coach-Regel 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: 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: "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: Sentimentwert < -0,01 und KI-Coach-Regel 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: KI-Coach-Regel 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-Unterstützung konfigurieren
- Erstellen Sie ein Pub/Sub-Thema, um Benachrichtigungen zu erhalten. Agent Assist verwendet dieses Pub/Sub-Thema, um Benachrichtigungen und Messwerte zu erhalten. Notieren Sie sich Ihre Themen-ID.
- Senden Sie Ihre Projekt- und Pub/Sub-Themen-ID zur Zulassungsliste an Google.
Der Überwachungsdienst für menschliche Interaktionen veröffentlicht die folgenden Ereignistypen:
- Sentimentmesswerte sind aggregierte Sentimentberechnungen für alle Endnutzerrunden in einer Unterhaltung.
- Benachrichtigungsereignisse sind Benachrichtigungen mit Regeldetails, die von Agent Assist generiert werden, wenn das Sentiment einen konfigurierten Schwellenwert überschreitet.
Die Supervisor-Unterstützung bietet die folgenden Standardkonfigurationen, um unterschiedlichen Integrationsanforderungen für diese beiden Ereignisse gerecht zu werden. Sie können diese Einstellungen in Ihre Konfiguration für die Interaktionsüberwachung aufnehmen.
- Standardmodus: Benachrichtigungen werden sofort veröffentlicht, wenn eine Bedingung erfüllt ist. Sentimentmesswerte werden erst veröffentlicht, nachdem eine Benachrichtigung ausgelöst wurde.
- Reiner Überwachungsmodus: Sentimentmesswerte werden kontinuierlich für jede Runde veröffentlicht. Benachrichtigungsereignisse werden ignoriert.
- Verhalten im Modus „Alle veröffentlichen“: Beide Ereignistypen werden immer bedingungslos veröffentlicht.
Schritt 5a: Chat testen
Führen Sie die folgenden Schritte aus, um die Supervisor-Unterstützung mit dem Chat-Simulator zu testen.
Rufen Sie den Überwachungssimulator auf:
https://agentassist.cloud.google.com/projects/project-id/locations/location-id/human-supervisor
Klicken Sie auf die settingsSettings und wählen Sie Human Agents aus.
Öffnen Sie in Ihrem Browser einen weiteren Tab und rufen Sie mit Ihrem Unterhaltungsprofil den Chat-Unterhaltungssimulator auf.
Starten Sie die Unterhaltung im Unterhaltungssimulator. Im Überwachungssimulator werden Transkripte und Sentimentwerte angezeigt.
Schritt 5b: Sprache testen
Führen Sie die folgenden Schritte aus, um die Supervisor-Unterstützung mit dem Sprachsimulator zu testen.
Rufen Sie den Überwachungssimulator auf:
https://agentassist.cloud.google.com/projects/project-id/locations/location-id/human-supervisor
Klicken Sie auf die Einstellungen settingsSettings und wählen Sie dann Human Agents und Only monitor phone calls aus.
Öffnen Sie in Ihrem Browser einen weiteren Tab und rufen Sie mit Ihrem Unterhaltungsprofil den Sprachunterhaltungssimulator auf.
Klicken Sie auf AnrufenSwitch to voice.
Geben Sie die Telefonnummer für einen Kundenservicemitarbeiter ein.
Verwenden Sie ein anderes Telefon mit einer anderen Nummer, um die neuen Nummern anzurufen, die auf dem Bildschirm angezeigt werden.
Bewertungskarten
Die Supervisor-Unterstützung bietet zwei Bewertungen:
- Der Sentimentwert pro Runde ist ein diskreter Gleitkommawert zwischen -1 und 1.
- Der Sentimentwert bis zu diesem Zeitpunkt ist ein kontinuierlicher Gleitkommawert zwischen -1 und 1.
Sie können die kontinuierlichen Sentimentwerte bis zu diesem Zeitpunkt einem benutzerdefinierten Wert zuordnen, der für verschiedene Geschäftsbereiche geeignet ist. Das folgende Beispiel veranschaulicht einen Zuordnungsansatz.
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 Schwellenwerte zu bestimmen, die die Korrelation zwischen zugeordneten Vorhersagen und dem CX-Wert 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 Sentimentmesswerte als auch Benachrichtigungen werden in einem einzelnen konfigurierten Pub/Sub-Thema veröffentlicht. Die Nutzlasten unterscheiden sich je nach Ereignistyp.
Pub/Sub-Nachrichtennutzlast für Sentimentmesswerte:
{
"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 eine geänderte Pub/Sub-Nachrichtennutzlast:
{"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 Chat-Unterhaltungen zwischen einem Endnutzer und einem menschlichen Kundenservicemitarbeiter.
- Testmethoden:
- Konsolensimulator: Verwenden Sie den Chat-Simulator der Agent Assist Console.
- API-Integration: Senden Sie direkte HTTP- oder RPC-Anfragen (siehe [Beispielcode]).
- Anwendungsfall: Überwacht Sprachunterhaltungen zwischen einem Endnutzer und einem menschlichen Kundenservicemitarbeiter.
- Testmethoden:
- Konsolensimulator: Verwenden Sie den Sprachsimulator der Agent Assist Console.
- API-Integration: Senden Sie direkte HTTP- oder RPC-Anfragen (siehe [Beispielcode]).
- Ruft die vollständige Liste der Transkripte (sowohl für Kundenservicemitarbeiter als auch für Kunden) 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 Runde zu überprüfen, nachdem der Stream beendet wurde.
ListInteractionMonitoringMetrics: Ruft alle Sentimentmesswerte ab, die für eine bestimmte Unterhaltung berechnet und aggregiert wurden.
Beispiel für eine Anfrage-Nutzlast:
{
"parent": "projects/{project-id}/locations/{location-id}",
"conversation":
"projects/{project-id}/locations/{location-id}/conversations/{conversation-id}"
}
Beispiel für eine 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. Dies kann auf ein gesamtes Projekt beschränkt 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 Benachrichtigungsstatus:
alert_state=CREATED,alert_state=ACKNOWLEDGED