OAuth, aracıların kullanıcıların kimlik bilgileri sunmak ve kişiye özel güvenli bir şekilde saklar. Kullanıcıların bir güvenilir OAuth sağlayıcısı olarak, aracılar hızlı bir şekilde yardımcı olabilecek kullanıcı verilerine erişebilir hem de canlı müşteri temsilcileri için zamandan tasarruf sağlar.
Business Messages, OAuth 2.0'ı destekler. Kimlik doğrulama isteği öneriniz varsa Kullanıcılardan, aracı için yapılandırdığınız bir OAuth sağlayıcısında oturum açmalarını ister. Kullanıcı başarıyla oturum açtıktan sonra Business Messages bir yetkilendirme iletir kodu temsilciye mesaj olarak iletir.
OAuth sağlayıcısından yetkilendirme kodunu aldıktan sonra şunları yapabilirsiniz: API'leriyle entegre olmasını ve kullanıcı deneyimi gerektiren sohbet akışlarını desteklemesi kimlik bilgileri. Etkileşimde bulunduğunuz her hizmetin kendine özgü şartları kabul edersiniz.
Aracı için OAuth'u yapılandırma
Bir aracı için Kimlik doğrulama isteği önerisini etkinleştirmek üzere önce OAuth'u yapılandırın.
OAuth yapılandırması belirtmek için YAMA isteğinde bulunursunuz
Business Communication
API
(Müşteri temsilcisinin endpointUrl
alanını güncelleyin).
Uç nokta URL'sini belirttikten sonra, aracını kullanın ve OAuth sağlayıcınızın bilgilerindeki yönlendirme URI'lerini güncelleyin.
Ön koşullar
Aşağıdakilere ihtiyacınız var:
- OAuth 2.0 spesifikasyonuna uyan bir OAuth sağlayıcı
- Geliştirme makinenizdeki GCP projenizin hizmet hesabı anahtarına giden yol
Temsilci
name
(örneğin, "brands/12345/agents/67890")Temsilcinin
name
numarasını bilmiyorsanız brand [marka] özelliğini gönderin.Kullanıcıların OAuth sağlayıcısında oturum açtığı uç nokta URL'si
Güncelleme isteğini gönderin
Aracıyı güncellemek için aşağıdaki komutu çalıştırın. Değişkenleri değerlerle değiştirme Ön koşullar'da tanımladığınızdan emin olun.
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', }, }, }"
Yönlendirme URI'lerini güncelle
Aracı için OAuth yapılandırıldığına göre dört yönlendirme URI'si eklemeniz gerekir. OAuth sağlayıcınıza:
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&
OAuth sağlayıcı bilgilerinize tüm yönlendirme URL'lerini eklemeniz gerekir.
Yönlendirme URI'lerini güncelleme işlemi OAuth sağlayıcısına göre değişir. Daha fazla bilgi için OAuth sağlayıcıyı inceleyin.
Temsilciniz için OAuth yapılandırıldığına göre kimlik doğrulaması yapabilirsiniz: Kimlik doğrulama isteğine sahip kullanıcıları bir öneride bulunun.
Kullanıcının kimliğini doğrulama
Bir aracı için OAuth'u yapılandırdıktan sonra kullanıcılardan Kimlik doğrulama isteği öneri.
Ön koşullar
Aşağıdakilere ihtiyacınız var:
- Geliştirme makinenizdeki GCP projenizin hizmet hesabı anahtarına giden yol
Temsilci
name
(örneğin, "brands/12345/agents/67890")Temsilcinin
name
numarasını bilmiyorsanız brand [marka] özelliğini gönderin.OAuth sağlayıcınızın istemci kimliği
OAuth sağlayıcınızın verdiği kod görevi gereksinimleri
OAuth sağlayıcınızdan alınan kapsamlar
Kimlik doğrulama isteği önerisini gönder
Bir kullanıcının kimliğini doğrulamak için
- OAuth isteği için kod doğrulayıcı ve kod sorgulaması dizelerini oluşturun. Gereksinimler ve seçenekler için OAuth sağlayıcınıza başvurun.
- Kimlik doğrulama isteği önerisini içeren bir mesaj gönderin.
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)
- Kullanıcı öneriye dokunup başarıyla oturum açtığında
alın
mesajını gönderin. Şuradan yetkilendirme kodunu al:
authenticationResponse.code
alanı boş bırakılamaz.
Mesajı aldıktan sonra yetkilendirme kodunu ve kodu paylaşabilirsiniz. doğrulayıcısı hakkında daha fazla bilgi edinin. Kullanıcı verilerine erişebilirsiniz. gerekiyor.
Kod örneklerini de içeren, kimlik doğrulamalı bir örnek görüşme için bkz. kullanıcı.