Kirim survei untuk memantau kepuasan pengguna

Survei yang disesuaikan dalam percakapan Business Messages.

Untuk memastikan pengguna memiliki interaksi yang memuaskan dengan agen Anda, Google mengirim survei ke pengguna setelah mereka menyelesaikan percakapan dengan agen Anda. Jika Anda ingin mengumpulkan data dengan waktu yang berbeda, seperti pada akhir percakapan, Anda dapat mengirim survei dalam konteks percakapan. Survei ditampilkan dalam percakapan dan memungkinkan pengguna untuk memberikan masukan dengan berbagai pilihan yang tergantung pada pertanyaan.

Waktu survei yang dipicu Google bergantung pada fitur pesan agen ketersediaan:

Ketersediaan Waktu survei
Khusus bot 30 menit setelah pesan terakhir
Khusus manusia 24 jam kerja setelah pesan terakhir
Bot dan manusia 24 jam kerja setelah pesan terakhir

Jika ada < 24 jam kerja dalam 7 hari ke depan, kami menggunakan 24 jam sebagai gantinya.

Anda dapat mengirim satu survei per percakapan setiap 24 jam. Jika Anda mengirim survei dalam percakapan sebelum Google, Google tidak mengirimkan survei ke percakapan tersebut. Jika agen Anda mengirim beberapa survei dalam percakapan yang sama dalam waktu 24 jam, Business Messages hanya akan mencoba mengirimkan survei pertama kepada pengguna.

Saat berikutnya pengguna memulai percakapan dengan agen Anda setelah menyelesaikan survei, agen akan menampilkan salam. Jika pengguna tidak merespons survei, masa berlaku survei akan berakhir setelah 7 hari, dan pengguna melihat salam dalam percakapan berikutnya setelah survei berakhir.

Jika pengguna mengirim pesan yang tidak terkait dengan survei saat survei aktif di percakapan, Business Messages akan membatalkan survei dan mengirim pesan pengguna ke webhook agen.

Jika Anda tidak mengirim survei kepada pengguna, agen Anda tetap menerima hasil survei Google di webhook Anda dan harus menerima serta memproses dengan tepat.

Pertanyaan

Survei dapat mencakup hingga lima pertanyaan, yang dibagi menjadi tiga kategori: wajib, template, dan kustom. Sebuah survei selalu menyertakan pertanyaan yang diperlukan, lalu menampilkan hingga dua template pertanyaan, dan kemudian menampilkan hingga dua pertanyaan khusus.

Pertanyaan wajib

Pertanyaan yang diperlukan dilokalkan di semua lokalitas tempat Business Messages didukung. Pengguna dapat merespons dengan mengacungkan jempol ke atas atau ke bawah.

Pertanyaan yang diperlukan: "Apakah layanan pesan ini memenuhi kebutuhan Anda dengan AGENT_NAME?"

Pertanyaan tentang template

Pertanyaan template adalah pertanyaan opsional yang ditetapkan Google dan dilokalkan di semua lokalitas yang didukung Business Messages. Survei dapat mencakup hingga dua pertanyaan {i>template<i}. Format respons pengguna bervariasi menurut pertanyaan.

Pertanyaan {i>template<i} mencakup

  • Bagaimana pengalaman Anda saat mengirim pesan ke AGENT_NAME?
  • Seberapa besar kemungkinan Anda merekomendasikan AGENT_NAME kepada teman?
  • Saat berikutnya Anda menghubungi AGENT_NAME, seberapa besar kemungkinan Anda akan pilih pesan?
  • Secara keseluruhan, seberapa mudah berinteraksi dengan AGENT_NAME?
  • Sejauh mana Anda setuju atau tidak setuju dengan pernyataan berikut: AGENT_NAME memudahkan saya untuk menangani masalah saya.
  • Berikan nilai kepuasan Anda secara keseluruhan terhadap staf dukungan.
  • Apakah sesi chat ini membantu Anda menghindari panggilan ke AGENT_NAME?

Untuk melihat daftar semua pertanyaan {i>template<i} yang tersedia dan mendapatkan ID {i>template<i},

  1. Buka Business Communications Developer Konsol dan login dengan Akun Google Business Messages Anda.
  2. Pilih agen Anda.
  3. Di navigasi sebelah kiri, klik Survei.

Pertanyaan kustom

Survei dapat mencakup hingga dua pertanyaan khusus. Jika Anda menentukan pertanyaan, sertakan versi pertanyaan untuk setiap lokal yang didukung agen Anda. Anda harus menentukan versi dari setiap pertanyaan untuk lokalitas default. Jika pengguna menerima survei, tetapi berada di lokalitas yang tidak memiliki versi tertentu dari pertanyaan kustom, pertanyaan tersebut akan ditampilkan sebagaimana didefinisikan dalam bahasa default agen.

Respons terhadap pertanyaan kustom mendukung teks terpisah dan data postback yang serupa ke disarankan balasan.

Menyesuaikan survei

Untuk menyesuaikan survei agen,

  1. Buka Business Communications Developer Konsol dan login dengan Akun Google Business Messages Anda.
  2. Pilih agen Anda.
  3. Di navigasi sebelah kiri, klik Survei.
  4. Tambahkan maksimum dua pertanyaan {i>template<i} yang tersedia ke survei.
  5. Klik Buat pertanyaan kustom untuk menambahkan pertanyaan kustom ke survei Anda.

Untuk opsi pemformatan dan nilai, lihat surveyConfig

Kirim survei

Survei

Untuk mengirim survei, jalankan perintah berikut. Ganti CONVERSATION_ID dengan ID percakapan yang ingin Anda kirimi survei dan SURVEY_ID dengan ID unik untuk survei.

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)

Untuk opsi pemformatan dan nilai, lihat conversations.surveys

Menerima respons survei

Saat pengguna merespons pertanyaan dalam survei, agen Anda akan menerima respons tersebut di webhook-nya. Menerima dan memproses respons survei dengan cara yang sama seperti Anda menerima pesan.

Semua pertanyaan dalam survei memiliki nilai surveyResponse.survey yang sama. Jika survei Anda mencakup beberapa pertanyaan, pastikan infrastruktur Anda menerima beberapa respons dengan nilai surveyResponse.survey yang sama dan mengidentifikasi pertanyaan individual di kolom surveyResponse.surveyQuestionId.

Nilai teks untuk respons survei muncul di surveyResponse.questionResponseText. Untuk pertanyaan wajib dan {i>template<i}, Business Messages akan menampilkan respons suka sebagai VERY_SATISFIED dan ikon jempol turun sebagai VERY_DISSATISFIED. Jika jawaban pertanyaan khusus menyertakan adalah praktik terbaik untuk mengandalkan surveyResponse.questionResponsePostbackData, bukan mencoba mengurai Nilai unicode.

Respons survei memiliki format berikut.

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

Untuk opsi pemformatan dan nilai, lihat UserMessage dan SurveyResponse.