Umfragen senden, um die Zufriedenheit der Nutzer zu verfolgen

Eine benutzerdefinierte Umfrage in einer Business Messages-Unterhaltung.

Damit die Interaktionen der Nutzer mit dem Agent zufriedenstellend sind, sendet Google Umfragen an Nutzer, nachdem sie die Unterhaltungen mit dem Agent abgeschlossen haben. Wenn Sie Daten mit unterschiedlichem Timing erfassen möchten, z. B. am Ende einer Unterhaltung, können Sie im Kontext einer Unterhaltung Umfragen senden. Umfragen sind Teil der Unterhaltung und bieten Nutzern je nach Frage verschiedene Optionen, um Feedback zu geben.

Der Zeitpunkt der von Google ausgelösten Umfragen hängt von der Verfügbarkeit der Nachrichten des Agents ab:

Verfügbarkeit Dauer der Umfrage
Nur Bot 30 Minuten nach der letzten Nachricht
Nur für Menschen 24 Geschäftsstunden nach der letzten Nachricht
Bot und Mensch 24 Geschäftsstunden nach der letzten Nachricht

Bei weniger als 24 Geschäftsstunden in den nächsten 7 Tagen verwenden wir stattdessen 24 Stunden.

Sie können alle 24 Stunden eine Umfrage pro Unterhaltung senden. Wenn Sie eine Umfrage in einer Unterhaltung vor Google senden, sendet Google keine Umfrage an diese Unterhaltung. Wenn Ihr Agent innerhalb von 24 Stunden mehrere Umfragen in derselben Unterhaltung sendet, versucht Business Messages nur, die erste Umfrage an den Nutzer zu senden.

Wenn ein Nutzer das nächste Mal nach Abschluss einer Umfrage eine Unterhaltung mit Ihrem Agent beginnt, zeigt der Agent eine greeting an. Wenn ein Nutzer nicht an einer Umfrage teilnimmt, läuft die Umfrage nach 7 Tagen ab. Nach Ablauf der Umfrage wird in der nächsten Unterhaltung eine Begrüßung angezeigt.

Wenn ein Nutzer eine Nachricht sendet, die nichts mit einer Umfrage zu tun hat, während eine Umfrage in der Unterhaltung aktiv ist, bricht Business Messages die Umfrage ab und sendet die Nachricht des Nutzers an den Webhook des Agents.

Auch wenn Sie keine Umfragen an Nutzer senden, erhält der Agent die Ergebnisse der Umfragen von Google im Webhook und sollte sie akzeptieren und entsprechend verarbeiten.

Fragen

Umfragen können bis zu fünf Fragen enthalten, die in drei Kategorien unterteilt sind: erforderlich, Vorlage und Benutzerdefiniert. Eine Umfrage enthält immer die erforderliche Frage, dann werden bis zu zwei Vorlagenfragen und dann bis zu zwei benutzerdefinierte Fragen angezeigt.

Pflichtfrage

Die erforderliche Frage ist für alle Sprachen lokalisiert, die Business Messages unterstützt. Nutzer können mit „Mag ich“ oder „Mag ich nicht“ antworten.

Die erforderliche Frage: „War dieser Messaging-Dienst auf Ihre Anforderungen in Bezug auf AGENT_NAME eingegangen?“

Fragen zu Vorlagen

Vorlagenfragen sind optionale, von Google definierte Fragen, die in allen Sprachen lokalisiert sind, die von Business Messages unterstützt werden. Eine Umfrage kann bis zu zwei Fragenvorlage enthalten. Das Format der Nutzerantworten variiert je nach Frage.

Zu den Vorlagenfragen gehören

  • Wie hat dir die Kommunikation mit AGENT_NAME gefallen?
  • Wie wahrscheinlich ist es, dass Sie AGENT_NAME Freunden empfehlen?
  • Wenn du AGENT_NAME das nächste Mal kontaktierst, wie wahrscheinlich ist es, dass du die Nachrichtenfunktion auswählst?
  • Wie einfach war die Interaktion mit AGENT_NAME insgesamt?
  • Inwieweit stimmst du der folgenden Aussage zu: AGENT_NAME hat es mir leicht gemacht, das Problem zu lösen.
  • Bitte geben Sie an, wie zufrieden Sie insgesamt mit dem Supportmitarbeiter sind.
  • Konnten Sie mit dieser Chatsitzung einen Anruf an AGENT_NAME vermeiden?

Um eine Liste aller verfügbaren Vorlagenfragen aufzurufen und Vorlagen-IDs abzurufen,

  1. Öffnen Sie die Business Communications Developer Console und melden Sie sich mit Ihrem Google-Konto für Business Messages an.
  2. Wählen Sie den Agent aus.
  3. Klicken Sie im linken Navigationsbereich auf Umfrage.

