OAuth umożliwia agentom weryfikację tożsamości i personalizację w bezpieczny sposób. Gdy użytkownicy logują się zaufanego dostawcy protokołu OAuth, agenty mają dostęp do danych użytkownika i pozwalają szybko odpowiedzi na pytania dzięki automatyzacji i oszczędzać czas pracowników obsługi klienta.
Business Messages obsługuje OAuth 2.0. za pomocą opcji Authentication request (Żądanie uwierzytelnienia) sugestię, z prośbą o zalogowanie się u dostawcy OAuth skonfigurowanego dla agenta. Gdy użytkownik się zaloguje, Business Messages przejdzie autoryzację. z powrotem do agenta w formie wiadomości.
Po otrzymaniu kodu autoryzacji od dostawcy OAuth możesz przeprowadzić integrację z interfejsami API i uzyskać pomoc w ramach rozmów z użytkownikami, informacje na temat tożsamości. Pamiętaj, że każda usługa, z której korzystasz, ma swoje własne warunki korzystania z usługi.
Konfigurowanie protokołu OAuth dla agenta
Aby włączyć sugestię prośby o uwierzytelnienie dla agenta, musisz: najpierw skonfigurować OAuth.
Aby określić konfigurację OAuth, wysyłasz żądanie PATCH
z działem komunikacji biznesowej
Interfejs API
aby zaktualizować pole endpointUrl
agenta.
Po określeniu URL-a punktu końcowego musisz zapisać identyfikatory URI przekierowań dla i zaktualizuj identyfikatory URI przekierowania w informacjach o dostawcy OAuth.
Wymagania wstępne
Potrzebujesz tych elementów:
- Dostawca protokołu OAuth zgodny ze specyfikacją OAuth 2.0
- Ścieżka do klucza konta usługi projektu GCP na komputerze, którego używasz do programowania
Agent
name
(na przykład „brands/12345/agents/67890”)Jeśli nie znasz tego numeru (
name
), zobacz Wyświetlanie listy wszystkich agentów dla danego marki.Adres URL punktu końcowego, pod którym użytkownicy logują się u dostawcy OAuth
Wysyłanie prośby o aktualizację
Aby zaktualizować agenta, uruchom następujące polecenie. Zastąp zmienne wartościami wskazanych w sekcji Wymagania wstępne.
curl -X PATCH \ "https://businesscommunications.googleapis.com/v1/brands/BRAND_ID/agents/AGENT_ID?updateMask=businessMessagesAgent.authorizationConfig" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications)" \ -d "{ 'businessMessagesAgent': { 'authorizationConfig': { 'endpointUrl': 'ENDPOINT_URL', }, }, }"
Zaktualizuj identyfikatory URI przekierowania
Po skonfigurowaniu protokołu OAuth dla agenta musisz dodać 4 identyfikatory URI przekierowania do Twojego dostawcy OAuth:
https://business.google.com/callback
https://business.google.com/callback?
https://business.google.com/message?az-intent-type=1
https://business.google.com/message?az-intent-type=1&
Wszystkie przekierowania musisz umieścić w informacjach o dostawcy OAuth.
Proces aktualizowania identyfikatorów URI przekierowania różni się w zależności od dostawcy OAuth. Więcej informacji znajdziesz na Dostawca protokołu OAuth z instrukcjami.
Po skonfigurowaniu protokołu OAuth dla Twojego agenta możesz uwierzytelnić się użytkowników z funkcją Authentication request (żądanie uwierzytelniania) z sugestią.
Uwierzytelnienie użytkownika
Po skonfigurowaniu protokołu OAuth dla agenta możesz poprosić użytkowników o zalogowanie się Żądanie uwierzytelnienia .
Wymagania wstępne
Potrzebujesz tych elementów:
- Ścieżka do klucza konta usługi projektu GCP na komputerze, którego używasz do programowania
Agent
name
(na przykład „brands/12345/agents/67890”)Jeśli nie znasz tego numeru (
name
), zobacz Wyświetlanie listy wszystkich agentów dla danego marki.Identyfikator klienta od dostawcy OAuth
Wymagania dotyczące kodu zabezpieczającego ustalone przez dostawcę protokołu OAuth
Zakresy od Twojego dostawcy OAuth
Wyślij sugestię prośby o uwierzytelnienie
Aby uwierzytelnić użytkownika,
- Wygeneruj weryfikator kodu i ciągi zabezpieczające kod dla żądania OAuth. Skontaktuj się z dostawcą protokołu OAuth, aby poznać wymagania i opcje.
- Wyślij wiadomość z sugestią prośby o uwierzytelnienie.
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 text message to the user with an authentication request suggestion # that allows the user to authenticate with OAuth. It also has a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#authentication-request-suggestion # 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 # Replace the __CLIENT_ID__ # Replace the __CODE_CHALLENGE__ # Replace the __SCOPE__ curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'text': 'Sign in to continue the conversation.', 'fallback': 'Visit support.growingtreebank.com to continue.', 'suggestions': [ { 'authenticationRequest': { 'oauth': { 'clientId': '__CLIENT_ID__', 'codeChallenge': '__CODE_CHALLENGE__', 'scopes': [ '__SCOPE__', ], }, }, }, ], 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' } }"
Node.js
/** * This code sends a text message to the user with an authentication request suggestion * that allows the user to authenticate with OAuth. It also has a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#authentication-request-suggestion * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Before continuing, learn more about the prerequisites for authenticating * with OAuth at: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/oauth?hl=en * * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const OAUTH_CLIENT_ID = 'EDIT_HERE'; const OAUTH_CODE_CHALLENGE = 'EDIT_HERE'; const OAUTH_SCOPE = '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 message to the Business Messages API along with an authentication request. * * @param {string} conversationId The unique id for this user and agent. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, representativeType) { const authClient = await initCredentials(); if (authClient) { // Create the payload for sending a message along with an authentication request const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Visit support.growingtreebank.com to continue.', text: 'Sign in to continue the conversation.', suggestions: [ { authenticationRequest: { oauth: { clientId: OAUTH_CLIENT_ID, codeChallenge: OAUTH_CODE_CHALLENGE, scopes: [OAUTH_SCOPE] } } }, ], }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } else { console.log('Authentication failure.'); } } /** * 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); } }); }); } sendMessage(CONVERSATION_ID, 'BOT');
Python
"""Sends a text message to the user with an authentication request suggestion. It allows the user to authenticate with OAuth and has a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#authentication-request-suggestion 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 BusinessMessagesAuthenticationRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesAuthenticationRequestOauth from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Before continuing, learn more about the prerequisites for authenticating # with OAuth at: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/oauth?hl=en # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' oauth_client_id = 'EDIT_HERE' oauth_code_challenge = 'EDIT_HERE' oauth_scope = '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) representative_type_as_string = 'BOT' if representative_type_as_string == 'BOT': representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT else: representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.HUMAN # Create a text message with an authentication request message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='Sign in to continue the conversation.', fallback='Visit support.growingtreebank.com to continue.', suggestions=[ BusinessMessagesSuggestion( authenticationRequest=BusinessMessagesAuthenticationRequest( oauth=BusinessMessagesAuthenticationRequestOauth( clientId=oauth_client_id, codeChallenge=oauth_code_challenge, scopes=[oauth_scope]) ) ), ] ) # Create the message request create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
- Gdy użytkownik kliknie sugestię i zaloguje się,
otrzymujesz
w webhooku agenta. Pobierz kod autoryzacji ze strony
authenticationResponse.code
.
Po otrzymaniu wiadomości możesz wymienić kod autoryzacji i kod weryfikatora tokena dostępu od dostawcy OAuth. Możesz uzyskać dostęp do danych użytkowników tokenem dostępu.
Przykładową rozmowę z uwierzytelnianiem, w tym przykłady kodu, znajdziesz w materiałach na temat Uwierzytelnij użytkownika.