Untuk memastikan pengguna memiliki interaksi yang memuaskan dengan agen Anda, Google mengirim survei ke pengguna setelah mereka menyelesaikan percakapan dengan agen Anda. Jika Anda ingin mengumpulkan data dengan waktu yang berbeda, seperti pada akhir percakapan, Anda dapat mengirim survei dalam konteks percakapan. Survei ditampilkan dalam percakapan dan memungkinkan pengguna untuk memberikan masukan dengan berbagai pilihan yang tergantung pada pertanyaan.
Waktu survei yang dipicu Google bergantung pada fitur pesan agen ketersediaan:
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 menggunakan 24 jam sebagai gantinya.
Anda dapat mengirim satu survei per percakapan setiap 24 jam. Jika Anda mengirim survei dalam percakapan sebelum Google, Google tidak mengirimkan survei ke percakapan tersebut. Jika agen Anda mengirim beberapa survei dalam percakapan yang sama dalam waktu 24 jam, Business Messages hanya akan mencoba mengirimkan survei pertama kepada pengguna.
Saat berikutnya pengguna memulai percakapan dengan agen Anda setelah menyelesaikan survei, agen akan menampilkan salam. Jika pengguna tidak merespons survei, masa berlaku survei akan berakhir setelah 7 hari, dan pengguna melihat salam dalam percakapan berikutnya setelah survei berakhir.
Jika pengguna mengirim pesan yang tidak terkait dengan survei saat survei aktif di percakapan, Business Messages akan membatalkan survei dan mengirim pesan pengguna ke webhook agen.
Jika Anda tidak mengirim survei kepada pengguna, agen Anda tetap menerima hasil survei Google di webhook Anda dan harus menerima serta memproses dengan tepat.
Pertanyaan
Survei dapat mencakup hingga lima pertanyaan, yang dibagi menjadi tiga kategori: wajib, template, dan kustom. Sebuah survei selalu menyertakan pertanyaan yang diperlukan, lalu menampilkan hingga dua template pertanyaan, dan kemudian menampilkan hingga dua pertanyaan khusus.
Pertanyaan wajib
Pertanyaan yang diperlukan dilokalkan di semua lokalitas tempat Business Messages didukung. Pengguna dapat merespons dengan mengacungkan jempol ke atas atau ke bawah.
Pertanyaan yang diperlukan: "Apakah layanan pesan ini memenuhi kebutuhan Anda dengan AGENT_NAME?"
Pertanyaan tentang template
Pertanyaan template adalah pertanyaan opsional yang ditetapkan Google dan dilokalkan di semua lokalitas yang didukung Business Messages. Survei dapat mencakup hingga dua pertanyaan {i>template<i}. Format respons pengguna bervariasi menurut pertanyaan.
Pertanyaan {i>template<i} mencakup
- Bagaimana pengalaman Anda saat mengirim pesan ke AGENT_NAME?
- Seberapa besar kemungkinan Anda merekomendasikan AGENT_NAME kepada teman?
- Saat berikutnya Anda menghubungi AGENT_NAME, seberapa besar kemungkinan Anda akan pilih pesan?
- Secara keseluruhan, seberapa mudah berinteraksi dengan AGENT_NAME?
- Sejauh mana Anda setuju atau tidak setuju dengan pernyataan berikut: AGENT_NAME memudahkan saya untuk menangani masalah saya.
- Berikan nilai kepuasan Anda secara keseluruhan terhadap staf dukungan.
- Apakah sesi chat ini membantu Anda menghindari panggilan ke AGENT_NAME?
Untuk melihat daftar semua pertanyaan {i>template<i} yang tersedia dan mendapatkan ID {i>template<i},
- Buka Business Communications Developer Konsol dan login dengan Akun Google Business Messages Anda.
- Pilih agen Anda.
- Di navigasi sebelah kiri, klik Survei.
Pertanyaan kustom
Survei dapat mencakup hingga dua pertanyaan khusus. Jika Anda menentukan pertanyaan, sertakan versi pertanyaan untuk setiap lokal yang didukung agen Anda. Anda harus menentukan versi dari setiap pertanyaan untuk lokalitas default. Jika pengguna menerima survei, tetapi berada di lokalitas yang tidak memiliki versi tertentu dari pertanyaan kustom, pertanyaan tersebut akan ditampilkan sebagaimana didefinisikan dalam bahasa default agen.
Respons terhadap pertanyaan kustom mendukung teks terpisah dan data postback yang serupa ke disarankan balasan.
Menyesuaikan survei
Untuk menyesuaikan survei agen,
- Buka Business Communications Developer Konsol dan login dengan Akun Google Business Messages Anda.
- Pilih agen Anda.
- Di navigasi sebelah kiri, klik Survei.
- Tambahkan maksimum dua pertanyaan {i>template<i} yang tersedia ke survei.
- Klik Buat pertanyaan kustom untuk menambahkan pertanyaan kustom ke survei Anda.
Untuk opsi pemformatan dan nilai, lihat
surveyConfig
Kirim 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 tersebut di webhook-nya. Menerima dan memproses respons survei dengan cara yang sama seperti Anda menerima pesan.
Semua pertanyaan dalam survei memiliki nilai surveyResponse.survey
yang sama. Jika
survei Anda mencakup beberapa pertanyaan, pastikan infrastruktur Anda menerima
beberapa respons dengan nilai surveyResponse.survey
yang sama dan mengidentifikasi
pertanyaan individual
di kolom surveyResponse.surveyQuestionId
.
Nilai teks untuk respons survei muncul di
surveyResponse.questionResponseText
. Untuk pertanyaan wajib dan {i>template<i},
Business Messages akan menampilkan respons suka sebagai VERY_SATISFIED
dan ikon jempol
turun sebagai VERY_DISSATISFIED
. Jika jawaban pertanyaan khusus menyertakan
adalah praktik terbaik untuk mengandalkan
surveyResponse.questionResponsePostbackData
, bukan 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
.