כדי לוודא שהאינטראקציות עם הנציג שלך מתאימות למשתמשים, Google שולח סקרים למשתמשים אחרי שהם מסיימים את השיחות עם הנציג שלך. אם המיקום שרוצים לאסוף נתונים בתזמון שונה, כמו שיחה, תוכלו לשלוח סקרים בהקשר שיחה. הסקרים מוצגים בשיחה ומאפשרים למשתמשים לספק משוב עם מגוון אפשרויות, בהתאם לשאלה.
תזמון הסקרים ש-Google מפעילה תלוי בהעברת ההודעות של הנציג availability [זמינות]:
זמינות | תזמון הסקר |
---|---|
בוט בלבד | 30 דקות אחרי ההודעה האחרונה |
לבני אדם בלבד | 24 שעות עסקים אחרי ההודעה האחרונה |
בוט וסרטון אנושי | 24 שעות עסקים אחרי ההודעה האחרונה |
אם יש < 24 שעות פעילות ב-7 הימים הבאים, אלא 24 שעות.
אפשר לשלוח סקר אחד בכל שיחה כל 24 שעות. אם שולחים סקר ב: שיחה לפני Google, Google לא שולחת סקר לשיחה הזו. אם הנציג ישלח כמה סקרים באותה שיחה תוך 24 שעות, אפליקציית Business Messages מנסה רק לשלוח את הסקר הראשון למשתמש.
בפעם הבאה שמשתמש מתחיל שיחה עם הנציג אחרי שהוא משלים שיחה הסקר, הנציג יציג הודעת פתיחה. אם משתמש לא עונה על סקר, התוקף שלו פג אחרי 7 ימים. משתמש יראה הודעת פתיחה בשיחה הבאה שלו אחרי שתוקף הסקר יפוג.
אם משתמש שולח הודעה שלא קשורה לסקר בזמן שהסקר פעיל שיחה, Business Messages מבטלת את הסקר ושולחת את ההודעה של המשתמש ל-webhook של הנציג.
גם אם לא שולחים סקרים למשתמשים, הנציג עדיין יקבל את תוצאות הסקרים של Google ב-webhook, ועליך לאשר ולעבד אותם בהתאם.
שאלות
הסקרים יכולים לכלול עד חמש שאלות, המחולקות לשלוש קטגוריות: חובה, תבנית ומותאם אישית. סקר כוללת תמיד את השאלה הנדרשת, ואז מציגה עד שתי תבניות שאלות מותאמות אישית, ואז מציג עד שתי שאלות מותאמות אישית.
שאלה נדרשת
השאלה הנדרשת מותאמת לשוק המקומי בכל הלוקאלים שבהם Business Messages נתמך. המשתמשים יכולים להגיב בלייק או דיסלייק.
שאלת השאלה הנדרשת: "האם שירות ההודעות הזה ענה על הצרכים שלך מול
שאלות על תבנית
שאלות התבנית הן שאלות אופציונליות המוגדרות על ידי Google שמתאימות לשוק המקומי בכל הלוקאלים שבהם Business Messages תומך. סקר יכול לכלול עד שתי שאלות תבנית. הפורמטים של תגובת המשתמשים משתנים בהתאם לשאלה.
שאלות התבנית כוללות
- איך הייתה חוויית שליחת ההודעות אל AGENT_NAME?
- מה הסבירות שחברים יקבלו ממך המלצה על AGENT_NAME?
- בפעם הבאה שתיצרו קשר עם AGENT_NAME, מה הסבירות לבחור העברת הודעות?
- באופן כללי, עד כמה היה לך קל לקיים אינטראקציה עם AGENT_NAME?
- עד כמה המשפט הבא נכון לדעתך: היה לי קל לפתור את הבעיה של AGENT_NAME.
- מה רמת שביעות הרצון הכללית שלך מנציג התמיכה?
- האם שיחת הצ'אט הזו עזרה לך להימנע מהתקשרות אל AGENT_NAME?
כדי לראות רשימה של כל השאלות הזמינות בתבניות ולקבל מזהי תבניות:
- פותחים את מפתח התקשורת העסקית מסוף ונכנסים באמצעות חשבון Google ב-Business Messages.
- בוחרים נציג.
- בתפריט הניווט הימני, לוחצים על סקר.
שאלות מותאמות אישית
סקר יכול לכלול עד שתי שאלות מותאמות אישית. אם מציינים צריך לכלול גרסאות של השאלה בכל אחד מהם לוקאל שנתמך על ידי הנציג שלכם. עליך לציין גרסה של כל שאלה עבור לוקאל ברירת המחדל. אם משתמש מקבל סקר, אבל נמצא במיקום ללא גרסה ספציפית של שאלה מותאמת אישית, השאלה מוצגת כפי שהיא מוגדרת בלוקאל ברירת המחדל של הסוכן.
תשובות לשאלות מותאמות אישית תומכות בנתונים נפרדים של טקסט ודיווח חוזר, להצעות תשובות.
התאמה אישית של סקר
כדי להתאים אישית את הסקר לנציג:
- פותחים את מפתח התקשורת העסקית מסוף ונכנסים באמצעות חשבון Google ב-Business Messages.
- בוחרים נציג.
- בתפריט הניווט הימני, לוחצים על סקר.
- אפשר להוסיף לסקר עד שתי שאלות זמינות בתבנית.
- לוחצים על יצירת שאלה בהתאמה אישית כדי להוסיף שאלות מותאמות אישית לסקר.
לאפשרויות עיצוב וערך:
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
קבלת תשובות לסקר
כשמשתמש משיב על שאלה בסקר, הנציג מקבל תשובה ב-webhook שלו. לקבל ולעבד תשובות לסקרים באותו אופן שבו אתם מקבלים הודעות.
לכל השאלות בסקר יש ערך surveyResponse.survey
זהה. אם המיקום
הסקר שלכם כולל כמה שאלות, ודאו שהתשתית שלכם מקבלת
כמה תגובות עם אותו ערך של surveyResponse.survey
ומזהה
לשאלות נפרדות בשדה surveyResponse.surveyQuestionId
.
ערכי הטקסט של התשובות לסקר מופיעים כאן
surveyResponse.questionResponseText
לשאלות חובה ותבניות,
התכונה Business Messages מחזירה תשובה של 'אהבתי' ו-VERY_SATISFIED
תגובה למטה כ-VERY_DISSATISFIED
. אם תשובה מותאמת אישית לשאלה כוללת
מומלץ להסתמך על
surveyResponse.questionResponsePostbackData
במקום לנסות לנתח את
ערך Unicode.
התשובות לסקר מופיעות בפורמט הבא.
{ "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