Kullanıcıların temsilcinizle tatmin edici etkileşimler kurmasını sağlamak için Google, kullanıcılar temsilcinizle görüşmeyi bitirdikten sonra onlara anket gönderir. Verileri farklı zamanlarda (ör. bir görüşmenin sonunda) toplamak istiyorsanız görüşme bağlamında anket gönderebilirsiniz. Anketler, sohbette gösterilir ve kullanıcılara soruya bağlı olarak çeşitli seçeneklerle geri bildirimde bulunma olanağı tanır.
Google tarafından tetiklenen anketlerin zamanlaması, temsilcinin mesajlaşma durumuna bağlıdır:
| Kullanılabilirlik | Anket zamanlaması |
|---|---|
| Yalnızca bot | Son mesajdan 30 dakika sonra |
| Yalnızca insanlar | Son mesajdan sonraki 24 çalışma saati |
| Bot ve insan | Son mesajdan sonraki 24 çalışma saati |
Önümüzdeki 7 gün içinde 24 saatten az çalışma saati varsa bunun yerine 24 saat kullanılır.
24 saatte bir ileti dizisi başına bir anket gönderebilirsiniz. Google'dan önce bir sohbete anket gönderirseniz Google bu sohbete anket göndermez. Temsilciniz 24 saat içinde aynı görüşmede birden fazla anket gönderirse Business Messages yalnızca ilk anketi kullanıcıya göndermeyi dener.
Bir kullanıcı anketi tamamladıktan sonra temsilcinizle bir görüşme başlattığında temsilci karşılama mesajı gösterir. Kullanıcı ankete yanıt vermezse anketin süresi 7 gün sonra sona erer ve kullanıcı, anketin süresi sona erdikten sonraki ilk görüşmesinde bir karşılama mesajı görür.
Bir kullanıcı, sohbette anket etkin durumdayken anketle ilgili 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öndermeseniz bile aracınız, Google'ın anketlerinin sonuçlarını webhook'unuzda almaya devam eder ve bunları kabul edip buna göre işlemelidir.
Sorular
Anketler, üç kategoriye ayrılmış en fazla beş soru içerebilir: zorunlu, şablon ve özel. Anketler her zaman zorunlu soruyu içerir, ardından en fazla iki şablon sorusu ve en fazla iki özel soru gösterir.
Zorunlu soru
Zorunlu soru, İşletme Mesajları'nın desteklediği tüm yerel ayarlarda yerelleştirilir. Kullanıcılar, beğenme veya beğenmeme simgelerini kullanarak yanıt verebilir.
Zorunlu soru: "Bu mesajlaşma hizmeti AGENT_NAME ile ilgili ihtiyaçlarınızı karşıladı mı?"
Şablon soruları
Şablon sorular, Google tarafından tanımlanan ve İş Mesajları'nın desteklediği tüm yerel ayarlarda yerelleştirilmiş isteğe bağlı sorulardır. Bir ankette en fazla iki şablon soru bulunabilir. Kullanıcı yanıtı biçimleri soruya göre değişir.
Şablon soruları şunları içerir:
- AGENT_NAME ile mesajlaşma deneyiminiz nasıldı?
- AGENT_NAME adlı işletmeyi arkadaşlarınıza önerir miydiniz?
- AGENT_NAME ile iletişime geçmek istediğiniz bir sonraki sefer mesajlaşmayı tercih eder miydiniz?
- Genel olarak AGENT_NAME ile etkileşimde bulunmak ne kadar kolaydı?
- Şu ifadeye ne oranda katılıyorsunuz veya katılmıyorsunuz: AGENT_NAME sorunumla baş etmemi kolaylaştırdı.
- Lütfen destek ortağı ile ilgili genel memnuniyetinizi değerlendirin.
- Bu sohbet oturumu AGENT_NAME adlı işletmeyi telefonla aramak zorunda kalmamanızı sağladı mı?
Kullanılabilir tüm şablon sorularının listesini görmek ve şablon kimliklerini almak için:
- İşletme İletişimleri Geliştirici Konsolu'nu açın ve Business Messages Google Hesabınızla oturum açın.
- Temsilcinizi seçin.
- Soldaki gezinme menüsünde Anket'i tıklayın.
Özel sorular
Bir anket en fazla iki özel soru içerebilir. Özel bir soru belirtirseniz aracınızın desteklediği her yerel ayar için sorunun farklı versiyonlarını ekleyin. Varsayılan yerel ayarınız için her sorunun bir sürümünü belirtmeniz gerekir. Bir kullanıcıya anket gönderilir ancak kullanıcının bulunduğu yerel ayarda özel sorunun belirtilen bir sürümü yoksa soru, temsilcinin varsayılan yerel ayarında tanımlandığı şekilde gösterilir.
Özel sorulara verilen yanıtlar, önerilen yanıtlar'a benzer şekilde ayrı metin ve geri gönderme verilerini destekler.
Anketi özelleştirme
Anketi bir temsilci için özelleştirmek üzere:
- İşletme İletişimleri Geliştirici Konsolu'nu açın ve Business Messages Google Hesabınızla oturum açın.
- Temsilcinizi seçin.
- Soldaki gezinme menüsünde Anket'i tıklayın.
- Ankete en fazla iki hazır soru ekleyebilirsiniz.
- Anketinize özel sorular eklemek için Özel soru oluştur'u tıklayın.
Biçimlendirme ve değer seçenekleri için surveyConfig bölümüne bakın.
Anket gönderme
Anket göndermek için aşağıdaki komutu çalıştırın. CONVERSATION_ID değerini, anketi göndermek istediğiniz görüşmenin tanımlayıcısıyla, SURVEY_ID değerini ise anketin benzersiz tanımlayıcısı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ını alma
Kullanıcı bir anketteki soruya yanıt verdiğinde, temsilciniz yanıtı webhook'unda alır. Anket yanıtlarını, mesajları aldığınız şekilde alıp işleyin.
Bir anketteki tüm sorular aynı surveyResponse.survey değerine sahiptir. Anketinizde birden fazla soru varsa altyapınızın aynı surveyResponse.survey değerine sahip birden fazla yanıtı kabul ettiğinden ve soruları surveyResponse.surveyQuestionId alanına göre tanımladığından emin olun.
Anket yanıtlarıyla ilgili metin değerleri surveyResponse.questionResponseText içinde gösterilir. Zorunlu ve şablon soruları için Business Messages, VERY_SATISFIED olarak beğenme, VERY_DISSATISFIED olarak beğenmeme yanıtı döndürür. Özel soru yanıtı emoji içeriyorsa Unicode değerini ayrıştırmaya çalışmak yerine surveyResponse.questionResponsePostbackData simgesini kullanmak en iyi uygulamadır.
Anket yanıtları aşağıdaki biçimde olur.
{ "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.