Enviar pesquisas para acompanhar a satisfação dos usuários

Uma pesquisa personalizada em uma conversa do Business Messages.

Para garantir que os usuários tenham interações satisfatórias com seu agente, o Google envia pesquisas aos usuários depois que eles terminam de conversar com seu agente. Se você deseja coletar dados com horários diferentes, como no final uma conversa, você pode enviar pesquisas dentro do contexto de uma conversa. As pesquisas são exibidas na conversa e permitem que os usuários forneçam feedback com uma variedade de opções, dependendo da pergunta.

O tempo das pesquisas acionadas pelo Google depende das mensagens do agente disponibilidade:

Disponibilidade Marcação de tempo da pesquisa
Somente bot 30 minutos após a última mensagem
Somente para humanos 24 horas úteis após a última mensagem
Bot e humano 24 horas úteis após a última mensagem

Se houver < 24 horas úteis nos próximos 7 dias, usaremos 24 horas em vez disso.

Você pode enviar uma pesquisa por conversa a cada 24 horas. Se você enviar uma pesquisa uma conversa antes do Google, o Google não envia uma pesquisa para essa conversa. Se o agente enviar várias pesquisas na mesma conversa em 24 horas, O Business Messages só tenta enviar a primeira pesquisa ao usuário.

Na próxima vez que um usuário iniciar uma conversa com seu agente depois de concluir uma pesquisa, o agente exibe uma saudação. Se um usuário não responder a uma pesquisa, ela vai expirar em sete dias, e o o usuário vê uma saudação na próxima conversa depois que a pesquisa expira.

Se um usuário enviar uma mensagem não relacionada a uma pesquisa enquanto ela estiver ativa na conversa, o Business Messages cancela a pesquisa e envia a mensagem para o usuário. para o webhook do agente.

Se você não enviar pesquisas aos usuários, seu agente ainda receberá os resultados das pesquisas do Google no webhook e precisa aceitar e processar de acordo com elas.

Perguntas

As pesquisas podem incluir até cinco perguntas, divididas em três categorias: obrigatório, modelo e personalizado. Uma pesquisa sempre inclui a pergunta obrigatória e, em seguida, exibe até dois modelos e exibe até duas perguntas personalizadas.

Pergunta obrigatória

A pergunta necessária está localizada em todos os locais onde o Business Messages suporta. Os usuários podem responder com "Gostei" ou "Não gostei".

A pergunta obrigatória: "Este serviço de mensagens atendeu às suas necessidades com AGENT_NAME?"

Perguntas do modelo

As perguntas do modelo são opcionais, definidas pelo Google e localizadas em todas as localidades compatíveis com o recurso Business Messages. Uma pesquisa pode incluir até duas perguntas-modelo. Os formatos das respostas dos usuários variam de acordo com a pergunta.

As perguntas do modelo incluem

  • Como foi sua experiência de enviar mensagens para AGENT_NAME?
  • Qual é a probabilidade de você recomendar AGENT_NAME a um amigo?
  • Qual é a probabilidade de você entrar em contato com AGENT_NAME na próxima vez que entrar em contato escolher a troca de mensagens?
  • No geral, foi fácil interagir com AGENT_NAME?
  • Indique o quanto você concorda ou discorda da afirmação a seguir: AGENT_NAME facilitou a solução do meu problema.
  • Avalie seu nível de satisfação geral com o associado de suporte.
  • Esta sessão de chat ajudou você a evitar uma ligação para AGENT_NAME?

Para acessar uma lista com todas as perguntas dos modelos disponíveis e os IDs dos modelos,

  1. Abra o Desenvolvedor de comunicações comerciais console e faça login com sua Conta do Google no Business Messages.
  2. Escolha seu agente.
  3. No painel de navegação à esquerda, clique em Pesquisa.

Perguntas personalizadas

Uma pesquisa pode incluir até duas perguntas personalizadas. Se você especificar um pergunta, inclua versões da pergunta para cada localidade com suporte do seu agente. Você deve especificar uma versão de cada pergunta para sua localidade padrão. Se um usuário receber uma pesquisa, mas estiver em uma localidade que não tem uma versão específica de uma pergunta personalizada, ela aparece como for definida na localidade padrão do agente.

As respostas a perguntas personalizadas oferecem suporte a textos separados e dados de postback, semelhantes para as sugestões de resposta.

Personalizar uma pesquisa

Para personalizar a pesquisa de um agente,

  1. Abra o Desenvolvedor de comunicações comerciais console e faça login com sua Conta do Google no Business Messages.
  2. Escolha seu agente.
  3. No painel de navegação à esquerda, clique em Pesquisa.
  4. Adicione até duas perguntas de modelo disponíveis à pesquisa.
  5. Clique em Criar uma pergunta personalizada para adicionar perguntas personalizadas à sua pesquisa.

Para opções de formatação e valor, consulte surveyConfig

Enviar uma pesquisa

Pesquisa

Para enviar uma pesquisa, execute o comando a seguir. Substituir CONVERSATION_ID com o identificador da conversa para a qual deseja enviar a pesquisa e SURVEY_ID com um identificador exclusivo para a pesquisa.

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)

Para opções de formatação e valor, consulte conversations.surveys

Receber respostas de pesquisas

Quando um usuário responde a uma pergunta em uma pesquisa, o agente recebe a resposta no webhook. Receba e processe as respostas da pesquisa da mesma forma que recebe .

Todas as perguntas em uma pesquisa têm o mesmo valor de surveyResponse.survey. Se sua pesquisa tiver várias perguntas, verifique se a infraestrutura aceita várias respostas com o mesmo valor de surveyResponse.survey e identifica perguntas individuais no campo surveyResponse.surveyQuestionId.

Os valores de texto para as respostas da pesquisa aparecem em surveyResponse.questionResponseText: Para perguntas obrigatórias e modelos, O Business Messages retorna uma resposta "Gostei" como VERY_SATISFIED e uma marcação "Gostei" a resposta como VERY_DISSATISFIED. Se a resposta de uma pergunta personalizada incluir um emojis, é uma prática recomendada confiar no surveyResponse.questionResponsePostbackData em vez de tentar analisar Valor Unicode.

As respostas da pesquisa têm o seguinte formato.

{
  "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"
  }
}

Para opções de formatação e valor, consulte UserMessage e SurveyResponse