Uwierzytelnij przez OAuth

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

Sugestia prośby o uwierzytelnienie

Aby uwierzytelnić użytkownika,

  1. Wygeneruj weryfikator kodu i ciągi zabezpieczające kod dla żądania OAuth. Skontaktuj się z dostawcą protokołu OAuth, aby poznać wymagania i opcje.
  2. Wyślij wiadomość z sugestią prośby o uwierzytelnienie.
# 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'
    }
  }"


/**
 * 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');

"""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)
  1. 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.