ব্যবহারকারীর সন্তুষ্টি ট্র্যাক করতে সমীক্ষা পাঠান

ব্যবসায়িক বার্তা কথোপকথনে একটি বিশেষভাবে তৈরি করা সমীক্ষা।

ব্যবহারকারীরা যেন আপনার এজেন্টের সাথে সন্তোষজনক অভিজ্ঞতা লাভ করেন, তা নিশ্চিত করার জন্য, গুগল আপনার এজেন্টের সাথে কথোপকথন শেষ করার পর ব্যবহারকারীদের কাছে সার্ভে পাঠায়। আপনি যদি ভিন্ন সময়ে, যেমন কোনো কথোপকথনের শেষে, ডেটা সংগ্রহ করতে চান, তবে আপনি কথোপকথনের মধ্যেই সার্ভে পাঠাতে পারেন। সার্ভেগুলো কথোপকথনের মধ্যেই প্রদর্শিত হয় এবং ব্যবহারকারীদেরকে প্রশ্নের উপর নির্ভর করে বিভিন্ন বিকল্পের মাধ্যমে মতামত জানানোর সুযোগ দেয়।

গুগল-চালিত সমীক্ষার সময় নির্ভর করে এজেন্টের মেসেজিং উপলব্ধতার উপর।

প্রাপ্যতা জরিপের সময়
শুধুমাত্র বট শেষ বার্তার ৩০ মিনিট পর
শুধুমাত্র মানুষের জন্য শেষ বার্তার ২৪ কর্মঘন্টা পর
বট এবং মানুষ শেষ বার্তার ২৪ কর্মঘন্টা পর

আগামী ৭ দিনে যদি ২৪ ঘণ্টার কম কর্মঘণ্টা থাকে, তাহলে আমরা এর পরিবর্তে ২৪ ঘণ্টা ব্যবহার করি।

আপনি প্রতি ২৪ ঘণ্টায় প্রতিটি কথোপকথনে একটি করে সমীক্ষা পাঠাতে পারবেন। আপনি যদি Google-এর আগে কোনো কথোপকথনে সমীক্ষা পাঠান, তাহলে Google সেই কথোপকথনে সমীক্ষাটি পাঠাবে না। যদি আপনার এজেন্ট ২৪ ঘণ্টার মধ্যে একই কথোপকথনে একাধিক সমীক্ষা পাঠান, তাহলে Business Messages শুধুমাত্র প্রথম সমীক্ষাটি ব্যবহারকারীকে পাঠানোর চেষ্টা করবে।

কোনো ব্যবহারকারী একটি সমীক্ষা সম্পন্ন করার পর পরবর্তী বার যখন আপনার এজেন্টের সাথে কথোপকথন শুরু করেন, তখন এজেন্ট একটি শুভেচ্ছাবার্তা প্রদর্শন করেন। যদি কোনো ব্যবহারকারী সমীক্ষায় সাড়া না দেন, তাহলে সমীক্ষাটি ৭ দিন পর মেয়াদোত্তীর্ণ হয়ে যায় এবং মেয়াদোত্তীর্ণ হওয়ার পর ব্যবহারকারী তার পরবর্তী কথোপকথনে একটি শুভেচ্ছাবার্তা দেখতে পান।

কথোপকথনে কোনো সমীক্ষা সক্রিয় থাকা অবস্থায় যদি কোনো ব্যবহারকারী সমীক্ষা-বহির্ভূত বার্তা পাঠান, তাহলে বিজনেস মেসেজেস সমীক্ষাটি বাতিল করে দেয় এবং ব্যবহারকারীর বার্তাটি এজেন্টের ওয়েবহুকে পাঠিয়ে দেয়।

আপনি ব্যবহারকারীদের কাছে সমীক্ষা না পাঠালেও, আপনার এজেন্ট আপনার ওয়েবহুকে গুগলের সমীক্ষার ফলাফল গ্রহণ করে এবং সেই অনুযায়ী সেগুলি গ্রহণ ও প্রক্রিয়া করে।

প্রশ্ন

একটি জরিপে সর্বোচ্চ পাঁচটি প্রশ্ন থাকতে পারে, যা তিনটি বিভাগে বিভক্ত: আবশ্যক , টেমপ্লেট এবং কাস্টম । একটি জরিপে সর্বদা আবশ্যক প্রশ্নটি থাকে, তারপর সর্বোচ্চ দুটি টেমপ্লেট প্রশ্ন এবং তারপর সর্বোচ্চ দুটি কাস্টম প্রশ্ন প্রদর্শিত হয়।

প্রয়োজনীয় প্রশ্ন

বিজনেস মেসেজেস দ্বারা সমর্থিত সমস্ত লোকাল জুড়ে প্রয়োজনীয় প্রশ্নটি স্থানীয়করণ করা হয়েছে। ব্যবহারকারীরা থাম্বস আপ বা থাম্বস ডাউন দিয়ে উত্তর দিতে পারেন।

