Après avoir reçu un message d'un utilisateur, vous pouvez envoyer une réponse à poursuivre la conversation. Vous pouvez envoyer des messages à un utilisateur jusqu'à 30 jours après le dernier message de l'utilisateur.
Les agents communiquent avec les utilisateurs en envoyant et en recevant des messages. Pour envoyer messages aux utilisateurs, votre agent envoie des invitations à discuter à Business Messages.
Pour envoyer un message, vous envoyez une requête HTTP POST à l'API Business Messages qui inclut
- un identifiant de message unique
- l'ID de la conversation.
- le contenu du message
Lorsque l'API Business Messages envoie votre message à l'utilisateur, elle renvoie un
200 OK
Si des valeurs obligatoires sont manquantes dans votre message, l'API
renvoie une erreur 400
. Si le message utilise des identifiants non valides, l'API renvoie
une erreur 401
.
Utiliser les journaux de la console pour les développeurs Business Communications pour déboguer les problèmes de distribution des messages.
Stratégie de remplacement
Si l'appareil d'un utilisateur n'est pas compatible avec un message que vous tentez d'envoyer, par exemple si un
l'utilisateur n'accepte pas les réponses suggérées, l'API renvoie une erreur 400 (FAILED
PRECONDITION)
. Toutefois, vous pouvez contourner
les types de messages non pris en charge
spécifiant fallback
du texte pour chaque message que vous envoyez. Si vous spécifiez fallback
l'API renvoie une réponse 200 OK
, même si l'appareil de l'utilisateur
sont compatibles avec le type de message.
Si un utilisateur reçoit un message indiquant que son appareil n'est pas compatible, mais qui inclut
fallback
, son appareil affiche le texte fallback
à la place. Ce
vous permet de poursuivre la conversation de façon proactive sans
interrompant le flux de la conversation, ou prenant du temps pour traiter une erreur 400
(FAILED PRECONDITION)
et identifier un autre message.
Le texte fallback
d'un message donné doit refléter la fonction du message.
Par exemple,
- Pour les messages associés à des suggestions de réponses ou d'actions, incluez le texte dans
Le texte
fallback
et inclure des conseils sur les options dont disposent les utilisateurs pour poursuivre la conversation. - Pour les cartes enrichies ou les carrousels, incluez le titre et la description dans le
fallback
le texte et inclure des liens vers des images ou des sites Web.
Pour insérer des sauts de ligne dans le texte fallback
, utilisez \n
ou \r\n
.
Tester le texte de remplacement
Avant de lancer un agent, vous pouvez tester l'affichage du texte de remplacement dans un
conversation en envoyant un message avec le paramètre d'URL forceFallback
défini sur
true
Lorsque vous forcez le texte de remplacement, la conversation ignore
le contenu du message (texte et suggestion d'URL ouverte dans l'exemple suivant) et
affiche le texte de remplacement à la place.
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 a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#fallback_strategy # 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 curl -X POST \ "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages?forceFallback=true" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'text': 'Hello world!', 'fallback': 'Hello, world!\n\nSay \"Hello\" at https://www.growingtreebank.com', 'suggestions': [ { 'action': { 'text': 'Hello', 'postbackData': 'hello-formal', 'openUrlAction': { 'url': 'https://www.growingtreebank.com', } }, }, ], '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 a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#fallback_strategy * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = '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 defaulting to the fallback text. * * @param {string} conversationId The unique id for this user and agent. * @param {string} message The message text to send the user. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, message, representativeType) { const authClient = await initCredentials(); // Create the payload for sending a message const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, forceFallback: true, // Force usage of the fallback text resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, text: message, fallback: 'This is the fallback text' }, }; // 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); }); } /** * 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');
Java
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class TestFallbackTestSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a basic text message with fallback text BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setFallback("This is the fallback text") .setText("MESSAGE_TEXT") .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Force usage of the fallback text messageRequest.setForceFallback(true); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
Python
"""This code sends a text message to the user with a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#fallback_strategy 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 BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = '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 message with fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), fallback='This is the fallback text', representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='This is a sample text') # Create the message request, force usage of the fallback text create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, forceFallback=True, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
Pour plus d'informations, consultez Message
.
Représentants
Lorsque votre agent envoie un message, vous spécifiez un représentant: l'humain ou
l'automatisation qui a composé le message. Business Messages est compatible avec HUMAN
et
représentants de BOT
.
Spécifiez un représentant BOT
lorsqu'un message est composé d'une automatisation,
si l'automatisation est un répondeur automatique indiquant aux utilisateurs leur place dans un
un agent de compréhension du langage naturel complexe
disposant d'un accès dynamique
des détails sur l’utilisateur ou
tout ce qui se trouve entre les deux. Les messages avec BOT
représentants s'affichent
avec une petite icône
qui aide à définir l'expérience des attentes quant aux types
d’interactions qu’ils pourraient
s’impliquer.
Spécifiez un représentant HUMAN
uniquement lorsqu'un agent réel rédige un message.
Avant d'envoyer un message d'un représentant HUMAN
, envoyez une
REPRESENTATIVE_JOINED
event auquel
les utilisateurs savent qu'ils peuvent envoyer
des messages de forme plus libre ou plus complexes. Après avoir envoyé votre
dernier message d'un représentant HUMAN
, envoyer un événement REPRESENTATIVE_LEFT
pour définir à nouveau
les attentes des utilisateurs.
Par exemple, si un utilisateur entame une conversation avec votre agent et que vous
envoyer un message automatique indiquant qu'un agent devrait être présent dans un délai de
minutes, ce message doit être envoyé par un représentant BOT
. Avant le
un agent rejoint, envoyez un événement REPRESENTATIVE_JOINED
. Tous les messages du
l'agent réel doit être identifié comme provenant d'un représentant HUMAN
. Lorsque
l'agent quitte la conversation, envoyez un événement REPRESENTATIVE_LEFT
. Tout
les messages suivants doivent provenir d'un représentant BOT
, sauf si un autre
l'agent rejoint la conversation.
Découvrez Passer du bot au direct
agent
pour obtenir un exemple de conversation et du code permettant de passer de BOT
à HUMAN
représentants.
Vous pouvez spécifier un représentant (BOT
ou HUMAN
)
le nom à afficher et l'avatar. Les noms à afficher et les avatars sont visibles par les utilisateurs.
Les avatars doivent être spécifiés (1 024 x 1 024 pixels, 50 Ko maximum)
en tant qu'URL publiques. Si vous ne fournissez pas d'image d'avatar, l'agent
est utilisé pour l'avatar du représentant.
Texte
Les messages les plus simples sont composés de texte. Les SMS sont particulièrement adaptés communiquer des informations sans avoir besoin de visuels, d'interactions complexes ou de réponse.
Exemple
Le code suivant envoie un simple SMS. Pour plus d'informations, consultez
conversations.messages.create
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. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#text # 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 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': 'Hello world!', '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. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#text * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = '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 text message to the Business Messages API. * * @param {string} conversationId The unique id for this user and agent. * @param {string} message The message text to send the user. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, message, representativeType) { const authClient = await initCredentials(); // Create the payload for sending a message const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, text: message, }, }; // 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); }); } /** * 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, 'This is a test message', 'BOT');
Java
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendTextMessageSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a basic text message BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("MESSAGE_TEXT") .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
Python
"""This code sends a text message to the user. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#text 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 BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = '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 message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='This is a sample text') # 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)
Texte enrichi
Les SMS avec containsRichText
défini sur true
peuvent inclure ce qui suit :
le formatage de base Markdown. Vous pouvez inclure des hyperliens ou
mettre le texte en gras ou
en italique. Le tableau présente quelques exemples valides:
Mise en forme | Caractères | Texte brut | Texte affiché |
---|---|---|---|
Gras | ** |
**Some text** |
Texte |
Italique | * |
*Some text* |
Texte |
Lien hypertexte | []() |
[Click here](https://www.example.com) |
Cliquez ici |
Saut de ligne | \n
|
Line one\nLine two
|
Ligne 1 Ligne 2 |
La mise en forme doit respecter des règles supplémentaires:
- Tous les liens doivent commencer par
https://
ouhttp://
- Différents types de mise en forme peuvent être imbriqués, sans toutefois pouvoir se chevaucher.
- Vous pouvez insérer des sauts de ligne avec
\n
n'importe où dans votre message, mais vous pouvez en insérer la fin de votre message ne s’affiche pas. - Pour afficher normalement n'importe quel caractère réservé (
*
,\
,[
ou]
), vous devez les préfixer d'une barre oblique inverse (\
).
Échec de l'envoi des messages dont le format est incorrect et affiche le message d'erreur suivant : Markdown non valide. Le tableau présente d'autres exemples valides et non valides basés sur les règles ci-dessus:
Texte brut | Validité | Texte affiché |
---|---|---|
[Click here](www.example.com) |
Non valide. Le lien ne commence pas par http:// ni par https:// |
Ne s'affiche pas. |
[**Click here**](https://www.example.com) |
Valide. L'imbrication est autorisée. | Cliquez ici |
**This is [not** valid](https://www.example.com) |
Non valide. Le chevauchement des formats n'est pas autorisé. | Ne s'affiche pas. |
** Some bold text ** |
Non valide. Aucun espace blanc de fin n'est autorisé dans ** . |
Ne s'affiche pas. |
Citation below\* |
Valide. Le caractère * est échappé. |
Citation ci-dessous : * |
Exemple
Le code suivant envoie un message en texte enrichi. Pour plus d'informations, consultez
conversations.messages.create
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 rich text to the user with a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich_text # 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 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)', 'fallback': 'Hello, check out this link https://www.google.com.', 'text': 'Hello, here is some **bold text**, *italicized text*, and a [link](https://www.google.com).', 'containsRichText': 'true', 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' } }"
Node.js
/** * This code sends a rich text to the user with a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich_text * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = '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 rich text message using markdown to the Business Messages API. * * @param {string} conversationId The unique id for this user and agent. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, message, representativeType) { const authClient = await initCredentials(); // Create the payload for sending a rich text message const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, containsRichText: true, // Force this message to be processed as rich text text: 'Hello, here is some **bold text**, *italicized text*, and a [link](https://www.google.com).', fallback: 'Hello, check out this link https://www.google.com.' }, }; // 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); }); } /** * 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');
Java
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendRichTextMessageSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a rich text message BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setContainsRichText(true) // Force this message to be processed as rich text .setText("Hello, here is some **bold text**, *italicized text*, and a [link](https://www.google.com).") .setFallback("Hello, check out this link https://www.google.com.") .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
Python
"""This code sends a rich text to the user with a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich_text 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 BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = '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 rich text message with fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), fallback='Hello, check out this link https://www.google.com.', containsRichText=True, # Force this message to be processed as rich text representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='Hello, here is some **bold text**, *italicized text*, and a [link](https://www.google.com).') # 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)
Images
Envoyez une image à un utilisateur dans un message.
Vous pouvez envoyer un message contenant les URL de l'image et sa vignette.
Exemple
Le code suivant envoie une image. Pour le formatage et
, consultez
conversations.messages.create
et
Image
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 an image to the user with a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#images # 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 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)', 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, 'fallback': 'Hello, world!\nAn image has been sent with Business Messages.', 'image': { 'contentInfo':{ 'altText': 'Image alternative text', 'fileUrl': 'https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg', 'forceRefresh': 'false' } }, }"
Node.js
/** * This code sends an image to the user with a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#images * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = '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 an image message to the Business Messages API. * * @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 an image message const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Hello, world!\n An image has been sent with Business Messages.', image: { contentInfo: { altText: 'Some alternative text', fileUrl: 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png', forceRefresh: true, }, }, }, }; // 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');
Java
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import com.google.communications.businessmessages.v1.MediaHeight; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendImageMessageSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create an Image BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setRepresentative(representative) .setImage(new BusinessMessagesImage() .setContentInfo( new BusinessMessagesContentInfo() .setFileUrl("FILE_URL") .setAltText("ALT_TEXT") .setForceRefresh("FORCE_REFRESH") )); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
Python
"""This code sends an image to the user with a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#images 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 BusinessMessagesContentInfo from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesImage from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' image_file_url = '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 an image message with fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), fallback='Hello, world!\nAn image has been sent with Business Messages.', image=BusinessMessagesImage( contentInfo=BusinessMessagesContentInfo( altText='Alternative text', fileUrl=image_file_url, forceRefresh=True ) )) # 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)
Réponses suggérées
Les réponses suggérées guident les utilisateurs dans les conversations en fournissant des réponses qui auquel l'agent sait comment réagir.
Lorsqu'un utilisateur appuie sur une réponse suggérée, votre agent reçoit un message contenant le texte et les données de postback de la réponse.
Les réponses suggérées ne doivent pas dépasser 25 caractères, et un message ne peut pas comporter plus de 25 caractères. sur 13 suggestions.
Exemple
Le code suivant envoie un texte avec deux suggestions de réponses. Pour le formatage et
, consultez
conversations.messages.create
et
SuggestedReply
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 mesage to the user with suggested replies. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#suggested_replies # 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 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': 'Hello, world!', 'fallback': 'Hello, world!\n\nReply with \"Hello\" or \"Hi!\"', 'suggestions': [ { 'reply': { 'text': 'Hello', 'postbackData': 'hello-formal', }, }, { 'reply': { 'text': 'Hi!', 'postbackData': 'hello-informal', }, }, ], 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, }"
Node.js
/** * This code sends a text mesage to the user with suggested replies. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#suggested_replies * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = '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 of "Hello, world!" to the Business Messages API along with two suggested replies. * * @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(); // Create a text message with two suggested replies const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Hello, world!\n\nReply with "Hello" or "Hi!"', text: 'Hello, world!', suggestions: [ { reply: { text: 'Hello', postbackData: 'hello-formal', }, }, { reply: { text: 'Hello', postbackData: 'hello-informal', }, }, ], }, }; // 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); }); } /** * 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');
Java
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendSuggestedReplySnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a text message with two suggested replies BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("Hello, world!") .setFallback("Hello, world!\n\nReply with \"Hello\" or \"Hi!\"") .setSuggestions(Arrays.asList( new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Hello").setPostbackData("hello-formal") ), new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Hi!").setPostbackData("hello-informal") )) ) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
Python
"""This code sends a text mesage to the user with suggested replies. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#suggested_replies 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 BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestedReply from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = '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 two suggested replies and fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='Hello, world!', fallback='Hello, world!\n\nReply with \"Hello\" or \"Hi!\"', suggestions=[ BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Hello', postbackData='hello-formal') ), BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Hi!', postbackData='hello-informal') ) ]) # 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)
Actions suggérées
Les actions suggérées guident les utilisateurs tout au long des conversations grâce au format natif la fonctionnalité de leurs appareils. Lorsqu'un utilisateur appuie sur une action suggérée, votre reçoit un message contenant le texte et les données de postback de l'action.
Les actions suggérées ne doivent pas dépasser 25 caractères, et un message ne peut pas comporter plus de 25 caractères sur 13 suggestions.
Pour connaître les options de mise en forme et de valeur, consultez
conversations.messages.create
et
SuggestedAction
Action d'ouverture d'URL
Avec l'action "Open URL" (Ouvrir l'URL), votre agent suggère une URL à ouvrir par un utilisateur. Si un est enregistré comme gestionnaire par défaut pour l'URL, l'application s'ouvre à la place, et l'icône de l'action est l'icône de l'application. Les actions d'ouverture d'URL ne sont compatibles qu'avec les URL avec les protocoles HTTP et HTTPS, les autres protocoles (tels que mailto) compatibles.
Le code suivant envoie du texte avec une action "Open URL" (Ouvrir l'URL). Pour la mise en forme et la valeur
options, consultez
OpenUrlAction
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 mesage to the user with a suggestion action toopen a URL # and a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#open_url_action # 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 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': 'Hello world!', 'fallback': 'Hello, world!\n\nSay \"Hello\" at https://www.growingtreebank.com', 'suggestions': [ { 'action': { 'text': 'Hello', 'postbackData': 'hello-formal', 'openUrlAction': { 'url': 'https://www.growingtreebank.com', } }, }, ], 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, }"
Node.js
/** * This code sends a text mesage to the user with a suggestion action toopen a URL * and a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#open_url_action * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = '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 with an open URL action to the Business Messages API. * * @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 open url action const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Hello, world!\n\nSay \"Hello\" at https://www.growingtreebank.com', text: 'Hello world!', suggestions: [ { action: { text: 'Hello', postbackData: 'hello-formal', openUrlAction: { url: 'https://www.growingtreebank.com', }, }, }, ], }, }; // 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');
Java
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendSuggestedActionSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a text message with an open url action BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("Hello world!") .setFallback("Hello, world!\n\nSay \"Hello\" at https://www.growingtreebank.com") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setAction(new BusinessMessagesSuggestedAction() .setText("Hello").setPostbackData("hello-formal") .setOpenUrlAction( new BusinessMessagesOpenUrlAction().setUrl("https://www.growingtreebank.com")) )) ) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
Python
"""This code sends a text mesage to the user with a suggestion action to open a URL. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#open_url_action 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 BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesOpenUrlAction from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestedAction from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = '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 open url action and fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='Hello, world!', fallback='Hello, world!\n\nReply with \"Hello\" or \"Hi!\"', suggestions=[ BusinessMessagesSuggestion( action=BusinessMessagesSuggestedAction( text='Hello', postbackData='hello-formal', openUrlAction=BusinessMessagesOpenUrlAction( url='https://www.growingtreebank.com')) ), ]) # 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)
Cadran
L'action "Appeler" suggère un numéro de téléphone à composer par l'utilisateur. Lorsqu'un utilisateur appuie sur Chip de suggestion d'action de numérotation, l'application téléphonique par défaut de l'utilisateur s'ouvre prérempli avec le numéro de téléphone spécifié.
Le code suivant envoie un SMS avec une action d'appel. Pour la mise en forme et la valeur
options, consultez
DialAction
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 mesage to the user with a suggestion action to dial # a phone number and a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#dial_action # 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 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': 'Contact support for help with this issue.', 'fallback': 'Give us a call at +12223334444.', 'suggestions': [ { 'action': { 'text': 'Call support', 'postbackData': 'call-support', 'dialAction': { 'phoneNumber': '+12223334444', } }, }, ], 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, }"
Node.js
/** * This code sends a text mesage to the user with a suggestion action to dial * a phone number and a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#dial_action * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = '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 with a dial suggested action to the Business Messages API. * * @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 a dial action const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Give us a call at +12223334444.', text: 'Contact support for help with this issue.', suggestions: [ { action: { text: 'Call support', postbackData: 'call-support', dialAction: { phoneNumber: '+12223334444', }, }, }, ], }, }; // 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');
Java
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendDialActionSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a text message with a dial action BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("Contact support for help with this issue.") .setFallback("Give us a call at +12223334444.") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setAction(new BusinessMessagesSuggestedAction() .setText("Call support").setPostbackData("call-support") .setDialAction( new BusinessMessagesDialAction().setPhoneNumber("+12223334444")) ))) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
Python
"""Sends a text mesage to the user with a suggestion action to dial a phone number. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#dial_action 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 BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesDialAction from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestedAction from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = '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 a dial action and fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='Contact support for help with this issue.', fallback='Give us a call at +12223334444.', suggestions=[ BusinessMessagesSuggestion( action=BusinessMessagesSuggestedAction( text='Call support', postbackData='call-support', dialAction=BusinessMessagesDialAction( phoneNumber='+12223334444')) ), ]) # 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)
Suggestion de demande d'authentification
La suggestion de demande d'authentification invite les utilisateurs à se connecter à un Application conforme à OAuth 2.0, transmission des codes d'authentification pour confirmer données de compte, ainsi que la mise en place d'expériences utilisateur personnalisées et de conversations détaillées les flux de données. Consultez la section S'authentifier avec OAuth.
Exemple
Le code suivant envoie du texte avec une suggestion de requête d'authentification. Pour
de mise en forme et de valeur, consultez
conversations.messages.create
et
Suggestion
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');
Java
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendAuthenticationRequestSuggestionSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a text message with an authentication request BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("Would you like to chat with a live agent?") .setFallback("Would you like to chat with a live agent?") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setAuthenticationRequest(new BusinessMessagesAuthenticationRequest() .setOauth(new BusinessMessagesAuthenticationRequestOauth() .setClientId("CLIENT_ID") .setCodeChallenge("CODE_CHALLENGE") .setScopes(Arrays.asList("SCOPE")) ))) ) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
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)
Suggestion de demande d'agent
La suggestion de demande d'agent en direct vous permet de guider les utilisateurs pour qu'ils interagissent avec des représentants humains lors d'interactions complexes ou lorsque votre automatisation ne peut pas pour traiter la requête d'un utilisateur.
Les utilisateurs peuvent demander un agent réel à tout moment d'une conversation à partir du débordement . Cette suggestion permet aux agents de suggérer des interactions avec des représentants humains en fonction du contexte conversationnelle. Votre agent doit toujours être prêt à répondre à un agent événement demandé, même s'il n'a pas envoyé de suggestion de demande d'agent.
Lorsque les utilisateurs appuient sur une suggestion de demande d'agent, un agent réel est déclenché demandée événement.
Exemple
Le code suivant envoie un SMS avec une suggestion de demande d'agent. Pour
de mise en forme et de valeur, consultez
conversations.messages.create
et
Suggestion
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 a Live agent request suggestion # that allows the user to connect with a Live agent. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#live_agent_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 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': 'Would you like to chat with a live agent?', 'fallback': 'Would you like to chat with a live agent?', 'suggestions': [ { 'liveAgentRequest': {}, }, ], '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 a Live agent request suggestion * that allows the user to connect with a Live agent. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#live_agent_request_suggestion * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = '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 with a live agent request action to the Business Messages API. * * @param {string} conversationId The unique id for this user and agent. */ async function sendMessage(conversationId) { const authClient = await initCredentials(); if (authClient) { // Create the payload for sending a message along with a request for live agent action const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: 'BOT', // Must be sent from a BOT representative }, fallback: 'Would you like to chat with a live agent?', text: 'Would you like to chat with a live agent?', suggestions: [ { liveAgentRequest: {} }, ], }, }; // 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);
Java
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendLiveAgentRequestSuggestionSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a text message with a live request action BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("Would you like to chat with a live agent?") .setFallback("Would you like to chat with a live agent?") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setLiveAgentRequest(new BusinessMessagesLiveAgentRequest())) ) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("BOT")); // Must be sent from a BOT representative // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
Python
"""Sends a text message to the user with a Live agent request suggestion. It allows the user to connect with a Live agent. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#live_agent_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 BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesLiveAgentRequest 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 # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = '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) # Create a text message with a live agent request action and fallback text # Follow instructions at https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#live_agent_request_suggestion message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( # Must be sent from a BOT representative representativeType=BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT ), text='Would you like to chat with a live agent?', fallback='Would you like to chat with a live agent?', suggestions=[ BusinessMessagesSuggestion( liveAgentRequest=BusinessMessagesLiveAgentRequest() ) ]) # 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)
Cartes enrichies
Lorsque vous avez besoin d'envoyer un bloc d'informations, de contenus multimédias ou de suggestions connexes, doit envoyer une carte enrichie. Les cartes enrichies permettent à l'agent d'envoyer plusieurs unités d'informations dans un même message.
Les cartes enrichies peuvent contenir les éléments suivants:
- Contenu multimédia (JPG, JPEG ou PNG, 5 Mo maximum)
- Miniature du média (JPG, JPEG ou PNG, 25 Ko maximum)
- Titre (200 caractères maximum)
- Description (2 000 caractères maximum)
- une liste de suggestions de réponses ; et les suggestions d'actions (4 au maximum)
Une carte enrichie peut contenir tout ou partie des éléments répertoriés, mais une carte doit contenir au moins un support ou un titre pour être valide. Une carte enrichie peut contenir jusqu'à quatre les actions et les réponses suggérées.
Votre agent peut envoyer plusieurs cartes enrichies dans une carte enrichie carrousel.
Exemple
Le code suivant envoie une carte enrichie avec une image et des réponses suggérées. Pour
de mise en forme et de valeur, consultez
conversations.messages.create
et
RichCard
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 rich card to the user with a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-cards # 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 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)', 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, 'fallback': 'Hello, world!\nSent with Business Messages\n\nReply with \"Suggestion #1\" or \"Suggestion #2\"', 'richCard': { 'standaloneCard': { 'cardContent': { 'title': 'Hello, world!', 'description': 'Sent with Business Messages.', 'media': { 'height': 'TALL', 'contentInfo':{ 'altText': 'Google logo', 'fileUrl': 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png', 'forceRefresh': 'false' } }, 'suggestions': [ { 'reply': { 'text': 'Suggestion #1', 'postbackData': 'suggestion_1' } }, { 'reply': { 'text': 'Suggestion #2', 'postbackData': 'suggestion_2' } } ] } } } }"
Node.js
/** * This code sends a rich card to the user with a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-cards * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = '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 rich card message to the Business Messages API. * * @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 rich card message with two suggested replies const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Hello, world!\nSent with Business Messages\n\nReply with \"Suggestion #1\" or \"Suggestion #2\"', richCard: { standaloneCard: { cardContent: { title: 'Hello, world!', description: 'Sent with Business Messages.', media: { height: 'TALL', contentInfo: { altText: 'Google logo', fileUrl: 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png', forceRefresh: false, }, }, suggestions: [ { reply: { text: 'Suggestion #1', postbackData: 'suggestion_1', }, }, { reply: { text: 'Suggestion #2', postbackData: 'suggestion_2', }, }, ], }, }, }, }, }; // 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');
Java
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import com.google.communications.businessmessages.v1.MediaHeight; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendRichCardMessageSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a rich card with two suggested replies BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setFallback("Hello, world!\nSent with Business Messages\n\nReply with \"Suggestion #1\" or \"Suggestion #2\"") .setRichCard(new BusinessMessagesRichCard() .setStandaloneCard(new BusinessMessagesStandaloneCard() .setCardContent( new BusinessMessagesCardContent() .setTitle("Hello, world!") .setDescription("Sent with Business Messages.") .setSuggestions(Arrays.asList( new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Suggestion #1").setPostbackData("suggestion_1") ), new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Suggestion #2").setPostbackData("suggestion_2") )) ) .setMedia(new BusinessMessagesMedia() .setHeight(MediaHeight.MEDIUM.toString()) .setContentInfo( new BusinessMessagesContentInfo() .setAltText("Google logo") .setFileUrl("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png") .setForceRefresh(false) )) ))) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
Python
"""This code sends a rich card to the user with a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-cards 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 BusinessMessagesCardContent from businessmessages.businessmessages_v1_messages import BusinessMessagesContentInfo from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMedia from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesRichCard from businessmessages.businessmessages_v1_messages import BusinessMessagesStandaloneCard from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestedReply from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = '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 rich card message with two suggested replies and fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), fallback='Hello, world!\nSent with Business Messages\n\nReply with \"Suggestion #1\" or \"Suggestion #2\"', richCard=BusinessMessagesRichCard( standaloneCard=BusinessMessagesStandaloneCard( cardContent=BusinessMessagesCardContent( title='Hello, world!', description='Sent with Business Messages.', suggestions=[ BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Suggestion #1', postbackData='suggestion_1') ), BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Suggestion #2', postbackData='suggestion_2') ) ], media=BusinessMessagesMedia( height=BusinessMessagesMedia.HeightValueValuesEnum.TALL, contentInfo=BusinessMessagesContentInfo( altText='Google logo', fileUrl='https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png', forceRefresh=False )) )))) # 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)
Carrousels de cartes enrichies
Lorsque vous devez proposer à un utilisateur plusieurs options, utilisez un dans le carrousel de cartes enrichies. Les carrousels s'enchaînent avec plusieurs Fiches, qui permettent aux utilisateurs de comparer des articles et de réagir à chacun individuellement.
Les carrousels peuvent contenir entre deux et dix cartes enrichies. Riche les cartes des carrousels doivent respecter les exigences générales des cartes enrichies pour : le contenu et la hauteur.
Exemple
Le code suivant envoie un carrousel de cartes enrichies. Pour le formatage et
, consultez
conversations.messages.create
et
RichCard
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 to the user a carousel with rich cards and a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-card-carousels # 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 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)', 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, 'fallback': 'Card #1\nThe description for card #1\n\nCard #2\nThe description for card #2\n\nReply with \"Card #1\" or \"Card #2\"', 'richCard': { 'carouselCard': { 'cardWidth': 'MEDIUM', 'cardContents': [ { 'title': 'Card #1', 'description': 'The description for card #1', 'suggestions': [ { 'reply': { 'text': 'Card #1', 'postbackData': 'card_1' } } ], 'media': { 'height': 'MEDIUM', 'contentInfo': { 'fileUrl': 'https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg', 'forceRefresh': 'false', } } }, { 'title': 'Card #2', 'description': 'The description for card #2', 'suggestions': [ { 'reply': { 'text': 'Card #2', 'postbackData': 'card_2' } } ], 'media': { 'height': 'MEDIUM', 'contentInfo': { 'fileUrl': 'https://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg', 'forceRefresh': 'false', } } } ] } } }"
Node.js
/** * This code sends to the user a carousel with rich cards and a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-card-carousels * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = '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 carousel card message to the Business Messages API. * * @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 carousel message // with two cards and a suggested reply for each card const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Card #1\nThe description for card #1\n\nCard #2\nThe description for card #2\n\nReply with \"Card #1\" or \"Card #2\"', richCard: { carouselCard: { cardWidth: 'MEDIUM', cardContents: [ { title: 'Card #1', description: 'The description for card #1', suggestions: [ { reply: { text: 'Card #1', postbackData: 'card_1' } } ], media: { height: 'MEDIUM', contentInfo: { fileUrl: 'https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg', forceRefresh: 'false', } } }, { title: 'Card #2', description: 'The description for card #2', suggestions: [ { reply: { text: 'Card #2', postbackData: 'card_2' } } ], media: { height: 'MEDIUM', contentInfo: { fileUrl: 'https://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg', forceRefresh: 'false', } } } ] } } }, }; // 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');
Java
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import com.google.communications.businessmessages.v1.MediaHeight; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendRichCardCarouselMessage { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a rich card with two suggested replies BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setFallback("Hello, world!\nSent with Business Messages\n\nReply with \"Suggestion #1\" or \"Suggestion #2\"") .setRichCard(new BusinessMessagesRichCard() .setCarouselCard(new BusinessMessagesCarouselCard().setCardWidth("MEDIUM") .setCardContents(Arrays.asList( new BusinessMessagesCardContent() .setTitle("Card #1") .setDescription("The description for card #1") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Card #1").setPostbackData("card_1") ))) .setMedia(new BusinessMessagesMedia() .setHeight(MediaHeight.MEDIUM.toString()) .setContentInfo(new BusinessMessagesContentInfo() .setFileUrl("https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg"))), new BusinessMessagesCardContent() .setTitle("Card #2") .setDescription("The description for card #2") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Card #2").setPostbackData("card_2") ))) .setMedia(new BusinessMessagesMedia() .setHeight(MediaHeight.MEDIUM.toString()) .setContentInfo(new BusinessMessagesContentInfo() .setFileUrl("https://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg"))) ) ))) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
Python
"""This code sends to the user a carousel with rich cards and a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-card-carousels 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 BusinessMessagesCardContent from businessmessages.businessmessages_v1_messages import BusinessMessagesCarouselCard from businessmessages.businessmessages_v1_messages import BusinessMessagesContentInfo from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMedia from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesRichCard from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestedReply from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = '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 carousel message with two cards and a suggested reply for each card # and fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), fallback='Card #1\nThe description for card #1\n\nCard #2\nThe description for card #2\n\nReply with \"Card #1\" or \"Card #2\"', richCard=BusinessMessagesRichCard( carouselCard=BusinessMessagesCarouselCard( cardWidth=BusinessMessagesCarouselCard.CardWidthValueValuesEnum.MEDIUM, cardContents=[ BusinessMessagesCardContent( title='Card #1', description='The description for card #1', suggestions=[ BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Card #1', postbackData='card_1') ) ], media=BusinessMessagesMedia( height=BusinessMessagesMedia.HeightValueValuesEnum.MEDIUM, contentInfo=BusinessMessagesContentInfo( fileUrl='https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg', forceRefresh=False))), BusinessMessagesCardContent( title='Card #2', description='The description for card #2', suggestions=[ BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Card #2', postbackData='card_2') ) ], media=BusinessMessagesMedia( height=BusinessMessagesMedia.HeightValueValuesEnum.MEDIUM, contentInfo=BusinessMessagesContentInfo( fileUrl='https://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg', forceRefresh=False))) ]))) # 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)