Wysyłaj ankiety do śledzenia zadowolenia użytkowników

Dostosowana ankieta w rozmowie w Business Messages.

Aby zapewnić użytkownikom satysfakcjonujące interakcje z pracownikiem obsługi klienta, Google wysyła ankiety do użytkowników po zakończeniu rozmowy z pracownikiem obsługi klienta. Jeśli chcesz zbierać dane w innym czasie, np. pod koniec rozmowy, możesz wysyłać ankiety na temat rozmowy. Ankiety wyświetlają się w rozmowie i pozwalają użytkownikom przekazywać z różnymi opcjami w zależności od pytania.

Czas wyświetlania ankiet wywoływanych przez Google zależy od wiadomości agenta dostępność:

Dostępność Czas trwania ankiety
Tylko bot 30 minut po ostatniej wiadomości
Tylko człowiek 24 godziny robocze od ostatniej wiadomości
Bot i ludzie 24 godziny robocze od ostatniej wiadomości

Jeśli występuje < W ciągu następnych 7 dni 24 godziny robocze, zamiast tego stosujemy 24 godziny.

Co 24 godziny możesz wysyłać 1 ankietę na rozmowę. Jeśli wyślesz ankietę w rozmowy przed Google, Google nie wysyła do niej ankiety. Jeśli w ciągu 24 godzin pracownik obsługi klienta wyśle kilka ankiet podczas tej samej rozmowy, Business Messages próbuje tylko wysłać do użytkownika pierwszą ankietę.

Następnym razem, gdy użytkownik rozpocznie rozmowę z pracownikiem obsługi klienta po ukończeniu pracownik obsługi klienta wyświetla powitanie. Jeśli użytkownik nie odpowie na ankietę, ankieta wygaśnie po 7 dniach, a użytkownik zobaczy powitanie w następnej rozmowie po wygaśnięciu ankiety.

Jeśli użytkownik wyśle wiadomość niezwiązaną z ankietą w czasie, gdy ankieta jest aktywna w rozmowy, Business Messages anuluje ankietę i wysyła wiadomość użytkownika do webhooka agenta.

Jeśli nie wyślesz ankiet do użytkowników, agent nadal otrzyma z wynikami ankiet Google na Twoim webhooku. Powinno je zaakceptować i przetworzyć odpowiednio je dostosować.

Pytania

Ankiety mogą zawierać maksymalnie 5 pytań podzielonych na 3 kategorie: required, template i custom. Ankieta zawsze zawiera wymagane pytanie, po czym wyświetla maksymalnie 2 szablony a potem maksymalnie 2 pytania niestandardowe.

Wymagane pytanie

Wymagane pytanie jest przetłumaczone na wszystkie języki, w których działa Business Messages obsługuje. Użytkownicy mogą odpowiedzieć kciukiem w górę lub w dół.

Wymagane pytanie: „Czy ta usługa przesyłania wiadomości zaspokoi Twoje potrzeby związane z AGENT_NAME?”

Pytania dotyczące szablonów

Pytania szablonowe to opcjonalne pytania zdefiniowane przez Google, które są zlokalizowane we wszystkich regionach obsługiwanych przez Business Messages. Ankieta może zawierać maksymalnie dwóch pytań wzorcowych. Formaty odpowiedzi użytkowników różnią się w zależności od pytania.

Pytania dotyczące szablonu obejmują

  • Jak oceniasz kontakt z firmą AGENT_NAME?
  • Jak bardzo prawdopodobne jest, że polecisz usługę AGENT_NAME znajomym?
  • Jakie jest prawdopodobieństwo, że następnym razem, gdy będziesz kontaktować się z firmą AGENT_NAME, wybrać wiadomości?
  • Jak ogólnie oceniasz łatwość interakcji z usługą AGENT_NAME?
  • W jakim stopniu zgadzasz się z tym stwierdzeniem: Usługa AGENT_NAME ułatwiła mi rozwiązanie problemu.
  • Określ ogólny poziom swojego zadowolenia ze współpracy z pracownikiem zespołu pomocy.
  • Czy ta sesja czatu pomogła Ci uniknąć połączenia z numerem AGENT_NAME?

Aby zobaczyć listę wszystkich dostępnych pytań szablonów i uzyskać identyfikatory szablonów:

  1. Otwórz aplikację Business Communications Developer. Konsola i zaloguj się na konto Google Business Messages.
  2. Wybierz agenta.
  3. W menu nawigacyjnym po lewej stronie kliknij Ankieta.

Pytania niestandardowe

Ankieta może zawierać maksymalnie 2 pytania niestandardowe. Jeśli określisz parametr niestandardowy Podaj wersje odpowiedzi do każdego z nich język obsługiwanych przez agenta. Musisz określić wersję każdego pytania język domyślny. Jeśli użytkownik otrzymuje ankietę, ale znajduje się w regionie, w którym nie stosuje się określonej wersji pytania niestandardowego, pytanie wyświetla się zgodnie z definicją w domyślnym języku agenta.

Odpowiedzi na pytania niestandardowe obsługują oddzielne dane tekstowe i wywołania zwrotne, podobnie jak do sugerowanych odpowiedzi.

Dostosowywanie ankiety

Aby dostosować ankietę dla pracownika obsługi klienta:

  1. Otwórz aplikację Business Communications Developer. Konsola i zaloguj się na konto Google Business Messages.
  2. Wybierz agenta.
  3. W menu nawigacyjnym po lewej stronie kliknij Ankieta.
  4. Dodaj do ankiety maksymalnie 2 dostępne szablony pytań.
  5. Kliknij Utwórz pytanie niestandardowe, aby dodać do ankiety pytania niestandardowe.

Informacje o opcjach formatowania i wartości znajdziesz w surveyConfig

Wyślij ankietę

Ankieta

Aby wysłać ankietę, uruchom to polecenie. Zastąp CONVERSATION_ID identyfikator rozmowy, do której chcesz wysłać ankietę, oraz SURVEY_ID z unikalnym identyfikatorem ankiety.

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)

Informacje o opcjach formatowania i wartości znajdziesz w conversations.surveys

Otrzymuj odpowiedzi na pytania z ankiety

Gdy użytkownik odpowie na pytanie w ankiecie, pracownik obsługi klienta otrzyma odpowiedź na jego webhooka. Odpowiedzi na ankiety możesz otrzymywać i przetwarzać w ten sam sposób wiadomości.

Wszystkie pytania w ankiecie mają taką samą wartość surveyResponse.survey. Jeśli ankieta zawiera wiele pytań, upewnij się, że Twoja infrastruktura akceptuje wiele odpowiedzi z tą samą wartością surveyResponse.survey i określa poszczególne pytania obok pola surveyResponse.surveyQuestionId.

Wartości tekstowe odpowiedzi w ankiecie pojawiają się tutaj: surveyResponse.questionResponseText W przypadku pytań wymaganych i szablonów: Business Messages zwraca odpowiedź „Lubię” jako VERY_SATISFIED i kciuk w górę jako VERY_DISSATISFIED. Jeśli odpowiedź na niestandardowe pytanie zawiera tag emotikonów, najlepiej jest polegać surveyResponse.questionResponsePostbackData, zamiast analizować parametr Wartość Unicode.

Odpowiedzi w ankiecie mają następujący 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"
  }
}

Informacje o opcjach formatowania i wartości znajdziesz w UserMessage oraz SurveyResponse