Để đảm bảo người dùng có những lượt tương tác hài lòng với nhân viên hỗ trợ của bạn, Google sẽ gửi các bản khảo sát cho người dùng sau khi họ hoàn tất cuộc trò chuyện với nhân viên hỗ trợ của bạn. Nếu muốn thu thập dữ liệu vào những thời điểm khác nhau, chẳng hạn như vào cuối cuộc trò chuyện, bạn có thể gửi khảo sát trong bối cảnh của cuộc trò chuyện. Khảo sát xuất hiện trong cuộc trò chuyện và cho phép người dùng đưa ra ý kiến phản hồi bằng nhiều lựa chọn tuỳ thuộc vào câu hỏi.
Thời điểm Google kích hoạt khảo sát phụ thuộc vào khả năng cung cấp dịch vụ nhắn tin của nhân viên hỗ trợ:
| Phạm vi cung cấp | Thời gian khảo sát |
|---|---|
| Chỉ bot | 30 phút sau tin nhắn cuối cùng |
| Chỉ có người | 24 giờ hoạt động sau tin nhắn cuối cùng |
| Bot và con người | 24 giờ hoạt động sau tin nhắn cuối cùng |
Nếu có < 24 giờ hoạt động trong 7 ngày tiếp theo, chúng tôi sẽ sử dụng 24 giờ.
Bạn có thể gửi một bản khảo sát cho mỗi cuộc trò chuyện sau mỗi 24 giờ. Nếu bạn gửi một bản khảo sát trong cuộc trò chuyện trước Google, thì Google sẽ không gửi bản khảo sát cho cuộc trò chuyện đó. Nếu nhân viên hỗ trợ của bạn gửi nhiều bản khảo sát trong cùng một cuộc trò chuyện trong vòng 24 giờ, thì Business Messages chỉ cố gắng gửi bản khảo sát đầu tiên cho người dùng.
Lần tiếp theo khi người dùng bắt đầu trò chuyện với tác nhân sau khi hoàn tất một bản khảo sát, tác nhân sẽ hiển thị một lời chào. Nếu người dùng không phản hồi một bản khảo sát, thì bản khảo sát đó sẽ hết hạn sau 7 ngày và người dùng sẽ thấy lời chào trong cuộc trò chuyện tiếp theo sau khi bản khảo sát hết hạn.
Nếu người dùng gửi một tin nhắn không liên quan đến một bản khảo sát trong khi bản khảo sát đang hoạt động trong cuộc trò chuyện, thì Business Messages sẽ huỷ bản khảo sát và gửi tin nhắn của người dùng đến webhook của nhân viên hỗ trợ.
Nếu bạn không gửi khảo sát cho người dùng, thì tác nhân của bạn vẫn nhận kết quả khảo sát của Google tại webhook và phải chấp nhận cũng như xử lý các kết quả đó cho phù hợp.
Câu hỏi
Khảo sát có thể có tối đa 5 câu hỏi, được chia thành 3 danh mục: bắt buộc, mẫu và tuỳ chỉnh. Một bản khảo sát luôn có câu hỏi bắt buộc, sau đó hiển thị tối đa 2 câu hỏi mẫu và tối đa 2 câu hỏi tuỳ chỉnh.
Câu hỏi bắt buộc
Câu hỏi bắt buộc được bản địa hoá trên tất cả các ngôn ngữ mà Business Messages hỗ trợ. Người dùng có thể phản hồi bằng cách chọn thích hoặc không thích.
Câu hỏi bắt buộc: "Dịch vụ nhắn tin này có đáp ứng các nhu cầu của bạn với AGENT_NAME không?"
Câu hỏi trong mẫu
Câu hỏi mẫu là những câu hỏi không bắt buộc do Google xác định và được bản địa hoá trên tất cả các ngôn ngữ mà Business Messages hỗ trợ. Một bản khảo sát có thể có tối đa 2 câu hỏi mẫu. Định dạng câu trả lời của người dùng sẽ khác nhau tuỳ theo câu hỏi.
Các câu hỏi trong mẫu bao gồm
- Vui lòng cho biết trải nghiệm của bạn khi nhắn tin cho AGENT_NAME!
- Bạn có khả năng sẽ đề xuất AGENT_NAME cho bạn bè đến mức nào?
- Lần tới khi liên hệ với AGENT_NAME, bạn có khả năng chọn tính năng nhắn tin đến mức nào?
- Nhìn chung, việc tương tác với AGENT_NAME dễ dàng như thế nào?
- Bạn đồng ý hay không đồng ý với nhận định sau đây đến mức nào: AGENT_NAME giúp tôi dễ dàng xử lý vấn đề của mình.
- Vui lòng đánh giá mức độ hài lòng tổng thể của bạn đối với nhân viên hỗ trợ.
- Phiên trò chuyện này có giúp bạn không phải gọi điện cho AGENT_NAME nữa không?
Để xem danh sách tất cả các câu hỏi mẫu có sẵn và lấy mã mẫu,
- Mở Business Communications Developer Console (Bảng điều khiển dành cho nhà phát triển dịch vụ liên lạc doanh nghiệp) rồi đăng nhập bằng Tài khoản Google Business Messages của bạn.
- Chọn nhân viên hỗ trợ.
- Trong bảng điều hướng bên trái, hãy nhấp vào Khảo sát.
Câu hỏi tùy chỉnh
Một bản khảo sát có thể có tối đa 2 câu hỏi tuỳ chỉnh. Nếu bạn chỉ định một câu hỏi tuỳ chỉnh, hãy thêm các phiên bản của câu hỏi cho từng ngôn ngữ mà tác nhân của bạn hỗ trợ. Bạn phải chỉ định một phiên bản của từng câu hỏi cho ngôn ngữ mặc định. Nếu người dùng nhận được một bản khảo sát nhưng ở một ngôn ngữ không có phiên bản cụ thể của câu hỏi tuỳ chỉnh, thì câu hỏi sẽ xuất hiện như được xác định trong ngôn ngữ mặc định của nhân viên hỗ trợ.
Câu trả lời cho các câu hỏi tuỳ chỉnh hỗ trợ dữ liệu văn bản và dữ liệu phản hồi riêng biệt, tương tự như câu trả lời đề xuất.
Tuỳ chỉnh bản khảo sát
Để tuỳ chỉnh bản khảo sát cho một nhân viên hỗ trợ,
- Mở Business Communications Developer Console (Bảng điều khiển dành cho nhà phát triển dịch vụ liên lạc doanh nghiệp) rồi đăng nhập bằng Tài khoản Google Business Messages của bạn.
- Chọn nhân viên hỗ trợ.
- Trong bảng điều hướng bên trái, hãy nhấp vào Khảo sát.
- Thêm tối đa 2 câu hỏi trong số các câu hỏi mẫu có sẵn vào bản khảo sát.
- Nhấp vào Tạo câu hỏi tuỳ chỉnh để thêm câu hỏi tuỳ chỉnh vào bản khảo sát.
Để biết các lựa chọn về định dạng và giá trị, hãy xem surveyConfig.
Gửi bản khảo sát
Để gửi một bản khảo sát, hãy chạy lệnh sau. Thay thế CONVERSATION_ID bằng giá trị nhận dạng của cuộc trò chuyện mà bạn muốn gửi bản khảo sát và SURVEY_ID bằng giá trị nhận dạng riêng biệt cho bản khảo sát.
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)
Để biết các lựa chọn về định dạng và giá trị, hãy xem conversations.surveys.
Nhận câu trả lời khảo sát
Khi người dùng trả lời một câu hỏi trong khảo sát, nhân viên hỗ trợ của bạn sẽ nhận được câu trả lời tại webhook của nhân viên hỗ trợ. Nhận và xử lý câu trả lời khảo sát giống như cách bạn nhận tin nhắn.
Tất cả câu hỏi trong một bản khảo sát đều có cùng giá trị surveyResponse.survey. Nếu khảo sát của bạn có nhiều câu hỏi, hãy đảm bảo cơ sở hạ tầng của bạn chấp nhận nhiều câu trả lời có cùng giá trị surveyResponse.survey và xác định từng câu hỏi bằng trường surveyResponse.surveyQuestionId.
Giá trị văn bản cho câu trả lời khảo sát xuất hiện trong surveyResponse.questionResponseText. Đối với các câu hỏi bắt buộc và câu hỏi mẫu, Business Messages sẽ trả về phản hồi thích là VERY_SATISFIED và phản hồi không thích là VERY_DISSATISFIED. Nếu câu trả lời cho câu hỏi tuỳ chỉnh có biểu tượng cảm xúc, thì bạn nên dựa vào surveyResponse.questionResponsePostbackData thay vì cố gắng phân tích giá trị Unicode.
Câu trả lời khảo sát có định dạng như sau.
{ "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" } }
Để biết các lựa chọn về định dạng và giá trị, hãy xem UserMessage và SurveyResponse.