ارسال نظرسنجی برای پیگیری رضایت کاربران

نظرسنجی سفارشی در مکالمه Business Messages.

برای اطمینان از اینکه کاربران تعامل رضایت‌بخشی با نماینده شما دارند، Google نظرسنجی‌هایی را برای کاربران پس از اتمام مکالمه با نماینده شما ارسال می‌کند. اگر می‌خواهید داده‌ها را با زمان‌بندی متفاوت جمع‌آوری کنید، مثلاً در پایان مکالمه، می‌توانید نظرسنجی‌هایی را در چارچوب یک مکالمه ارسال کنید . نظرسنجی ها در مکالمه نمایش داده می شوند و به کاربران این امکان را می دهند که بسته به سؤال، با گزینه های مختلفی بازخورد ارائه کنند.

زمان‌بندی نظرسنجی‌های راه‌اندازی شده توسط Google به در دسترس بودن پیام‌رسانی نماینده بستگی دارد:

در دسترس بودن زمان بندی نظرسنجی
فقط ربات 30 دقیقه بعد از آخرین پیام
فقط انسان 24 ساعت کاری پس از آخرین پیام
ربات و انسان 24 ساعت کاری پس از آخرین پیام

اگر کمتر از 24 ساعت کاری در 7 روز آینده وجود داشته باشد، به جای آن از 24 ساعت استفاده می کنیم.

می توانید هر 24 ساعت یک نظرسنجی برای هر مکالمه ارسال کنید. اگر نظرسنجی را در یک مکالمه قبل از Google ارسال کنید، Google نظرسنجی را برای آن مکالمه ارسال نمی کند. اگر نماینده شما در عرض 24 ساعت چندین نظرسنجی را در یک مکالمه ارسال کند، Business Messages فقط سعی می‌کند اولین نظرسنجی را برای کاربر ارسال کند.

دفعه بعد که کاربر پس از تکمیل نظرسنجی با نماینده شما گفتگو را آغاز می کند، نماینده یک تبریک نمایش می دهد. اگر کاربر به نظرسنجی پاسخ ندهد، نظرسنجی پس از 7 روز منقضی می‌شود و کاربر پس از انقضای نظرسنجی، در مکالمه بعدی خود خوشامدگویی می‌بیند.

اگر زمانی که یک نظرسنجی در مکالمه فعال است، کاربر پیامی غیرمرتبط با نظرسنجی ارسال کند، Business Messages نظرسنجی را لغو می‌کند و پیام کاربر را به وب هوک نماینده ارسال می‌کند.

اگر نظرسنجی‌ها را برای کاربران ارسال نکنید، نماینده شما همچنان نتایج نظرسنجی‌های Google را در وب‌هوک شما دریافت می‌کند و باید آنها را بپذیرد و بر اساس آن پردازش کند.

سوالات

نظرسنجی ها می توانند حداکثر شامل پنج سوال باشند که به سه دسته تقسیم می شوند: الزامی ، الگو و سفارشی . یک نظرسنجی همیشه شامل سؤال مورد نیاز است، سپس حداکثر دو سؤال الگو را نمایش می دهد و سپس حداکثر دو سؤال سفارشی را نمایش می دهد.

سوال مورد نیاز

سؤال مورد نیاز در تمام مناطقی که Business Messages پشتیبانی می‌کند بومی‌سازی شده است. کاربران می توانند با انگشت شست بالا یا پایین پاسخ دهند.

سوال ضروری: "آیا این سرویس پیام رسانی نیازهای شما را با AGENT_NAME برطرف کرده است؟"

سوالات الگو

سؤالات الگو، سؤالاتی اختیاری و تعریف شده توسط Google هستند که در همه زبان‌هایی که Business Messages پشتیبانی می‌کند، بومی‌سازی می‌شوند. یک نظرسنجی می تواند شامل حداکثر دو سوال الگو باشد. فرمت های پاسخ کاربر بر اساس سوال متفاوت است.

