Odbieranie wiadomości

Po zarejestrowaniu się w Google Business Wiadomości, możesz odbierać wiadomości w imieniu agenta testowego. Możesz otrzymywać wiadomości dla marek, którymi zarządzasz później create (utwórz), verify oraz uruchom tych marek.

Gdy klient wysyła wiadomość do agenta, którym zarządzasz, Business Messages wysyła do webhooka ładunek JSON zawierający różne identyfikatory, treść wiadomości i informacje o lokalizacji.

Używanie dzienników Konsoli programisty Business Communications aby debugować problemy z dostarczaniem wiadomości.

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 na logikę biznesową. Ogólnie rzecz biorąc, czynności, jakie należy wykonać, aby odpowiedzieć użytkownikowi, są spójne.

Potwierdź wiadomość

Aby potwierdzić wiadomość odebraną przez webhooka, zwróć prawidłową odpowiedź HTTP na wiadomości wysyłane do webhooka.

Jeśli wiadomość nie zostanie dostarczona z powodu przekroczenia limitu czasu oczekiwania lub osiągalności webhooka, lub problemy z przekierowaniem lub uprawnieniami, Google przechowuje i przekazuje wiadomość wielokrotnie ponawiać próby przez 7 dni lub do momentu, gdy webhook otrzyma .

Sprawdź, czy wiadomość pochodzi od Google

Przed przetworzeniem wiadomości sprawdź, czy wiadomość została wysłana przez Google treści.

Aby potwierdzić, że otrzymana wiadomość została wysłana przez Google,

  1. Przeanalizuj nagłówek X-Goog-Signature wiadomości. Jest to zahaszowana wartość, zakodowana w base64 kopia ładunku wiadomości.
  2. Za pomocą tokena klienta (wyświetlonego podczas konfigurowania webhooka) utwórz kod HMAC SHA512 zawierający bajty ładunku wiadomości, zakodować wynik w formacie base64.

  3. Porównaj hasz X-Goog-Signature z utworzonym haszem.

    • Jeśli hasze są zgodne, oznacza to, że wiadomość została wysłana przez Google.
    • Jeśli hasze nie są zgodne, sprawdź proces haszowania pod kątem znanej wartości . Jeśli szyfrowanie działa prawidłowo i otrzymujesz że wiadomość, która Twoim zdaniem została do Ciebie wysłana w wyniku oszustwa, skontaktuj się z nami (musisz podpisać w za pomocą konta Google Business Messages).

Zobacz przykład weryfikacji wiadomości w repozytoriach GitHub dla botów echo w języku Java, Node.js – czy Python.

Określ język

Użytkownicy komunikują się z wielu lokalizacji i w wielu językach. Wiadomości do firm reprezentuje użytkowników ustawień języka za pomocą przycisków resolvedLocale i userDeviceLocale, które zależą od ustawień regionalnych. Patrz sekcja Lokalizacja i Locales.

Gdy tylko jest to możliwe, kieruj wiadomości i twórz odpowiedzi na podstawie język ustawieniach.

Kierowanie wiadomości na podstawie jej kontekstu

Kontekst wiadomości określa, jakich informacji może szukać użytkownik. Jeśli na przykład użytkownik wysyła wiadomość z placeId użytkownik wysłał wiadomość do określonej lokalizacji (identyfikowanej przez: placeId) i został zadają pytania dotyczące konkretnych lokalizacji. Podobnie, jeśli wiadomość ma nearPlaceId, która identyfikuje lokalizację w pobliżu użytkownika, prawdopodobnie chce uzyskać informacje o konkretnej lokalizacji, ale agent powinien potwierdzić lokalizacja, z którą użytkownik chce porozmawiać przed rozpoczęciem rozmowy.

Korzystając z informacji kontekstowych, skieruj wiadomość do właściwego miejsca odpowiednie do reagowania:

  • Jeśli wiadomość jest w nowej rozmowie i jest częstym pytaniem, dzięki automatyzacji.
  • Jeśli automatyzacja nie potrafi obsłużyć pytania, przekaż je pracownikowi obsługi klienta.
  • Jeśli język wiadomości nie jest zgodny z domyślnym językiem agenta, skieruj ruch wiadomość do pracownika obsługi klienta, który może Ci pomóc w danym języku.
  • Jeśli pytanie dotyczy konkretnej lokalizacji, przekaż je osobie, która informacje o tej lokalizacji.
  • Jeśli wiadomość jest w trwającej rozmowie, przekieruj ją do pracownika obsługi klienta biorąc udział w rozmowie.

Identyfikowanie typu wiadomości wysłanej przez użytkownika

Użytkownicy mogą wysyłać trzy typy wiadomości:

  • SMS-y to dowolne odpowiedzi.
  • Wiadomości z obrazami zawierają podpisany adres URL obrazu użytkownika. przesłano.
  • Sugestie zawierają dane wywołania zwrotnego i tekst sugerowane działanie lub sugerowana odpowiedź użytkownika.

Przetwarzanie treści wiadomości

Jeśli agent korzysta z automatyzacji, treść wiadomości powinna stanowić dla logiki agenta i następnej odpowiedzi w rozmowie.