Benutzerdefinierte Fragen

Eine Umfrage kann bis zu zwei benutzerdefinierte Fragen enthalten. Wenn Sie eine benutzerdefinierte Frage angeben, fügen Sie für jede vom Agent unterstützte Sprache Versionen der Frage hinzu. Sie müssen für jede Frage eine Version für Ihre Standardsprache angeben. Wenn ein Nutzer eine Umfrage erhält, sich aber in einer Sprache befindet, in der es keine bestimmte Version einer benutzerdefinierten Frage gibt, wird die Frage so angezeigt, wie sie in der Standardsprache des Agents definiert ist.

Antworten auf benutzerdefinierte Fragen unterstützen separate Text- und Postback-Daten, ähnlich wie bei vorgeschlagenen Antworten.

Umfrage anpassen

Um die Umfrage für einen Kundenservicemitarbeiter anzupassen,

  1. Öffnen Sie die Business Communications Developer Console und melden Sie sich mit Ihrem Google-Konto für Business Messages an.
  2. Wählen Sie den Agent aus.
  3. Klicken Sie im linken Navigationsbereich auf Umfrage.
  4. Fügen Sie der Umfrage bis zu zwei verfügbare Fragenvorlagen hinzu.
  5. Klicken Sie auf Benutzerdefinierte Frage erstellen, um Ihrer Umfrage benutzerdefinierte Fragen hinzuzufügen.

Informationen zu Formatierungs- und Wertoptionen finden Sie unter surveyConfig.

Umfrage senden

Umfrage

Führen Sie den folgenden Befehl aus, um eine Umfrage zu senden. Ersetzen Sie CONVERSATION_ID durch die ID der Unterhaltung, an die Sie die Umfrage senden möchten, und SURVEY_ID durch eine eindeutige ID für die Umfrage.

cURL

# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

#     https://www.apache.org/licenses/LICENSE-2.0

# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This code sends a survey to the user:
# Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/surveys?hl=en

# Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to
# Make sure a service account key file exists at ./service_account_key.json

curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/surveys?surveyId=f4bd7576-6c2e-4674-9db4-d697166f63ce" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/business-messages" \
-H "$(oauth2l header --json ./service_account_key.json businessmessages)"

Node.js


/**
 * This code sends a survey to the user:
 * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/surveys?hl=en
 *
 * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js
 * Business Messages client library.
 */

/**
 * Edit the values below:
 */
const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json';
const CONVERSATION_ID = 'EDIT_HERE';

const businessmessages = require('businessmessages');
const uuidv4 = require('uuid').v4;
const {google} = require('googleapis');

// Initialize the Business Messages API
const bmApi = new businessmessages.businessmessages_v1.Businessmessages({});

// Set the scope that we need for the Business Messages API
const scopes = [
  'https://www.googleapis.com/auth/businessmessages',
];

// Set the private key to the service account file
const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY);

/**
 * Posts a survey to the Business Messages API.
 *
 * @param {string} conversationId The unique id for this user and agent.
 */
async function sendSurvey(conversationId) {
  const authClient = await initCredentials();

  // Create the payload for creating a new survey
  const apiParams = {
    auth: authClient,
    parent: 'conversations/' + conversationId,
    surveyId: uuidv4(),
    resource: {}
  };

  // Call the message create function using the
  // Business Messages client library
  bmApi.conversations.surveys.create(apiParams,
    {auth: authClient}, (err, response) => {
    console.log(err);
    console.log(response);
  });
}

/**
 * Initializes the Google credentials for calling the
 * Business Messages API.
 */
 async function initCredentials() {
  // configure a JWT auth client
  const authClient = new google.auth.JWT(
    privatekey.client_email,
    null,
    privatekey.private_key,
    scopes,
  );

  return new Promise(function(resolve, reject) {
    // authenticate request
    authClient.authorize(function(err, tokens) {
      if (err) {
        reject(false);
      } else {
        resolve(authClient);
      }
    });
  });
}

sendSurvey(CONVERSATION_ID);

Java

import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.ExponentialBackOff;
import com.google.api.services.businessmessages.v1.Businessmessages;
import com.google.api.services.businessmessages.v1.model.*;
import java.io.FileInputStream;
import java.util.Arrays;
import java.util.UUID;