سوالات الگو شامل

  • تجربه شما از پیام رسانی به AGENT_NAME چگونه بود؟
  • چقدر احتمال دارد که AGENT_NAME به یک دوست توصیه کنید؟
  • دفعه بعد که با AGENT_NAME تماس گرفتید، چقدر احتمال دارد پیام‌رسانی را انتخاب کنید؟
  • به طور کلی، تعامل با AGENT_NAME چقدر آسان بود؟
  • تا چه حد با عبارت زیر موافق یا مخالف هستید: AGENT_NAME رسیدگی به مشکلم را برای من آسان کرد.
  • لطفاً رضایت کلی خود را از همکار پشتیبانی ارزیابی کنید.
  • آیا این جلسه گپ به شما کمک کرد از تماس با AGENT_NAME جلوگیری کنید؟

برای دیدن لیستی از تمام سوالات قالب موجود و دریافت شناسه های الگو،

  1. کنسول توسعه‌دهنده Business Communications را باز کنید و با حساب Google Business Messages خود وارد شوید.
  2. نماینده خود را انتخاب کنید
  3. در پیمایش سمت چپ، روی نظرسنجی کلیک کنید.

سوالات سفارشی

یک نظرسنجی می تواند شامل حداکثر دو سوال سفارشی باشد. اگر یک سؤال سفارشی مشخص می‌کنید، نسخه‌هایی از سؤال را برای هر محلی که نماینده شما پشتیبانی می‌کند، اضافه کنید. شما باید یک نسخه از هر سوال را برای محلی پیش فرض خود مشخص کنید. اگر کاربر نظرسنجی را دریافت کند اما در محلی باشد که نسخه مشخصی از یک سؤال سفارشی ندارد، سؤال همانطور که در منطقه پیش‌فرض نماینده تعریف شده است نمایش داده می‌شود.

پاسخ‌ها به سؤالات سفارشی از متن جداگانه و داده‌های بازپس‌گیری پشتیبانی می‌کنند، مشابه پاسخ‌های پیشنهادی .

سفارشی کردن نظرسنجی

برای سفارشی کردن نظرسنجی برای یک نماینده،

  1. کنسول توسعه‌دهنده Business Communications را باز کنید و با حساب Google Business Messages خود وارد شوید.
  2. نماینده خود را انتخاب کنید
  3. در پیمایش سمت چپ، روی نظرسنجی کلیک کنید.
  4. حداکثر دو سؤال الگوی موجود را به نظرسنجی اضافه کنید.
  5. برای افزودن سؤالات سفارشی به نظرسنجی خود، روی ایجاد سؤال سفارشی کلیک کنید.

برای گزینه‌های قالب‌بندی و مقدار، به surveyConfig مراجعه کنید.

ارسال نظرسنجی

نظرسنجی

برای ارسال نظرسنجی دستور زیر را اجرا کنید. CONVERSATION_ID با شناسه مکالمه ای که می خواهید نظرسنجی را به آن ارسال کنید و SURVEY_ID با یک شناسه منحصر به فرد برای نظرسنجی جایگزین کنید.

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);

جاوا

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();
    }
  }
}

پایتون


"""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)

برای گزینه‌های قالب‌بندی و مقدار، به conversations.surveys مراجعه کنید.

پاسخ های نظرسنجی را دریافت کنید

هنگامی که کاربر در نظرسنجی به سؤالی پاسخ می دهد، نماینده شما پاسخ را در وب هوک خود دریافت می کند. پاسخ های نظرسنجی را به همان روشی که پیام ها را دریافت می کنید، دریافت و پردازش کنید.

همه سوالات در نظرسنجی دارای یک مقدار surveyResponse.survey هستند. اگر نظرسنجی شما شامل چندین سؤال است، مطمئن شوید که زیرساخت شما چندین پاسخ را با همان مقدار surveyResponse.survey می پذیرد و سؤالات فردی را با فیلد surveyResponse.surveyQuestionId شناسایی می کند.

مقادیر متنی برای پاسخ های نظرسنجی در surveyResponse.questionResponseText ظاهر می شود. برای سؤالات مورد نیاز و الگو، Business Messages یک پاسخ مثبت به عنوان VERY_SATISFIED و یک پاسخ مثبت به عنوان VERY_DISSATISFIED برمی‌گرداند. اگر یک پاسخ سؤال سفارشی شامل یک شکلک باشد، بهترین روش این است که به جای تجزیه و تحلیل مقدار یونیکد، به surveyResponse.questionResponsePostbackData تکیه کنید.

پاسخ های نظرسنجی فرمت زیر را دارند.

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

برای گزینه‌های قالب‌بندی و مقدار، به UserMessage and SurveyResponse مراجعه کنید.