Google, kullanıcıların temsilcinizle memnun kalmalarını sağlamak için, müşteri temsilcilerinizle görüşmeyi tamamladıktan sonra kullanıcılara anketler gönderir. Verileri farklı zamanlamalarla (ör. bir görüşmenin sonunda) toplamak istiyorsanız görüşme bağlamında anketler gönderebilirsiniz. Anketler sohbet içinde gösterilir ve kullanıcıların soruya bağlı olarak çeşitli seçeneklerle geri bildirim sağlamasına olanak tanır.
Google tarafından tetiklenen anketlerin zamanlaması temsilcinin mesajlaşma kullanılabilirliğine bağlıdır:
Kullanılabilirlik | Anket zamanlaması |
---|---|
Yalnızca bot | Son mesajdan 30 dakika sonra |
Yalnızca insanlar | Son mesajdan 24 çalışma saati sonra |
Bot ve insan | Son mesajdan 24 çalışma saati sonra |
Sonraki 7 gün içinde 24'ten az çalışma saati varsa bunun yerine 24 saati kullanırız.
Her görüşme için 24 saatte bir anket gönderebilirsiniz. Google'dan önce sohbet sırasında anket gönderirseniz Google o görüşmeye anket göndermez. Temsilciniz aynı görüşmede 24 saat içinde birden fazla anket gönderirse Business Messages yalnızca ilk anketi kullanıcıya göndermeye çalışır.
Bir kullanıcı anket tamamladıktan sonra temsilcinizle bir daha görüşmeye başladığında temsilci, bir greeting mesajı gösterir. Kullanıcı bir ankete yanıt vermezse anketin süresi 7 gün sonra dolar ve anketin süresi dolduktan sonra bir sonraki görüşmesinde kullanıcıya bir karşılama mesajı gösterilir.
Bir kullanıcı, görüşmede anket aktifken anketle ilgisi olmayan bir mesaj gönderirse Business Messages anketi iptal eder ve kullanıcının mesajını temsilcinin webhook'una gönderir.
Kullanıcılara anket göndermezseniz temsilciniz Google'ın anketlerinin sonuçlarını webhook'unuzda alır ve sonuçları uygun şekilde kabul edip işlemesi gerekir.
Sorular
Anketler üç kategoriye ayrılmış en fazla beş soru içerebilir: zorunlu, şablon ve özel. Anket her zaman gerekli soruyu içerir, ardından en fazla iki şablon sorusu gösterir ve ardından en fazla iki özel soru gösterir.
Zorunlu soru
Zorunlu soru, Business Messages'ın desteklediği tüm yerel ayarlarda yerelleştirilmiş. Kullanıcılar beğenme veya beğenmeme ifadeleriyle yanıt verebilir.
Gerekli soru: "Bu mesajlaşma hizmeti, AGENT_NAME ile ilgili ihtiyaçlarınızı karşıladı mı?"
Şablon soruları
Şablon soruları, Business Messages'ın desteklediği tüm yerel ayarlarda yerelleştirilmiş, Google tarafından tanımlanan isteğe bağlı sorulardır. Bir anket en fazla iki şablon sorusu içerebilir. Kullanıcı yanıtı biçimleri soruya göre değişiklik gösterir.
Şablon soruları şunları içerir:
- AGENT_NAME ile mesajlaşma deneyiminiz nasıldı?
- AGENT_NAME adlı işletmeyi arkadaşlarınıza tavsiye etme olasılığınız nedir?
- AGENT_NAME ile tekrar iletişime geçtiğinizde mesajlaşmayı tercih etme olasılığınız nedir?
- Genel olarak AGENT_NAME ile etkileşimde bulunmak ne kadar kolaydı?
- Şu ifadeye ne ölçüde katılıyorsunuz veya katılmıyorsunuz? AGENT_NAME sorunumla başa çıkmamı kolaylaştırdı.
- Lütfen destek ortağından ne kadar memnun olduğunuzu belirtin.
- Bu sohbet oturumu, AGENT_NAME numaralı telefonu arayabilmenize yardımcı oldu mu?
Mevcut tüm şablon sorularının listesini görmek ve şablon kimliklerini almak için:
- Business Communications Developer Console'u açın ve Business Messages Google hesabınızla oturum açın.
- Temsilcinizi seçin.
- Soldaki gezinme menüsünden Anket'i tıklayın.
Özel sorular
Bir anket en fazla iki özel soru içerebilir. Özel bir soru belirtirseniz temsilcinizin desteklediği her yerel ayar için sorunun farklı sürümlerini ekleyin. Varsayılan yerel ayarınız için her sorunun bir sürümünü belirtmeniz gerekir. Bir kullanıcı anket alırsa ancak özel sorunun belirtilen bir sürümünün bulunmadığı bir yerel ayarda bulunursa soru, aracının varsayılan yerel ayarında tanımlandığı şekilde görüntülenir.
Özel sorulara verilen yanıtlar, önerilen yanıtlara benzer şekilde ayrı metin ve geri gönderme verilerini destekler.
Anketi özelleştirme
Anketi bir temsilci için özelleştirmek isterseniz,
- Business Communications Developer Console'u açın ve Business Messages Google hesabınızla oturum açın.
- Temsilcinizi seçin.
- Soldaki gezinme menüsünden Anket'i tıklayın.
- Ankete en fazla iki mevcut şablon sorusu ekleyin.
- Anketinize özel sorular eklemek için Özel soru oluşturun'u tıklayın.
Biçimlendirme ve değer seçenekleri için surveyConfig
bölümüne bakın.
Anket gönder
Anket göndermek için aşağıdaki komutu çalıştırın. CONVERSATION_ID yerine anketi göndermek istediğiniz görüşmenin tanımlayıcısını, SURVEY_ID kısmını da anket için benzersiz bir tanımlayıcıyla değiştirin.
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çimlendirme ve değer seçenekleri için conversations.surveys
bölümüne bakın.
Anket yanıtları alma
Bir kullanıcı anketteki bir soruya yanıt verdiğinde, temsilciniz webhook'tan yanıtı alır. Anket yanıtlarını mesaj aldığınız şekilde alın ve işleyin.
Anketteki tüm sorular aynı surveyResponse.survey
değerine sahip. Anketinizde birden fazla soru varsa altyapınızın aynı surveyResponse.survey
değeriyle birden fazla yanıtı kabul ettiğinden ve her bir soruyu surveyResponse.surveyQuestionId
alanına göre tanımladığından emin olun.
Anket yanıtları için metin değerleri surveyResponse.questionResponseText
aracında görünür. Business Messages, zorunlu sorular ve şablon soruları için VERY_SATISFIED
olumlu, VERY_DISSATISFIED
olarak ise beğenmeme yanıtı döndürür. Özel bir soru yanıtı emoji içeriyorsa Unicode değerini ayrıştırmaya çalışmak yerine surveyResponse.questionResponsePostbackData
kullanmanız önerilir.
Anket yanıtları aşağıdaki biçimdedir.
{ "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çimlendirme ve değer seçenekleri için UserMessage
ve SurveyResponse
bölümlerine bakın.