class SendSurveySnippet {
  /**
   * Initializes credentials used by the Business Messages API.
   */
  private static Businessmessages.Builder getBusinessMessagesBuilder() {
    Businessmessages.Builder builder = null;
    try {
      GoogleCredential credential = GoogleCredential
            .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY"));

      credential = credential.createScoped(Arrays.asList(
            "https://www.googleapis.com/auth/businessmessages"));

      credential.refreshToken();

      HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
      JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance();

      // Create instance of the Business Messages API
      builder = new Businessmessages
        .Builder(httpTransport, jsonFactory, null)
        .setApplicationName("Sample Application");

      // Set the API credentials and endpoint
      builder.setHttpRequestInitializer(credential);
    } catch (Exception e) {
      e.printStackTrace();
    }

    return builder;
  }

  public static void main(String args[]) {
    try {
      String conversationId = "CONVERSATION_ID";

      // Create client library reference
      Businessmessages.Builder builder = getBusinessMessagesBuilder();

      // Create a new survey to send to the user associated with the conversationId
      Businessmessages.Conversations.Surveys.Create request
          = bmBuilder.build().conversations().surveys()
          .create("conversations/" + conversationId,
              new BusinessMessagesSurvey());

      request.setSurveyId(UUID.randomUUID().toString());

      // Setup retries with exponential backoff
      HttpRequest httpRequest =
          ((AbstractGoogleClientRequest) request).buildHttpRequest();

      httpRequest.setUnsuccessfulResponseHandler(new
          HttpBackOffUnsuccessfulResponseHandler(
          new ExponentialBackOff()));

      // Execute request
      httpRequest.execute();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Python


"""This code sends a survey to the user.

Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/surveys?hl=en

This code is based on the https://github.com/google-business-communications/python-businessmessages
Python Business Messages client library.
"""

import uuid

from businessmessages import businessmessages_v1_client as bm_client
from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsSurveysCreateRequest
from businessmessages.businessmessages_v1_messages import BusinessMessagesSurvey
from oauth2client.service_account import ServiceAccountCredentials

# Edit the values below:
path_to_service_account_key = './service_account_key.json'
conversation_id = 'EDIT_HERE'

credentials = ServiceAccountCredentials.from_json_keyfile_name(
    path_to_service_account_key,
    scopes=['https://www.googleapis.com/auth/businessmessages'])

client = bm_client.BusinessmessagesV1(credentials=credentials)

# Create the survey request
survey_request = BusinessmessagesConversationsSurveysCreateRequest(
    surveyId=str(uuid.uuid4().int),
    parent='conversations/' + conversation_id,
    businessMessagesSurvey=BusinessMessagesSurvey())

# Send the survey
bm_client.BusinessmessagesV1.ConversationsSurveysService(
    client=client).Create(request=survey_request)

Informationen zu Formatierungs- und Wertoptionen finden Sie unter conversations.surveys.

Umfrageantworten erhalten

Wenn ein Nutzer auf eine Frage in einer Umfrage antwortet, erhält der Agent die Antwort im Webhook. Sie erhalten und verarbeiten Umfrageantworten genauso, wie Sie Nachrichten empfangen.

Alle Fragen in einer Umfrage haben denselben surveyResponse.survey-Wert. Wenn Ihre Umfrage mehrere Fragen umfasst, muss Ihre Infrastruktur mehrere Antworten mit demselben surveyResponse.survey-Wert akzeptieren und einzelne Fragen im Feld surveyResponse.surveyQuestionId identifizieren.

Textwerte für Umfrageantworten werden in surveyResponse.questionResponseText angezeigt. Bei erforderlichen und Vorlagenfragen gibt Business Messages eine „Mag ich“-Antwort als VERY_SATISFIED und eine „Mag ich nicht“-Antwort als VERY_DISSATISFIED zurück. Wenn eine benutzerdefinierte Frageantwort ein Emoji enthält, empfiehlt es sich, sich auf surveyResponse.questionResponsePostbackData zu verlassen, anstatt zu versuchen, den Unicode-Wert zu parsen.

Die Umfrageantworten haben das folgende Format.

{
  "agent": "brands/BRAND_ID/agents/AGENT_ID",
  "sendTime": "SEND_TIME",
  "conversationId": "CONVERSATION_ID",
  "requestId": "REQUEST_ID",
  "surveyResponse": {
    "survey": "conversations/CONVERSATION_ID/surveys/SURVEY_ID",
    "rating": "SURVEY_RATING",
    "createTime": "CREATE_TIME",
    "surveyQuestionId": "QUESTION_ID",
    "questionResponseText": "RESPONSE_TEXT",
    "questionResponsePostbackData": "RESPONSE_POSTBACK_DATA",
    "questionType": "QUESTION_TYPE",
    "questionIndex": QUESTION_INDEX,
    "totalQuestionCount": TOTAL_QUESTION_COUNT,
    "surveyTriggerSource": "TRIGGER_SOURCE"
  }
}

Informationen zu Formatierungs- und Wertoptionen finden Sie unter UserMessage und SurveyResponse.