Aby zapewnić użytkownikom satysfakcjonujące interakcje z pracownikiem obsługi klienta, Google wysyła ankiety do użytkowników po zakończeniu rozmowy z pracownikiem obsługi klienta. Jeśli chcesz zbierać dane w innym czasie, np. pod koniec rozmowy, możesz wysyłać ankiety na temat rozmowy. Ankiety wyświetlają się w rozmowie i pozwalają użytkownikom przekazywać z różnymi opcjami w zależności od pytania.
Czas wyświetlania ankiet wywoływanych przez Google zależy od wiadomości agenta dostępność:
Dostępność | Czas trwania ankiety |
---|---|
Tylko bot | 30 minut po ostatniej wiadomości |
Tylko człowiek | 24 godziny robocze od ostatniej wiadomości |
Bot i ludzie | 24 godziny robocze od ostatniej wiadomości |
Jeśli występuje < W ciągu następnych 7 dni 24 godziny robocze, zamiast tego stosujemy 24 godziny.
Co 24 godziny możesz wysyłać 1 ankietę na rozmowę. Jeśli wyślesz ankietę w rozmowy przed Google, Google nie wysyła do niej ankiety. Jeśli w ciągu 24 godzin pracownik obsługi klienta wyśle kilka ankiet podczas tej samej rozmowy, Business Messages próbuje tylko wysłać do użytkownika pierwszą ankietę.
Następnym razem, gdy użytkownik rozpocznie rozmowę z pracownikiem obsługi klienta po ukończeniu pracownik obsługi klienta wyświetla powitanie. Jeśli użytkownik nie odpowie na ankietę, ankieta wygaśnie po 7 dniach, a użytkownik zobaczy powitanie w następnej rozmowie po wygaśnięciu ankiety.
Jeśli użytkownik wyśle wiadomość niezwiązaną z ankietą w czasie, gdy ankieta jest aktywna w rozmowy, Business Messages anuluje ankietę i wysyła wiadomość użytkownika do webhooka agenta.
Jeśli nie wyślesz ankiet do użytkowników, agent nadal otrzyma z wynikami ankiet Google na Twoim webhooku. Powinno je zaakceptować i przetworzyć odpowiednio je dostosować.
Pytania
Ankiety mogą zawierać maksymalnie 5 pytań podzielonych na 3 kategorie: required, template i custom. Ankieta zawsze zawiera wymagane pytanie, po czym wyświetla maksymalnie 2 szablony a potem maksymalnie 2 pytania niestandardowe.
Wymagane pytanie
Wymagane pytanie jest przetłumaczone na wszystkie języki, w których działa Business Messages obsługuje. Użytkownicy mogą odpowiedzieć kciukiem w górę lub w dół.
Wymagane pytanie: „Czy ta usługa przesyłania wiadomości zaspokoi Twoje potrzeby związane z AGENT_NAME?”
Pytania dotyczące szablonów
Pytania szablonowe to opcjonalne pytania zdefiniowane przez Google, które są zlokalizowane we wszystkich regionach obsługiwanych przez Business Messages. Ankieta może zawierać maksymalnie dwóch pytań wzorcowych. Formaty odpowiedzi użytkowników różnią się w zależności od pytania.
Pytania dotyczące szablonu obejmują
- Jak oceniasz kontakt z firmą AGENT_NAME?
- Jak bardzo prawdopodobne jest, że polecisz usługę AGENT_NAME znajomym?
- Jakie jest prawdopodobieństwo, że następnym razem, gdy będziesz kontaktować się z firmą AGENT_NAME, wybrać wiadomości?
- Jak ogólnie oceniasz łatwość interakcji z usługą AGENT_NAME?
- W jakim stopniu zgadzasz się z tym stwierdzeniem: Usługa AGENT_NAME ułatwiła mi rozwiązanie problemu.
- Określ ogólny poziom swojego zadowolenia ze współpracy z pracownikiem zespołu pomocy.
- Czy ta sesja czatu pomogła Ci uniknąć połączenia z numerem AGENT_NAME?
Aby zobaczyć listę wszystkich dostępnych pytań szablonów i uzyskać identyfikatory szablonów:
- Otwórz aplikację Business Communications Developer. Konsola i zaloguj się na konto Google Business Messages.
- Wybierz agenta.
- W menu nawigacyjnym po lewej stronie kliknij Ankieta.
Pytania niestandardowe
Ankieta może zawierać maksymalnie 2 pytania niestandardowe. Jeśli określisz parametr niestandardowy Podaj wersje odpowiedzi do każdego z nich język obsługiwanych przez agenta. Musisz określić wersję każdego pytania język domyślny. Jeśli użytkownik otrzymuje ankietę, ale znajduje się w regionie, w którym nie stosuje się określonej wersji pytania niestandardowego, pytanie wyświetla się zgodnie z definicją w domyślnym języku agenta.
Odpowiedzi na pytania niestandardowe obsługują oddzielne dane tekstowe i wywołania zwrotne, podobnie jak do sugerowanych odpowiedzi.
Dostosowywanie ankiety
Aby dostosować ankietę dla pracownika obsługi klienta:
- Otwórz aplikację Business Communications Developer. Konsola i zaloguj się na konto Google Business Messages.
- Wybierz agenta.
- W menu nawigacyjnym po lewej stronie kliknij Ankieta.
- Dodaj do ankiety maksymalnie 2 dostępne szablony pytań.
- Kliknij Utwórz pytanie niestandardowe, aby dodać do ankiety pytania niestandardowe.
Informacje o opcjach formatowania i wartości znajdziesz w
surveyConfig
Wyślij ankietę
Aby wysłać ankietę, uruchom to polecenie. Zastąp CONVERSATION_ID identyfikator rozmowy, do której chcesz wysłać ankietę, oraz SURVEY_ID z unikalnym identyfikatorem ankiety.
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)
Informacje o opcjach formatowania i wartości znajdziesz w
conversations.surveys
Otrzymuj odpowiedzi na pytania z ankiety
Gdy użytkownik odpowie na pytanie w ankiecie, pracownik obsługi klienta otrzyma odpowiedź na jego webhooka. Odpowiedzi na ankiety możesz otrzymywać i przetwarzać w ten sam sposób wiadomości.
Wszystkie pytania w ankiecie mają taką samą wartość surveyResponse.survey
. Jeśli
ankieta zawiera wiele pytań, upewnij się, że Twoja infrastruktura akceptuje
wiele odpowiedzi z tą samą wartością surveyResponse.survey
i określa
poszczególne pytania obok pola surveyResponse.surveyQuestionId
.
Wartości tekstowe odpowiedzi w ankiecie pojawiają się tutaj:
surveyResponse.questionResponseText
W przypadku pytań wymaganych i szablonów:
Business Messages zwraca odpowiedź „Lubię” jako VERY_SATISFIED
i kciuk w górę
jako VERY_DISSATISFIED
. Jeśli odpowiedź na niestandardowe pytanie zawiera tag
emotikonów, najlepiej jest polegać
surveyResponse.questionResponsePostbackData
, zamiast analizować parametr
Wartość Unicode.
Odpowiedzi w ankiecie mają następujący format.
{ "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" } }
Informacje o opcjach formatowania i wartości znajdziesz w
UserMessage
oraz
SurveyResponse