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

spersonalizowaną ankietę w rozmowie w Wiadomościach Biznesowych;

Aby mieć pewność, że użytkownicy są zadowoleni z interakcji z Twoim agentem, po zakończeniu rozmowy z nim wysyłamy im ankiety. Jeśli chcesz zbierać dane w różnych momentach, np. na koniec rozmowy, możesz wysyłać ankiety w kontekście rozmowy. Ankiety wyświetlają się w rozmowie i umożliwiają użytkownikom przekazywanie opinii za pomocą różnych opcji w zależności od pytania.

Czas wysyłania ankiet przez Google zależy od dostępności agenta w zakresie przesyłania wiadomości:

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

Jeśli w ciągu najbliższych 7 dni jest mniej niż 24 godziny otwarcia, używamy 24 godzin.

Możesz wysłać 1 ankietę na rozmowę co 24 godziny. Jeśli wyślesz ankietę w rozmowie przed Google, nie wyślemy ankiety w tej rozmowie. Jeśli agent wyśle kilka ankiet w tej samej rozmowie w ciągu 24 godzin, Wiadomości Biznesowe spróbują wysłać do użytkownika tylko pierwszą ankietę.

Gdy użytkownik rozpocznie rozmowę z Twoim przedstawicielem po wypełnieniu ankiety, wyświetli on powitanie. Jeśli użytkownik nie odpowie na ankietę, wygaśnie ona po 7 dniach, a w kolejnej rozmowie po wygaśnięciu ankiety zobaczy powitanie.

Jeśli użytkownik wyśle wiadomość niezwiązaną z ankietą, gdy jest ona aktywna w rozmowie, Wiadomości Biznesowe anulują ankietę i wyślą wiadomość użytkownika do webhooka agenta.

Jeśli nie wysyłasz ankiet do użytkowników, Twój agent nadal otrzymuje wyniki ankiet Google w webhooku i powinien je odpowiednio akceptować i przetwarzać.

Pytania

Ankiety mogą zawierać maksymalnie 5 pytań podzielonych na 3 kategorie: wymagane, szablonniestandardowe. Ankieta zawsze zawiera pytanie wymagane, a potem wyświetla maksymalnie 2 pytania z szablonu i 2 pytania niestandardowe.

Pytanie wymagane

Wymagane pytanie jest przetłumaczone na wszystkie języki, w których dostępne są Wiadomości Biznesowe. Użytkownicy mogą odpowiedzieć za pomocą przycisków kciuka w górę lub w dół.

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

Pytania w szablonie

Pytania w szablonie są opcjonalnymi pytaniami zdefiniowanymi przez Google, które są zlokalizowane we wszystkich językach obsługiwanych przez Wiadomości Biznesowe. Ankieta może zawierać maksymalnie 2 pytania z szablonu. Formaty odpowiedzi użytkowników różnią się w zależności od pytania.

Przykłady pytań w szablonie:

  • Jak oceniasz rozmowę z firmą AGENT_NAME?
  • Jak bardzo prawdopodobne jest, że polecisz usługę AGENT_NAME znajomemu?
  • Kiedy następnym razem będziesz kontaktować się z firmą AGENT_NAME, jak bardzo jest prawdopodobne, że wybierzesz komunikator?
  • Jak ogólnie oceniasz łatwość interakcji z firmą AGENT_NAME?
  • W jakim stopniu zgadzasz się lub nie zgadzasz z tym stwierdzeniem: firmaAGENT_NAME ułatwiła mi rozwiązanie problemu.
  • Oceń ogólne zadowolenie ze współpracy z osobą udzielającą Ci pomocy.
  • Czy dzięki tej sesji czatu nie był konieczny kontakt z firmą AGENT_NAME?

Aby wyświetlić listę wszystkich dostępnych pytań w szablonie i uzyskać identyfikatory szablonów:

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

Pytania niestandardowe

Ankieta może zawierać maksymalnie 2 pytania niestandardowe. Jeśli określisz niestandardowe pytanie, podaj jego wersje dla każdego języka, który obsługuje Twój agent. Musisz określić wersję każdego pytania dla domyślnego języka. Jeśli użytkownik otrzyma ankietę, ale znajduje się w lokalizacji, w której nie ma określonej wersji pytania niestandardowego, pytanie wyświetli się w języku domyślnym agenta.

Odpowiedzi na pytania niestandardowe obsługują oddzielne dane tekstowe i dane zwrotne, podobnie jak sugerowane odpowiedzi.

Dostosowywanie ankiety

Aby dostosować ankietę do agenta:

  1. Otwórz Konsolę dewelopera Business Communications i zaloguj się na konto Google Business Messages.
  2. Wybierz agenta.
  3. W menu po lewej stronie kliknij Ankieta.
  4. Do ankiety możesz dodać maksymalnie 2 dostępne pytania z szablonu.
  5. Aby dodać do ankiety własne pytania, kliknij Utwórz własne pytanie.

Opcje formatowania i wartości znajdziesz w sekcji surveyConfig.

Wysyłanie ankiety

Ankieta

Aby wysłać ankietę, uruchom to polecenie. Zastąp CONVERSATION_ID identyfikatorem rozmowy, do której chcesz wysłać ankietę, a SURVEY_ID – 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)

Opcje formatowania i wartości znajdziesz w sekcji conversations.surveys.

Otrzymywanie odpowiedzi na ankiety

Gdy użytkownik odpowie na pytanie w ankiecie, Twój agent otrzyma odpowiedź w swoim webhooku. Otrzymuj i przetwarzaj odpowiedzi na ankiety w taki sam sposób, w jaki otrzymujesz wiadomości.

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

Wartości tekstowe odpowiedzi na ankietę pojawiają się w surveyResponse.questionResponseText. W przypadku wymaganych pytań i pytań z szablonu Wiadomości Biznesowe zwracają odpowiedź „Lubię” jako VERY_SATISFIED, a odpowiedź „Nie lubię” jako VERY_DISSATISFIED. Jeśli odpowiedź na pytanie niestandardowe zawiera emoji, warto polegać na surveyResponse.questionResponsePostbackData, zamiast próbować analizować wartość Unicode.

Odpowiedzi na ankietę 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"
  }
}

Opcje formatowania i wartości znajdziesz w sekcjach UserMessage i SurveyResponse.