প্রয়োজনীয় প্রশ্নটি হলো: "এই মেসেজিং পরিষেবাটি কি AGENT_NAME সাথে আপনার চাহিদা পূরণ করতে পেরেছে?"

টেমপ্লেট প্রশ্নাবলী

টেমপ্লেট প্রশ্ন হলো ঐচ্ছিক, গুগল-নির্ধারিত প্রশ্ন যা বিজনেস মেসেজেস দ্বারা সমর্থিত সকল লোকাল-এ স্থানীয়করণ করা হয়েছে। একটি সার্ভেতে সর্বোচ্চ দুটি টেমপ্লেট প্রশ্ন অন্তর্ভুক্ত করা যেতে পারে। ব্যবহারকারীর উত্তর দেওয়ার ধরণ প্রশ্ন অনুযায়ী ভিন্ন হয়।

টেমপ্লেট প্রশ্নগুলির মধ্যে অন্তর্ভুক্ত রয়েছে

  • AGENT_NAME মেসেজ করার অভিজ্ঞতা আপনার কেমন ছিল?
  • আপনি AGENT_NAME কে কোনো বন্ধুকে সুপারিশ করার সম্ভাবনা কতটা?
  • পরবর্তী বার AGENT_NAME সাথে যোগাযোগ করার সময়, মেসেজিং বেছে নেওয়ার সম্ভাবনা কতটা?
  • সামগ্রিকভাবে, AGENT_NAME সাথে যোগাযোগ করা কতটা সহজ ছিল?
  • নিম্নলিখিত উক্তিটির সাথে আপনি কতটা একমত বা দ্বিমত পোষণ করেন: AGENT_NAME আমার সমস্যাটি সমাধান করা সহজ করে দিয়েছেন।
  • অনুগ্রহ করে সাপোর্ট অ্যাসোসিয়েটের প্রতি আপনার সামগ্রিক সন্তুষ্টির মাত্রা জানান।
  • এই চ্যাট সেশনটি কি আপনাকে AGENT_NAME কে কল করা এড়াতে সাহায্য করেছে?

উপলব্ধ সমস্ত টেমপ্লেট প্রশ্নের তালিকা দেখতে এবং টেমপ্লেট আইডি পেতে,

  1. বিজনেস কমিউনিকেশনস ডেভেলপার কনসোলটি খুলুন এবং আপনার বিজনেস মেসেজেস গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করুন।
  2. আপনার এজেন্ট বেছে নিন।
  3. বাম দিকের নেভিগেশনে, সার্ভে-তে ক্লিক করুন।

কাস্টম প্রশ্ন

একটি সমীক্ষায় সর্বোচ্চ দুটি কাস্টম প্রশ্ন অন্তর্ভুক্ত করা যেতে পারে। আপনি যদি একটি কাস্টম প্রশ্ন নির্দিষ্ট করেন, তবে আপনার এজেন্ট যে যে লোকেল সমর্থন করে, তার প্রতিটির জন্য প্রশ্নটির সংস্করণ অন্তর্ভুক্ত করুন। আপনাকে অবশ্যই আপনার ডিফল্ট লোকেলের জন্য প্রতিটি প্রশ্নের একটি সংস্করণ নির্দিষ্ট করতে হবে। যদি কোনো ব্যবহারকারী একটি সমীক্ষা পান কিন্তু এমন একটি লোকেলে থাকেন যেখানে কাস্টম প্রশ্নের কোনো নির্দিষ্ট সংস্করণ নেই, তাহলে প্রশ্নটি এজেন্টের ডিফল্ট লোকেলে যেভাবে সংজ্ঞায়িত করা আছে সেভাবেই প্রদর্শিত হবে।

কাস্টম প্রশ্নের উত্তরগুলো সাজেস্টেড রিপ্লাইয়ের মতোই আলাদা টেক্সট এবং পোস্টব্যাক ডেটা সমর্থন করে।

একটি সমীক্ষা কাস্টমাইজ করুন

একজন এজেন্টের জন্য সমীক্ষাটি কাস্টমাইজ করতে,

  1. বিজনেস কমিউনিকেশনস ডেভেলপার কনসোলটি খুলুন এবং আপনার বিজনেস মেসেজেস গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করুন।
  2. আপনার এজেন্ট বেছে নিন।
  3. বাম দিকের নেভিগেশনে, সার্ভে-তে ক্লিক করুন।
  4. সমীক্ষায় উপলব্ধ টেমপ্লেট প্রশ্ন থেকে সর্বোচ্চ দুটি যোগ করুন।
  5. আপনার সমীক্ষায় কাস্টম প্রশ্ন যোগ করতে 'Create a custom question'-এ ক্লিক করুন।

ফরম্যাটিং এবং মানের বিকল্পগুলির জন্য, 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)"

নোড.জেএস

/**
 * 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 এ দেখা যায়। আবশ্যক এবং টেমপ্লেট প্রশ্নগুলোর ক্ষেত্রে, বিজনেস মেসেজেস একটি থাম্বস আপ রেসপন্সকে 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 দেখুন।