Untuk memastikan pengguna memiliki interaksi yang memuaskan dengan agen Anda, Google mengirimkan survei kepada pengguna setelah mereka menyelesaikan percakapan dengan agen Anda. Jika ingin mengumpulkan data dengan waktu yang berbeda, seperti di akhir percakapan, Anda dapat mengirimkan survei dalam konteks percakapan. Survei ditampilkan dalam percakapan dan memungkinkan pengguna memberikan masukan dengan berbagai opsi bergantung pada pertanyaannya.
Waktu survei yang dipicu Google bergantung pada ketersediaan pesan agen:
| Ketersediaan | Waktu survei |
|---|---|
| Khusus bot | 30 menit setelah pesan terakhir |
| Khusus manusia | 24 jam kerja setelah pesan terakhir |
| Bot dan manusia | 24 jam kerja setelah pesan terakhir |
Jika ada < 24 jam kerja dalam 7 hari ke depan, kami akan menggunakan 24 jam.
Anda dapat mengirimkan satu survei per percakapan setiap 24 jam. Jika Anda mengirimkan survei dalam percakapan sebelum Google, Google tidak akan mengirimkan survei ke percakapan tersebut. Jika agen Anda mengirimkan beberapa survei dalam percakapan yang sama dalam waktu 24 jam, Business Messages hanya akan mencoba mengirimkan survei pertama kepada pengguna.
Saat pengguna memulai percakapan dengan agen Anda setelah menyelesaikan a survei, agen akan menampilkan salam. Jika pengguna tidak merespons survei, survei akan berakhir setelah 7 hari, dan pengguna akan melihat salam dalam percakapan berikutnya setelah survei berakhir.
Jika pengguna mengirimkan pesan yang tidak terkait dengan survei saat survei aktif dalam percakapan, Business Messages akan membatalkan survei dan mengirimkan pesan pengguna ke webhook agen.
Jika Anda tidak mengirimkan survei kepada pengguna, agen Anda akan tetap menerima hasil survei Google di webhook Anda dan harus menerima serta memproses nya sebagaimana mestinya.
Pertanyaan
Survei dapat mencakup hingga lima pertanyaan, yang dibagi menjadi tiga kategori: wajib, template, dan kustom. Survei selalu menyertakan pertanyaan wajib, lalu menampilkan hingga dua pertanyaan template, dan kemudian menampilkan hingga dua pertanyaan kustom.
Pertanyaan wajib
Pertanyaan wajib dilokalkan di semua lokalitas yang didukung Business Messages. Pengguna dapat merespons dengan penilaian suka atau tidak suka.
Pertanyaan wajib: "Apakah layanan pesan ini memenuhi kebutuhan Anda dengan AGENT_NAME?"
Pertanyaan template
Pertanyaan template adalah pertanyaan opsional yang ditentukan Google dan dilokalkan di semua lokalitas yang didukung Business Messages. Survei dapat mencakup hingga dua pertanyaan template. Format respons pengguna bervariasi menurut pertanyaan.
Pertanyaan template mencakup
- Bagaimana pengalaman Anda mengirim pesan ke AGENT_NAME?
- Seberapa besar kemungkinan Anda merekomendasikan AGENT_NAME kepada teman?
- Saat Anda menghubungi AGENT_NAME lagi, seberapa besar kemungkinan Anda akan memilih pesan?
- Secara keseluruhan, seberapa mudah interaksi dengan AGENT_NAME?
- Seberapa setuju atau tidak setujukah Anda dengan pernyataan berikut: AGENT_NAME memudahkan saya menangani masalah saya.
- Berikan nilai kepuasan Anda secara keseluruhan terhadap bagian dukungan.
- Apakah sesi chat ini membantu Anda menghindari panggilan ke AGENT_NAME?
Untuk melihat daftar semua pertanyaan template yang tersedia dan mendapatkan ID template,
- Buka Konsol Developer Komunikasi Bisnis dan login dengan akun Google Business Messages Anda.
- Pilih agen Anda.
- Di navigasi kiri, klik Survei.
Pertanyaan kustom
Survei dapat mencakup hingga dua pertanyaan kustom. Jika Anda menentukan pertanyaan kustom, sertakan versi pertanyaan untuk setiap lokalitas yang didukung agen Anda. Anda harus menentukan versi setiap pertanyaan untuk lokalitas default Anda. Jika pengguna menerima survei tetapi berada di lokalitas yang tidak memiliki versi pertanyaan kustom yang ditentukan, pertanyaan akan ditampilkan seperti yang ditentukan di lokalitas default agen.
Respons terhadap pertanyaan kustom mendukung data teks dan postback terpisah, mirip dengan balasan saran.
Menyesuaikan survei
Untuk menyesuaikan survei bagi agen,
- Buka Konsol Developer Komunikasi Bisnis dan login dengan akun Google Business Messages Anda.
- Pilih agen Anda.
- Di navigasi kiri, klik Survei.
- Tambahkan hingga dua pertanyaan template yang tersedia ke survei.
- Klik Buat pertanyaan kustom untuk menambahkan pertanyaan kustom ke survei Anda.
Untuk opsi pemformatan dan nilai, lihat
surveyConfig.
Mengirim survei
Untuk mengirim survei, jalankan perintah berikut. Ganti CONVERSATION_ID dengan ID percakapan yang ingin Anda kirimi survei dan SURVEY_ID dengan ID unik untuk survei.
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)
Untuk opsi pemformatan dan nilai, lihat
conversations.surveys.
Menerima respons survei
Saat pengguna merespons pertanyaan dalam survei, agen Anda akan menerima respons di webhook-nya. Terima dan proses respons survei dengan cara yang sama seperti Anda menerima pesan.
Semua pertanyaan dalam survei memiliki nilai surveyResponse.survey yang sama. Jika
survei Anda menyertakan beberapa pertanyaan, pastikan infrastruktur Anda menerima
beberapa respons dengan nilai surveyResponse.survey yang sama dan mengidentifikasi
setiap pertanyaan berdasarkan kolom surveyResponse.surveyQuestionId.
Nilai teks untuk respons survei muncul di surveyResponse.questionResponseText. Untuk pertanyaan wajib dan template, Business Messages menampilkan respons suka sebagai VERY_SATISFIED dan respons tidak suka sebagai VERY_DISSATISFIED. Jika respons pertanyaan kustom menyertakan emoji, sebaiknya gunakan surveyResponse.questionResponsePostbackData daripada mencoba mengurai nilai Unicode.
Respons survei memiliki format berikut.
{ "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" } }
Untuk opsi pemformatan dan nilai, lihat
UserMessage
dan
SurveyResponse.