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 o agente. Se você quiser coletar dados em momentos diferentes, como ao final de uma conversa, envie pesquisas no contexto de uma conversa. As pesquisas aparecem na conversa e permitem que os usuários forneçam feedback com várias opções, dependendo da pergunta.
O tempo das pesquisas acionadas pelo Google depende da disponibilidade de mensagens do agente:
Disponibilidade | Tempo da pesquisa |
---|---|
Somente bots | 30 minutos após a última mensagem |
Apenas para humanos | 24 horas úteis após a última mensagem |
Robô e humano | 24 horas úteis após a última mensagem |
Se houver menos de 24 horas úteis nos próximos sete dias, usaremos 24 horas.
Você pode enviar uma pesquisa por conversa a cada 24 horas. Se você enviar uma pesquisa em uma conversa antes do Google, o Google não enviará uma pesquisa para essa conversa. Se o agente enviar várias pesquisas na mesma conversa em 24 horas, o Business Messages só vai tentar enviar a primeira pesquisa ao usuário.
Na próxima vez que um usuário iniciar uma conversa com o agente depois de responder a uma pesquisa, o agente exibirá uma greeting. Se um usuário não responder a uma pesquisa, ela expira após sete dias, e o usuário vê uma saudação na próxima conversa após o término da pesquisa.
Se um usuário enviar uma mensagem não relacionada a uma pesquisa enquanto ela estiver ativa na conversa, o Business Messages cancelará a pesquisa e enviará a mensagem do 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 precisará aceitar e processá-los de acordo.
Dúvidas
As pesquisas podem incluir até cinco perguntas, divididas em três categorias: obrigatórias, modelo e personalizada. Uma pesquisa sempre inclui a pergunta obrigatória, exibe até duas perguntas de modelo e, em seguida, exibe até duas perguntas personalizadas.
Pergunta obrigatória
A pergunta obrigatória está localizada em todas as localidades compatíveis com o Business Messages. Os usuários podem responder com um "Gostei" ou "Não gostei".
A pergunta necessária: "Este serviço de mensagens atendeu às suas necessidades com AGENT_NAME?"
Perguntas sobre o modelo
As perguntas de modelo são opcionais definidas pelo Google e estão disponíveis em todos os locais compatíveis com o Business Messages. Uma pesquisa pode incluir até duas perguntas de modelo. Os formatos de resposta do usuário 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 o produto AGENT_NAME a um amigo?
- Qual é a probabilidade de você escolher a mensagem da próxima vez que entrar em contato com AGENT_NAME?
- No geral, foi fácil interagir com AGENT_NAME?
- Classifique o quanto você concorda com a seguinte afirmação: A AGENT_NAME facilitou para que eu fosse lidar com meu problema.
- Qual é seu nível de satisfação com o atendente de suporte?
- Essa sessão de chat ajudou você a evitar uma ligação para AGENT_NAME?
Para ver uma lista de todas as perguntas de modelo disponíveis e ver os IDs dos modelos,
- Abra o console para desenvolvedores do Business Communications e faça login com sua Conta do Google do Business Messages.
- Escolha seu agente.
- No painel de navegação à esquerda, clique em Pesquisa.
Perguntas personalizadas
Uma pesquisa pode incluir até duas perguntas personalizadas. Se você especificar uma pergunta personalizada, inclua versões da pergunta para cada localidade compatível com seu agente. É necessário 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 especificada de uma pergunta personalizada, a pergunta vai ser exibida conforme definido na localidade padrão do agente.
As respostas às perguntas personalizadas são compatíveis com dados de texto e postback separados, de maneira semelhante às respostas sugeridas.
Personalizar uma pesquisa
Para personalizar a pesquisa para um agente,
- Abra o console para desenvolvedores do Business Communications e faça login com sua Conta do Google do Business Messages.
- Escolha seu agente.
- No painel de navegação à esquerda, clique em Pesquisa.
- Adicione até duas perguntas de modelo disponíveis à pesquisa.
- 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
Para enviar uma pesquisa, execute o comando a seguir. Substitua CONVERSATION_ID pelo identificador da conversa para a qual você quer enviar a pesquisa e SURVEY_ID por um identificador exclusivo da 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 a pesquisas
Quando um usuário responde a uma pergunta em uma pesquisa, seu agente recebe a resposta no webhook. Receba e processe as respostas da pesquisa da mesma forma que você recebe mensagens.
Todas as perguntas de uma pesquisa têm o mesmo valor de surveyResponse.survey
. Se a pesquisa incluir várias perguntas, verifique se a infraestrutura aceita várias respostas com o mesmo valor surveyResponse.survey
e identifica perguntas individuais pelo campo surveyResponse.surveyQuestionId
.
Os valores de texto das respostas da pesquisa aparecem em surveyResponse.questionResponseText
. Para perguntas obrigatórias e de modelo, o Business Messages retorna uma resposta de "Gostei" como VERY_SATISFIED
e uma resposta de "Não gostei" como VERY_DISSATISFIED
. Se uma resposta de pergunta personalizada incluir um
emoji, é uma prática recomendada confiar no
surveyResponse.questionResponsePostbackData
em vez de tentar analisar o
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
.