Po zarejestrowaniu się w usłudze Business Messages możesz odbierać wiadomości w imieniu swojego agenta testowego. Możesz otrzymywać wiadomości dotyczące marek, którymi zarządzasz po utworzeniu, zweryfikowaniu i uruchomieniu agentów dla tych marek.
Gdy klient wysyła wiadomość do agenta, którym zarządzasz, Business Messages wysyła ładunek JSON do webhooka zawierającego różne identyfikatory, treść wiadomości i informacje o lokalizacji.
Aby debugować problemy z dostarczaniem wiadomości, użyj strony logów konsoli dla firm Business Communications.
Obsługa wiadomości przychodzących
Sposób, w jaki agent obsługuje wiadomości od użytkowników i odpowiada na nie, zależy w dużym stopniu od logiki Twojej firmy. Ogólnie jednak czynności wymagane w odpowiedzi na wiadomość użytkownika są spójne.
Potwierdzanie odebrania wiadomości
Aby potwierdzić wiadomość otrzymaną przez webhooka, ustaw prawidłową odpowiedź HTTP na wiadomości wysyłane do webhooka.
Jeśli wiadomość nie zostanie dostarczona z powodu przekroczenia limitu czasu, problemu z osiąganiem, przekierowaniem lub uprawnieniami webhooka, Google przechowuje i przekazuje wiadomość z wieloma kolejnymi próbami przez 7 dni lub do momentu, aż webhook ją otrzyma.
Sprawdzanie, czy wiadomość pochodzi od Google
Przed przetworzeniem treści sprawdź, czy firma Google wysłała wiadomość.
Aby sprawdzić, czy wysłaliśmy do Ciebie wiadomość,
- Przeanalizuj nagłówek
X-Goog-Signature
wiadomości. To zaszyfrowana kopia ładunku treści wiadomości zakodowana w formacie base64. Użyj tokena klienta (który został podany podczas konfigurowania webhooka) jako klucza, utwórz SHA512 MAC-a MAC-a ładunku wiadomości i zakoduj wynik.
Porównaj skrót
X-Goog-Signature
z utworzonym skrótem.- Jeśli hasze są zgodne, oznacza to, że wiadomość została wysłana przez Google.
- Jeśli hasze nie pasują, sprawdź proces szyfrowania w dobrze znanej wiadomości. Jeśli proces haszowania działa prawidłowo i widzisz wiadomość, która Twoim zdaniem została wysłana w wyniku oszustwa, skontaktuj się z nami (musisz zalogować się za pomocą konta Google Business Messages).
Zobacz przykład weryfikacji wiadomości w repozytoriach GitHuba dla botów Echo w językach Java, Node.js i Python.
Identyfikuj język
Użytkownicy komunikują się z wielu lokalizacji i w wielu językach. Business Messages przedstawia ustawienia językowe użytkowników w polach resolvedLocale
i userDeviceLocale
, które zależą od ustawień regionalnych urządzenia.
Zobacz Lokalizacja i ustawienia regionalne.
Tam, gdzie to możliwe, przekazuj wiadomości i twórz odpowiedzi na podstawie preferencji językowych użytkowników.
Kierowanie wiadomości na podstawie jej kontekstu
Kontekst wiadomości informuje, jakich informacji może szukać użytkownik.
Jeśli na przykład użytkownik wyśle wiadomość z wartością placeId
, to mógł odpowiedzieć na konkretną lokalizację (określoną przez placeId
) i prawdopodobnie odpowie na pytania dotyczące lokalizacji. I podobnie, jeśli wiadomość ma wartość nearPlaceId
, która identyfikuje lokalizację w pobliżu użytkownika, prawdopodobnie chce poznać informacje dotyczące konkretnej lokalizacji, ale agent powinien potwierdzić lokalizację, z którą chce porozmawiać na czacie przed rozpoczęciem rozmowy.
Korzystając z informacji kontekstowych, przekaż wiadomość do lokalizacji, w której najlepiej na nią odpowiedzieć:
- Jeśli wiadomość jest w nowej rozmowie i jest to najczęstsze pytanie, możesz odpowiedzieć przy użyciu automatyzacji.
- Jeśli automatyzacja nie może odpowiedzieć na to pytanie, przekieruj go do pracownika obsługi klienta.
- Jeśli język wiadomości nie pasuje do języka domyślnego agenta, przekaż wiadomość do pracownika obsługi klienta, który obsługuje dany język.
- Jeśli pytanie dotyczy konkretnej lokalizacji, przekieruj tę osobę do osób, które mają dane o tej lokalizacji.
- Jeśli wiadomość jest w trakcie trwającej rozmowy, przekieruj ją do pracownika obsługi klienta, który bierze udział w rozmowie.
Określanie typu wiadomości wysłanej przez użytkownika
Użytkownicy mogą wysyłać 3 rodzaje wiadomości:
- SMS-y są swobodnymi odpowiedziami,
- Wiadomości zawierające obraz zawierają podpisany adres URL obrazu przesłanego przez użytkownika.
- Wiadomości sugestii zawierają dane zwrotne i tekst sugerowanej czynności lub sugerowanej odpowiedzi klikniętej przez użytkownika.
Przetwarzanie treści wiadomości
Jeśli Twój agent korzysta z automatyzacji, treść wiadomości użytkownika powinna być zgodna z logiką agenta i następną odpowiedzią w wątku.
Najłatwiejszym sposobem rozpoznania zamiaru użytkownika jest użycie danych zwrotnych z sugerowanej odpowiedzi lub sugerowanego działania. Niezależnie od tekstu powiązanego z sugestią dane wywołania zwrotnego są czytelne dla komputerów.
Jeśli użytkownik wyśle SMS-a, agent może przeanalizować odpowiedź pod kątem obsługiwanych słów kluczowych lub użyć rozumienia języka naturalnego (np. za pomocą integracji Dataflow, aby przetworzyć wiadomość użytkownika i zidentyfikować ścieżkę.
Jeśli agent nie wie, jak odpowiedzieć na wiadomość użytkownika, powinien wyświetlić się komunikat o błędzie i kontynuować rozmowę, podając użytkownikowi dodatkowe informacje, prosząc o podanie innego sposobu lub przekazując rozmowę do pracownika obsługi klienta.
Odpowiedz użytkownikowi
Gdy agent zidentyfikuje właściwą odpowiedź – za pomocą automatyzacji lub trwającego agenta – wysyła wiadomość i kontynuuje rozmowę z użytkownikiem.
Podczas tworzenia odpowiedzi weź pod uwagę język użytkownika. Możesz też dostosować odpowiedzi, pobierając wartości z obiektu userInfo
w każdej odebranej wiadomości.
Rodzaje wiadomości
Ten kod pokazuje, jak agent otrzymuje wiadomości.
Formatowanie i wartości znajdziesz na stronie UserMessage
.
Tekst
Najczęstszym sposobem, w jaki użytkownicy mogą odpowiadać, jest zwykły tekst. SMS-y mają następujący format.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "message": { "messageId": "MESSAGE_ID", "name": "conversations/CONVERSATION_ID/messages/MESSAGE_ID", "text": "MESSAGE_TEXT", "createTime": "MESSAGE_CREATE_TIME", }, "dialogflowResponse": { "autoResponded": "BOOLEAN", "faqResponse": { "userQuestion": "USER_QUESTION", "answers": [{ "faqQuestion": "FAQ_QUESTION", "faqAnswer": "FAQ_ANSWER", "matchConfidenceLevel": "CONFIDENCE_LEVEL", "matchConfidence": "CONFIDENCE_NUMERIC", }], }, }, "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
Opcje formatowania i opcji wartości znajdziesz na stronie Message
.
Obraz
Oprócz wysyłania wiadomości użytkownicy mogą też wysyłać obrazy do agenta jako wiadomości.
Business Messages przechowuje udostępnione obrazy przez 7 dni pod podpisanymi adresami URL i uwzględnia te adresy URL w polu text
ładunku wiadomości.
Jeśli agent obejmuje automatyzację, upewnij się, że wie, jak odpowiedzieć, jeśli użytkownik udostępni obraz. W przypadku agentów na żywo upewnij się, że obrazy są przekazywane lub że adresy URL w wiadomościach można kliknąć.
...
"message": {
"text": "https://storage.googleapis.com/business-messages-us/936640919331/jzsu6cdguNGsBhmGJGuLs1DS?x-goog-algorithm\u003dGOOG4-RSA-SHA256\u0026x-goog-credential\u003duranium%40rcs-uranium.iam.gserviceaccount.com%2F20190826%2Fauto%2Fstorage%2Fgoog4_request\u0026x-goog-date\u003d20190826T201038Z\u0026x-goog-expires\u003d604800\u0026x-goog-signedheaders\u003dhost\u0026x-goog-signature\u003d89dbf7a74d21ab42ad25be071b37840a544a43d68e67270382054e1442d375b0b53d15496dbba12896b9d88a6501cac03b5cfca45d789da3e0cae75b050a89d8f54c1ffb27e467bd6ba1d146b7d42e30504c295c5c372a46e44728f554ba74b7b99bd9c6d3ed45f18588ed1b04522af1a47330cff73a711a6a8c65bb15e3289f480486f6695127e1014727cac949e284a7f74afd8220840159c589d48dddef1cc97b248dfc34802570448242eac4d7190b1b10a008404a330b4ff6f9656fa84e87f9a18ab59dc9b91e54ad11ffdc0ad1dc9d1ccc7855c0d263d93fce6f999971ec79879f922b582cf3bb196a1fedc3eefa226bb412e49af7dfd91cc072608e98"
}
...
Opcje formatowania i opcji wartości znajdziesz na stronie Message
.
Sugestia
Sugerowane odpowiedzi i sugerowane czynności umożliwiają użytkownikom odpowiadanie jednym kliknięciem lub wykonywanie czynności. Gdy użytkownik kliknie sugestię, agent otrzyma ładunek z tekstem sugestii i danymi wywołania zwrotnego.
Wiadomości z sugestią mają następujący format.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "suggestionResponse": { "message": "conversations/CONVERSATION_ID/messages/MESSAGE_ID", "postbackData": "POSTBACK_DATA", "createTime": "RESPONSE_CREATE_TIME", "text": "SUGGESTION_TEXT", "suggestionType": "SUGGESTION_TYPE", } "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
Opcje formatowania i opcji wartości znajdziesz na stronie SuggestionResponse
.
Prośba o uwierzytelnienie
Sugestia żądania uwierzytelniania pozwala użytkownikom logować się przy użyciu dostawcy OAuth, aby podawać im szczegółowe informacje o tożsamości lub umożliwiać agentowi wykonywanie działań w imieniu użytkowników. Zobacz Uwierzytelnianie za pomocą protokołu OAuth.
Jeśli użytkownik zaloguje się przy użyciu określonego dostawcy OAuth, agent otrzyma ładunek z kodem autoryzacji. Jeśli nie uda się zalogować użytkownika, agent otrzyma ładunek ze szczegółami błędów.
Wiadomości z prośbą o uwierzytelnienie mają następujący format.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "authenticationResponse": { "code": "AUTHORIZATION_CODE", "redirect_uri": "REDIRECT_URI", "errorDetails": { "error": "ERROR", "errorDescription": "ERROR_DESCRIPTION", }, } "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
Opcje formatowania i opcji wartości znajdziesz na stronie AuthenticationResponse
.
Kontekst wiadomości
Każda wiadomość zawiera informacje kontekstowe dotyczące pochodzenia wiadomości.
... "context": { "customContext": "CUSTOM_CONTEXT", "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "nearPlaceId": "NEARBY_LOCATION_PLACE_ID", "deflectedPhoneNumber": "DEFLECTED_PHONE_NUMBER", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, "widget": { "url": "WEBSITE_URL", "widgetContext": "WIDGET_CONTEXT", }, }, ...
Pole | Opis |
---|---|
customContext |
Dane kontekstowe określone przez partnera. |
entryPoint |
Komunikat, w którym użytkownik rozpoczął rozmowę, zgodnie z definicją w EntryPoint. |
placeId |
Unikalny identyfikator bazy danych Miejsc Google przypisany do lokalizacji, do której użytkownik wysłał wiadomość. Pojawia się tylko w wiadomościach z punktów wejścia właściwych dla lokalizacji. |
nearPlaceId |
Unikalny identyfikator pierwszej bazy danych miejsca w lokalnym pakiecie danych Miejsc Google. Potwierdź lokalizacje, z którymi użytkownicy mają czatować, gdy otrzymasz wartości nearPlaceId . |
deflectedPhoneNumber |
Numer telefonu, z którego Wiadomości biznesowe przestały dzwonić po rozpoczęciu rozmowy. |
resolvedLocale |
Największe obliczone dopasowanie do języka użytkownika (zgodnie z raportem w Wartością regionu jest dobrze sformatowany tag języka IETF BCP 47. |
userInfo.displayName |
Nazwa użytkownika, który wysłał wiadomość. Jeśli użytkownik zrezygnuje z udostępniania tożsamości, to pole pozostanie puste. |
userInfo.userDeviceLocale |
Lokalizacja regionalna użytkownika zgłoszona przez urządzenie jako prawidłowy tag języka IETF BCP 47. |
widget.url |
Adres URL witryny, w której uruchomiono platformę konwersacyjną. |
widget.widgetContext |
Wartość atrybutu data-bm-widget-context widżetu użytego do rozpoczęcia rozmowy. |
Historia rozmowy
Google nie udostępnia historii rozmów. Prowadź własne rozmowy historyczne w sposób zgodny ze swoją polityką prywatności i sprawdzonymi metodami, aby móc wysyłać spersonalizowane odpowiedzi na przyszłe wiadomości użytkowników.