Envoyer des enquêtes pour suivre la satisfaction des utilisateurs

Enquête personnalisée dans une conversation Business Messages.

Pour s'assurer que les utilisateurs ont des interactions satisfaisantes avec votre agent, Google leur envoie des enquêtes une fois qu'ils ont terminé leurs conversations avec votre agent. Si vous souhaitez collecter des données avec des délais différents, par exemple à la fin d'une conversation, vous pouvez envoyer des enquêtes dans le contexte d'une conversation. Les enquêtes s'affichent dans les conversations et permettent aux utilisateurs de fournir des commentaires avec différentes options en fonction de la question.

La chronologie des enquêtes déclenchées par Google dépend de la disponibilité de la messagerie de l'agent:

Garantie de disponibilité Calendrier de l'enquête
Robot uniquement 30 minutes après le dernier message
Humain seulement 24 heures ouvrées après le dernier message
Bot et humain 24 heures ouvrées après le dernier message

S'il y a moins de 24 heures ouvrées dans les sept prochains jours, nous utilisons 24 heures à la place.

Vous pouvez envoyer une enquête par conversation toutes les 24 heures. Si vous envoyez une enquête dans une conversation avant Google, Google n'enverra pas d'enquête à cette conversation. Si votre agent envoie plusieurs enquêtes dans la même conversation dans un délai de 24 heures, Business Messages ne tente d'envoyer que la première enquête à l'utilisateur.

La prochaine fois qu'un utilisateur entame une conversation avec votre agent après avoir répondu à une enquête, celui-ci affiche un greeting. Si un utilisateur ne répond pas à une enquête, celle-ci expire au bout de sept jours et voit un message d'accueil dans sa prochaine conversation après expiration de l'enquête.

Si un utilisateur envoie un message sans rapport avec une enquête alors qu'une enquête est active dans la conversation, Business Messages annule l'enquête et envoie le message de l'utilisateur au webhook de l'agent.

Si vous n'envoyez pas d'enquêtes aux utilisateurs, votre agent reçoit toujours les résultats des enquêtes de Google au niveau de votre webhook, et doit les accepter et les traiter en conséquence.

Questions

Les enquêtes peuvent inclure jusqu'à cinq questions, réparties en trois catégories : obligatoire, modèle et personnalisée. Une enquête comprend toujours la question requise, puis affiche jusqu'à deux questions du modèle, puis affiche jusqu'à deux questions personnalisées.

Question obligatoire

La question obligatoire est localisée dans tous les paramètres régionaux pris en charge par Business Messages. Les utilisateurs peuvent répondre en choisissant "J'aime" ou "Je n'aime pas".

La question obligatoire: "Ce service de messagerie a-t-il répondu à vos besoins concernant AGENT_NAME ?"

Modèles de questions

Les modèles de questions sont des questions facultatives définies par Google et localisées dans toutes les langues prises en charge par Business Messages. Une enquête peut inclure jusqu'à deux modèles de questions. Les formats de réponse varient en fonction des questions.

Les questions du modèle comprennent

  • Quelle était la qualité de votre conversation avec AGENT_NAME via l'option Messages ?
  • Quelle est la probabilité que vous recommandiez AGENT_NAME à un ami ?
  • La prochaine fois que vous contacterez AGENT_NAME, quelle est la probabilité que vous choisissiez de lui envoyer un message ?
  • Dans l'ensemble, dans quelle mesure était-il facile d'interagir avec AGENT_NAME ?
  • Êtes-vous d'accord avec l'affirmation suivante : AGENT_NAME m'a aidé à résoudre mon problème facilement ?
  • Veuillez évaluer votre niveau de satisfaction général envers l'agent du service client.
  • Cette session de chat vous a-t-elle permis de ne pas appeler AGENT_NAME ?

Pour afficher la liste de tous les modèles de questions disponibles et obtenir les ID de modèle,

  1. Ouvrez la console pour les développeurs Business Communications et connectez-vous avec votre compte Google Business Messages.
  2. Choisissez votre agent.
  3. Dans le volet de navigation de gauche, cliquez sur Enquête.

Questions personnalisées

Une enquête peut inclure jusqu'à deux questions personnalisées. Si vous spécifiez une question personnalisée, incluez des versions de la question pour chaque paramètres régionaux compatibles avec votre agent. Vous devez spécifier une version de chaque question pour vos paramètres régionaux par défaut. Si un utilisateur reçoit une enquête, mais se trouve dans une langue qui n'a pas de version spécifique d'une question personnalisée, la question s'affiche telle qu'elle est définie dans les paramètres régionaux par défaut de l'agent.

Les réponses aux questions personnalisées acceptent des données de texte et de postback distinctes, de la même manière que les réponses suggérées.

Personnaliser une enquête

Pour personnaliser l'enquête pour un agent, procédez comme suit :

  1. Ouvrez la console pour les développeurs Business Communications et connectez-vous avec votre compte Google Business Messages.
  2. Choisissez votre agent.
  3. Dans le volet de navigation de gauche, cliquez sur Enquête.
  4. Ajoutez jusqu'à deux modèles de questions à l'enquête.
  5. Cliquez sur Créer une question personnalisée pour en ajouter à votre enquête.

Pour en savoir plus sur les options de mise en forme et de valeur, consultez surveyConfig.

Envoyer une enquête

Enquête

Pour envoyer une enquête, exécutez la commande suivante. Remplacez CONVERSATION_ID par l'identifiant de la conversation à laquelle vous souhaitez envoyer l'enquête et SURVEY_ID par un identifiant unique pour l'enquête.

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)

Pour en savoir plus sur les options de mise en forme et de valeur, consultez conversations.surveys.

Recevoir les réponses à l'enquête

Lorsqu'un utilisateur répond à une question dans une enquête, votre agent reçoit la réponse sur son webhook. Recevez et traitez les réponses aux enquêtes de la même manière que vous recevez des messages.

Toutes les questions d'une enquête ont la même valeur surveyResponse.survey. Si votre enquête comprend plusieurs questions, assurez-vous que votre infrastructure accepte plusieurs réponses avec la même valeur surveyResponse.survey et identifie les questions individuelles à l'aide du champ surveyResponse.surveyQuestionId.

Les valeurs textuelles des réponses aux enquêtes apparaissent dans surveyResponse.questionResponseText. Pour les questions obligatoires et modèles, Business Messages renvoie une réponse "J'aime" (VERY_SATISFIED) et une réponse "J'aime" au format VERY_DISSATISFIED. Si une réponse à une question personnalisée inclut un emoji, il est recommandé de s'appuyer sur surveyResponse.questionResponsePostbackData plutôt que d'essayer d'analyser la valeur Unicode.

Les réponses à l'enquête se présentent comme suit.

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

Pour en savoir plus sur les options de mise en forme et de valeur, consultez UserMessage et SurveyResponse.