Kirim survei untuk memantau kepuasan pengguna

Survei yang disesuaikan dalam percakapan Business Messages.

Untuk memastikan pengguna memiliki interaksi yang memuaskan dengan agen Anda, Google mengirimkan survei kepada pengguna setelah mereka menyelesaikan percakapan dengan agen Anda. Jika ingin mengumpulkan data dengan waktu yang berbeda, seperti di akhir percakapan, Anda dapat mengirimkan survei dalam konteks percakapan. Survei ditampilkan dalam percakapan dan memungkinkan pengguna memberikan masukan dengan berbagai opsi bergantung pada pertanyaannya.

Waktu survei yang dipicu Google bergantung pada ketersediaan pesan agen:

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 akan menggunakan 24 jam.

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

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

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

Jika Anda tidak mengirimkan survei kepada pengguna, agen Anda akan tetap menerima hasil survei Google di webhook Anda dan harus menerima serta memproses nya sebagaimana mestinya.

Pertanyaan

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

Pertanyaan wajib

Pertanyaan wajib dilokalkan di semua lokalitas yang didukung Business Messages. Pengguna dapat merespons dengan penilaian suka atau tidak suka.

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

Pertanyaan template

Pertanyaan template adalah pertanyaan opsional yang ditentukan Google dan dilokalkan di semua lokalitas yang didukung Business Messages. Survei dapat mencakup hingga dua pertanyaan template. Format respons pengguna bervariasi menurut pertanyaan.

Pertanyaan template mencakup

  • Bagaimana pengalaman Anda mengirim pesan ke AGENT_NAME?
  • Seberapa besar kemungkinan Anda merekomendasikan AGENT_NAME kepada teman?
  • Saat Anda menghubungi AGENT_NAME lagi, seberapa besar kemungkinan Anda akan memilih pesan?
  • Secara keseluruhan, seberapa mudah interaksi dengan AGENT_NAME?
  • Seberapa setuju atau tidak setujukah Anda dengan pernyataan berikut: AGENT_NAME memudahkan saya menangani masalah saya.
  • Berikan nilai kepuasan Anda secara keseluruhan terhadap bagian dukungan.
  • Apakah sesi chat ini membantu Anda menghindari panggilan ke AGENT_NAME?

Untuk melihat daftar semua pertanyaan template yang tersedia dan mendapatkan ID template,

  1. Buka Konsol Developer Komunikasi Bisnis dan login dengan akun Google Business Messages Anda.
  2. Pilih agen Anda.
  3. Di navigasi kiri, klik Survei.

Pertanyaan kustom

Survei dapat mencakup hingga dua pertanyaan kustom. Jika Anda menentukan pertanyaan kustom, sertakan versi pertanyaan untuk setiap lokalitas yang didukung agen Anda. Anda harus menentukan versi setiap pertanyaan untuk lokalitas default Anda. Jika pengguna menerima survei tetapi berada di lokalitas yang tidak memiliki versi pertanyaan kustom yang ditentukan, pertanyaan akan ditampilkan seperti yang ditentukan di lokalitas default agen.

Respons terhadap pertanyaan kustom mendukung data teks dan postback terpisah, mirip dengan balasan saran.

Menyesuaikan survei

Untuk menyesuaikan survei bagi agen,

  1. Buka Konsol Developer Komunikasi Bisnis dan login dengan akun Google Business Messages Anda.
  2. Pilih agen Anda.
  3. Di navigasi kiri, klik Survei.
  4. Tambahkan hingga dua pertanyaan template yang tersedia ke survei.
  5. Klik Buat pertanyaan kustom untuk menambahkan pertanyaan kustom ke survei Anda.

Untuk opsi pemformatan dan nilai, lihat surveyConfig.

Mengirim 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 di webhook-nya. Terima dan proses respons survei dengan cara yang sama seperti Anda menerima pesan.

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

Nilai teks untuk respons survei muncul di surveyResponse.questionResponseText. Untuk pertanyaan wajib dan template, Business Messages menampilkan respons suka sebagai VERY_SATISFIED dan respons tidak suka sebagai VERY_DISSATISFIED. Jika respons pertanyaan kustom menyertakan emoji, sebaiknya gunakan surveyResponse.questionResponsePostbackData daripada 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.