Najłatwiejszym sposobem zidentyfikowania zamiaru użytkownika jest użycie danych wywołania zwrotnego z sugerowane odpowiedzi lub sugerowane działania. Niezależnie od tekstu powiązanego z dane wywołania zwrotnego są czytelne dla komputera.

Jeśli użytkownik wyśle SMS-a, agent może przeanalizować odpowiedź: słów kluczowych lub rozumienia języka naturalnego (np. Dialogflow integracja na przetworzenie wiadomości użytkownika i określenie ścieżki.

Jeśli agent nie wie, jak odpowiedzieć na wiadomość użytkownika, powinien odpowiedzieć ze stanem błędu i spróbować kontynuować rozmowę przez prosząc użytkownika o podanie dodatkowych informacji przez albo przekazać rozmowę pracownikowi obsługi klienta.

Odpowiedz użytkownikowi

Gdy agent zidentyfikuje prawidłową odpowiedź – za pomocą automatyzacji lub pracownik obsługi klienta – wysyła wiadomość i kontynuuje rozmowę z użytkownikiem.

Tworząc odpowiedź, weź pod uwagę język użytkownika. Możesz także dostosowuj odpowiedzi, pobierając wartości z obiektu userInfo w każdym otrzymaną wiadomość.

Rodzaje wiadomości

Poniższy kod pokazuje, jak agent odbiera wiadomości.

Informacje o formatowaniu i wartości: UserMessage

Tekst

Użytkownicy najczęściej odpowiadają na wiadomości, używając zwykłego tekstu. SMS-y zawierają w poniższym formacie.

{
  "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",
}

Informacje o opcjach formatowania i wartości znajdziesz w Message

Obraz

Oprócz wysyłania SMS-ów użytkownicy mogą też wysyłać obrazy do agenta jako wiadomości. Business Messages przechowuje udostępnione obrazy przez 7 dni pod podpisanym” Adresy URL i umieszcza te adresy URL w polu text ładunku wiadomości.

Jeśli pracownik obsługi klienta obejmuje automatyzację, musi on wiedzieć, jak ma zareagować. gdy użytkownik udostępni zdjęcie. W przypadku aktywnych agentów upewnij się, że obrazy są przekazywane lub że adresy URL znajdujące się w wiadomościach będą klikalne.

...
"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"
  }
...

Informacje o opcjach formatowania i wartości znajdziesz w Message

Sugestia

Sugerowane odpowiedzi i sugerowane działania pozwalają użytkownikom odpowiedzieć lub wykonać określone czynności czynności wykonywane jednym kliknięciem. Gdy użytkownik kliknie sugestię, agent otrzyma ładunek z tekstem sugestii i danymi wywołania zwrotnego.

Wiadomości z sugestiami 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",
}

Informacje o opcjach formatowania i wartości znajdziesz w SuggestionResponse

Prośba o uwierzytelnienie

Sugestia żądania uwierzytelnienia umożliwia użytkownikom logowanie się za pomocą protokołu OAuth dostawcy, który udostępnia agentowi szczegóły tożsamości lub umożliwia mu: wykonywać działania na użytkownikach w imieniu Google. Zobacz Uwierzytelnij za pomocą OAuth.

Jeśli użytkownik zaloguje się przy użyciu określonego dostawcy OAuth, agent odbiera ładunek z kodem autoryzacji. Jeśli użytkownikowi nie uda się Gdy się zalogujesz, agent otrzyma ładunek ze szczegółami błędu.

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",
}

Informacje o opcjach formatowania i wartości znajdziesz w 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 Ekran komunikatu, od którego użytkownik rozpoczął rozmowę, zgodnie z definicją przez EntryPoint.
placeId Unikalny identyfikator lokalizacji z bazy danych Miejsc Google do których użytkownik wysłał wiadomość. Pojawia się on tylko w wiadomościach dotyczących określonej lokalizacji punkty wejścia.
nearPlaceId Unikalny identyfikator z bazy danych Miejsc Google dla pierwszego lokalizacja w pakiecie lokalnym. Potwierdź lokalizacje, z którymi użytkownicy chcą czatować , gdy otrzymasz nearPlaceId wartości.
deflectedPhoneNumber Numer telefonu, z którego funkcja Business Messages uniemożliwiła użytkownikowi dzwonienie od chwili rozpoczęcia rozmowy.
resolvedLocale

Najdokładniejsze obliczone dopasowanie do języka użytkownika (podanego w userDeviceLocale) i języki obsługiwane przez agenta (co jest określone przez określone ustawienia rozmowy). Zobacz Lokalizacja oraz Rozpocznij rozmowę.

Wartość języka to prawidłowy tag języka IETF BCP 47.

userInfo.displayName Nazwa użytkownika, który wysłał wiadomość. Jeśli użytkownik zrezygnuje udostępnianie tożsamości, to pole jest puste.
userInfo.userDeviceLocale Zgłoszona przez urządzenie język użytkownika, jako poprawny 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 używanego widżetu aby rozpocząć rozmowę.

Historia rozmowy

Google nie dostarcza historii rozmów. Prowadź przegląd danych historycznych rozmowy w sposób zgodny z polityką prywatności i sprawdzonymi metodami dzięki czemu możesz wysyłać rzetelne odpowiedzi na kolejne wiadomości.