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

یک نظرسنجی سفارشی در مکالمه پیام‌های تجاری.

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

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

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

اگر کمتر از ۲۴ ساعت کاری در ۷ روز آینده وجود داشته باشد، به جای آن از ۲۴ ساعت استفاده می‌کنیم.

شما می‌توانید هر ۲۴ ساعت یک نظرسنجی برای هر مکالمه ارسال کنید. اگر قبل از گوگل، در یک مکالمه نظرسنجی ارسال کنید، گوگل برای آن مکالمه نظرسنجی ارسال نمی‌کند. اگر نماینده شما چندین نظرسنجی را در یک مکالمه ظرف ۲۴ ساعت ارسال کند، پیام‌های تجاری فقط سعی می‌کنند اولین نظرسنجی را برای کاربر ارسال کنند.

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

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

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

سوالات

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

سوال ضروری

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

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

سوالات الگو

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

سوالات الگو شامل موارد زیر است

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

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

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

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

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

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

سفارشی‌سازی نظرسنجی

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

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

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

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

نظرسنجی

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

حلقه

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

نود جی اس

/**
 * 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 و SurveyResponse مراجعه کنید.