Envoyer des messages

Les agents RCS for Business communiquent avec les utilisateurs en envoyant et en recevant des messages. Pour envoyer des messages aux utilisateurs, votre agent envoie des requêtes de message à l'API RCS Business Messaging. Une seule requête peut inclure du texte, des cartes enrichies, des fichiers multimédias et PDF, des réponses suggérées et des actions suggérées.

La plate-forme RCS for Business renvoie des erreurs dans certaines situations pour vous aider à gérer la distribution des messages :

  • Si vous envoyez un message à un utilisateur dont l'appareil n'est pas compatible avec RCS ou dont la fonctionnalité RCS n'est pas activée, la plate-forme RCS pour les entreprises renvoie une erreur 404 NOT_FOUND. Dans ce cas, vous pouvez essayer de contacter l'utilisateur par le biais des méthodes de remplacement définies dans votre infrastructure.
  • Si vous envoyez un message à un utilisateur RCS sur un réseau sur lequel votre agent n'est pas encore lancé ou sur un réseau qui n'a pas activé le trafic RCS, la plate-forme RCS pour les entreprises renvoie une erreur 404 NOT_FOUND.
  • Si vous envoyez un message avec des fonctionnalités non compatibles avec l'appareil d'un utilisateur, la plate-forme RCS for Business renvoie une erreur 400 INVALID_ARGUMENT et ne distribue pas votre message.

Dans le cadre de votre stratégie de messagerie multicanal, il est préférable de révoquer les messages qui ne sont pas distribués après un délai raisonnable et de les envoyer par un autre canal. Pour révoquer automatiquement des messages à une heure prédéfinie, définissez une date d'expiration.

Le destinataire n'est pas connecté

La plate-forme RCS for Business accepte toujours un message à envoyer si le destinataire est hors connexion. Vous recevez une réponse 200 OK, et la plate-forme RCS for Business conserve le message et tente de le renvoyer pendant 30 jours. Il n'est pas nécessaire de demander à RCS pour les entreprises de renvoyer le message.

RCS for Business supprime tous les messages non remis 30 jours après leur envoi.

En fonction du cas d'utilisation de votre agent, vous pouvez révoquer un message non distribué avant ce délai de 30 jours. La révocation peut empêcher les utilisateurs hors connexion de recevoir un message obsolète lorsqu'ils se reconnectent. Il existe plusieurs façons de révoquer un message :

Définir l'expiration d'un message

Le message de votre agent est-il urgent ? Par exemple, les codes secrets à usage unique ne sont valides que pendant une courte période. Les offres à durée limitée expirent. Les rappels de rendez-vous ne sont plus pertinents après la date du rendez-vous. Pour que les messages soient pertinents et envoyés au bon moment, définissez une date d'expiration. Cela peut empêcher les utilisateurs hors connexion de recevoir du contenu obsolète lorsqu'ils se reconnectent. L'expiration est également un bon signal pour invoquer votre stratégie de messages de secours afin que les utilisateurs obtiennent les informations dont ils ont besoin à temps.

Pour définir une expiration de message, spécifiez l'un des champs suivants dans le message de l'agent :

  • expireTime : heure exacte (en UTC) à laquelle le message expire.
  • ttl(durée de vie) : délai avant l'expiration du message.

Pour connaître les options de mise en forme et de valeur, consultez AgentMessage.

La valeur maximale pour ttl et expireTime est de 15 jours après l'envoi du message.

Bien qu'il n'y ait pas de valeur minimale pour ttl et expireTime, il est recommandé d'attendre au moins 10 secondes après l'envoi du message pour réduire considérablement le risque de recevoir une notification de révocation et de distribution.

Valeur TTL (Time to Live) d'un message

Lorsque vous définissez un délai avant expiration pour un message RCS for Business, vous indiquez la durée pendant laquelle le message doit être considéré comme valide et distribuable. Si le message n'est pas distribué sur l'appareil de l'utilisateur pendant cette période de TTL, la plate-forme RCS pour les entreprises tente automatiquement de le révoquer.

Lorsque vous demandez la révocation d'un message, vous demandez à la plate-forme RCS for Business de cesser de tenter d'envoyer ce message spécifique. Toutefois, cette action n'affecte que les futures tentatives de distribution. Si l'appareil d'un utilisateur a déjà récupéré le message, celui-ci est en cours de traitement et la plate-forme RCS for Business ne peut pas le révoquer sur l'appareil de l'utilisateur.

Voici ce à quoi vous attendre concernant les notifications :

  • Message distribué dans le délai TTL : si l'appareil de l'utilisateur se connecte et reçoit le message avant l'expiration du délai TTL, vous recevez une notification DELIVERED. Aucune notification de révocation ne sera envoyée, car le message a bien été distribué. Il s'agit du scénario le plus courant et attendu.

  • Message non distribué avant l'expiration du TTL : si le TTL expire avant que le message n'atteigne l'appareil de l'utilisateur (par exemple, si l'appareil est hors connexion), la plate-forme RCS for Business tente de révoquer le message. Vous recevez une notification TTL_EXPIRATION_REVOKED indiquant que le message a bien été supprimé de la file d'attente de distribution. Dans ce cas, l'utilisateur ne recevra pas le message.

Recommandations pour gérer les cas extrêmes

Notre système traite la distribution des messages RCS for Business et l'expiration du TTL en parallèle. Par conséquent, il est très rare que vous rencontriez des cas particuliers où le timing des notifications est inattendu. Par exemple, vous pouvez recevoir une notification de remise et une notification TTL, ou aucune des deux.

Voici nos recommandations pour gérer les notifications de messages RCS for Business :

  • Notification DELIVERED : si vous recevez une notification DELIVERED pour un message, cela confirme que le message est parvenu à l'utilisateur. Vous pouvez ignorer les notifications TTL ultérieures pour ce message spécifique.

  • Notification TTL_EXPIRATION_REVOKED : si vous recevez une notification TTL avec l'état TTL_EXPIRATION_REVOKED, cela signifie que le système RCS pour les entreprises cesse de tenter de distribuer ce message spécifique. Vous devez considérer ce message comme non distribué et mettre en œuvre votre stratégie de secours si nécessaire.

  • Notification TTL avec un autre état : si vous recevez une notification TTL avec un autre état, cela indique une tentative de révocation non concluante.

    • Pour les messages critiques, tels que les mots de passe à usage unique (OTP), lancez votre méthode de secours.
    • Pour les messages non critiques, décidez de lancer ou non le remplacement.
  • Aucune notification : dans de rares cas extrêmes, il est possible que le système n'envoie pas de notification TTL et que le client ne génère pas non plus de notification de remise. Il s'agit d'un cas extrêmement rare.

Définir le type de trafic de messages

L'API RBM inclut un champ messageTrafficType pour catégoriser les messages. Alors que les cas d'utilisation des agents définissent toujours le comportement des agents et les règles métier applicables, messageTrafficType permet de catégoriser plus précisément le contenu des messages. Cela permet à un seul agent de gérer plusieurs cas d'utilisation. Pour le moment, cette modification n'a aucune incidence sur les cas d'utilisation des agents existants ni sur les règles métier.

Ce champ est facultatif, mais nous vous recommandons de le définir maintenant pour éviter de recevoir un message d'erreur lorsqu'il deviendra obligatoire.

Pour définir le type de trafic des messages, attribuez le messageTrafficType approprié à chaque message en fonction de son contenu. RCS for Business est compatible avec les types de trafic suivants.

Type de trafic Contenu du message Cas d'utilisation de l'agent
AUTHENTICATION Pour les messages d'authentification. OTP
TRANSACTION Pour les messages concernant les services ou produits existants d'un utilisateur. Par exemple, les confirmations, les reçus de paiement ou les détails de réservation. Transactionnel ou à usages multiples
PROMOTION Pour les messages promotionnels tels que les offres, les remises, les annonces ou d'autres contenus promotionnels. Promotionnel ou à usages multiples
SERVICEREQUEST Pour les messages concernant les services que l'utilisateur a explicitement demandés. OTP, transactionnel, promotionnel ou à usage multiple
ACKNOWLEDGEMENT Messages utilisés pour confirmer une action de l'utilisateur, en particulier une demande de désabonnement. Cela confirme que la demande de l'utilisateur a été reçue et est en cours de traitement. OTP, transactionnel, promotionnel ou à usage multiple

Si aucun type de trafic n'est défini, le système attribue le type par défaut pour le cas d'utilisation de l'agent.

Cas d'utilisation de l'agent Type de trafic par défaut
OTP AUTHENTICATION
Transactionnel TRANSACTION
Promotionnel PROMOTION
Multi-usage MESSAGE_TRAFFIC_TYPE_UNSPECIFIED

Les agents multi-usage n'ont pas de type de trafic par défaut. Vous devez définir explicitement le type de trafic pour chaque message en fonction de son contenu. Si vous ne remplacez pas la valeur MESSAGE_TRAFFIC_TYPE_UNSPECIFIED, une erreur se produit.

Limites de taille des messages

La taille maximale de l'intégralité de la chaîne AgentMessage est de 250 Ko. La partie texte du message est limitée à 3 072 caractères.

Pour éviter une consommation de données inattendue pour les utilisateurs, la taille maximale d'un fichier pouvant être envoyé via RCS pour les entreprises est de 100 Mio. La taille totale combinée de toutes les pièces jointes multimédias et PDF dans un même message RCS pour les entreprises ne doit pas dépasser 100 Mio. (1 Mio = 1 048 576 octets). Pour en savoir plus, consultez Fichiers multimédias et PDF.

Envoyer un message

Les messages les plus simples sont composés de texte. Les messages texte sont particulièrement adaptés pour communiquer des informations sans avoir besoin de visuels, d'interactions complexes ni de réponses.

Exemple

Le code suivant envoie un message en texte brut. Pour connaître les options de mise en forme et de valeur, consultez phones.agentMessages.create.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!"
  },
  "messageTrafficType": "PROMOTION"
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
};

// Send a simple message to the device
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Ce code est un extrait d'un exemple d'agent RBM.

Java

import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Send simple text message to user
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444"
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ce code est un extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create a simple RBM text message
message_text = messages.TextMessage('Hello, world!')

# Send text message to the device
messages.MessageCluster().append_message(message_text).send_to_msisdn('+12223334444')
Ce code est un extrait d'un exemple d'agent RBM.

C#

using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                             projectId);

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
);
Ce code est un extrait d'un exemple d'agent RBM.

Contenu du message de base : conversion des SMS

Les opérateurs ont introduit des modèles de facturation pour prendre en charge la migration des messages SMS vers RCS for Business. Un message RCS for Business contenant jusqu'à 160 caractères UTF-8 est appelé "message de base".

Lorsque vous créez une requête pour envoyer un message de base, n'oubliez pas que les caractères sont comptabilisés comme 1 octet (UTF-8). Si vous envoyez un message contenant des caractères spéciaux tels que des emoji ou un jeu de caractères multi-octets, chaque caractère compte pour deux à quatre caractères UTF-8, voire plus.

Saisissez du texte dans le champ pour vérifier sa longueur :

Les clients RCS peuvent implémenter des aperçus de liens. Si un message RCS for Business en texte brut inclut l'URL d'un site Web avec des tags OpenGraph, le client peut générer un aperçu (image, titre, etc.) pour une expérience plus riche. Par exemple, consultez un message de base avec un aperçu d'URL.

Notez que le client RCS peut permettre à l'utilisateur de désactiver les aperçus des liens.

Mots de passe à usage unique pour la validation des utilisateurs

Vous pouvez utiliser RCS for Business pour envoyer des mots de passe à usage unique (OTP) pour la validation automatique des utilisateurs avec l'API SMS Retriever. Il n'existe pas d'API dédiée à la lecture des codes secrets reçus via RCS for Business.

Fonctionnement sur Android

Pour les applications Android enregistrées auprès de l'API SMS Retriever, l'API écoute un message RCS for Business correctement formaté. Ce message doit contenir à la fois le code OTP et un hachage unique qui identifie votre application.

Lorsqu'un message RCS for Business est reçu au bon format, l'API SMS Retriever le traite comme un code OTP par SMS. Une fois le hachage associé à votre application, le code OTP est extrait et transmis à votre application pour la validation automatique de l'utilisateur.

  • Exemple de message RCS for Business pour la validation de l'utilisateur : Your code is <OTP><app hash>.
  • Exemple : Your code is 123456 M8tue43FGT.

Pour en savoir plus sur le SMS Retriever et les API associées, consultez la documentation sur le SMS Retriever. Pour en savoir plus sur la validation automatique des utilisateurs dans les applications enregistrées auprès de l'API SMS Retriever, consultez ce diagramme de flux.

Fonctionnement sur iOS

Pour iOS, la gestion intégrée des OTP par le système détecte et suggère automatiquement les OTP RCS pour les entreprises pour la saisie automatique, tout comme les OTP SMS. Aucune intégration d'API spécifique n'est requise pour que l'application iOS puisse lire le code OTP.

Fichiers multimédias et PDF

Lorsque vous envoyez un message avec un fichier image, vidéo, audio ou PDF, votre agent doit fournir une URL accessible au public pour le contenu ou importer directement le fichier.

La taille maximale d'un fichier pouvant être envoyé est de 100 Mio. La taille totale combinée de toutes les pièces jointes multimédias et PDF d'un même message ne doit pas dépasser 100 Mio.

Spécifications des miniatures

Pour les fichiers multimédias, vous pouvez également spécifier une miniature qui permet aux utilisateurs de prévisualiser le contenu avant de cliquer dessus. Pour les fichiers audio, le widget audio par défaut est utilisé comme espace réservé.

  • La taille maximale d'une miniature est de 100 Ko. Pour une expérience utilisateur optimale, nous vous recommandons de ne pas dépasser 50 ko.
  • Le format de la miniature doit correspondre à celui du fichier d'origine.

Mise en cache et gestion des URL

La plate-forme RCS for Business met en cache les fichiers pendant 60 jours, et l'API renvoie un ID de fichier que votre agent peut inclure dans les messages envoyés aux utilisateurs. Au bout de 60 jours, RCS for Business supprime les fichiers du cache.

Lorsque vous spécifiez des fichiers par URL, il est recommandé de définir contentMessage.forceRefresh sur false. Si vous définissez contentMessage.forceRefresh sur true, RCS for Business est forcé de récupérer le nouveau contenu à partir de l'URL spécifiée, même si le contenu de l'URL est mis en cache. Cela augmente les délais de remise des messages aux utilisateurs.

Exemple d'URL de fichier

Le code suivant envoie une image. Pour connaître les options de mise en forme et de valeur, consultez AgentContentMessage.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "contentInfo": {
      "fileUrl": "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif",
      "forceRefresh": false
    }
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

let params = {
   fileUrl: 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif',
   msisdn: '+12223334444',
};

// Send an image/video to a device
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Ce code est un extrait d'un exemple d'agent RBM.

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.AgentContentMessage;
import com.google.api.services.rcsbusinessmessaging.v1.model.AgentMessage;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   String fileUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif";

   // create media only message
   AgentContentMessage agentContentMessage = new AgentContentMessage();
   agentContentMessage.setContentInfo(new ContentInfo().setFileUrl(fileUrl));

   // attach content to message
   AgentMessage agentMessage = new AgentMessage();
   agentMessage.setContentMessage(agentContentMessage);

   rbmApiHelper.sendAgentMessage(agentMessage, "+12223334444");
} catch(Exception e) {
   e.printStackTrace();
}
Ce code est un extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create media file attachment
file_message = messages.FileMessage('http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif')

messages.MessageCluster().append_message(file_message).send_to_msisdn('+12223334444')
Ce code est un extrait d'un exemple d'agent RBM.

C#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

string fileUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif";

// Create content info with the file url
ContentInfo contentInfo = new ContentInfo
{
    FileUrl = fileUrl
};

// Attach content info to a message
AgentContentMessage agentContentMessage = new AgentContentMessage
{
    ContentInfo = contentInfo,
};

// Attach content to message
AgentMessage agentMessage = new AgentMessage
{
    ContentMessage = agentContentMessage
};

rbmApiHelper.SendAgentMessage(agentMessage, "+12223334444");
Ce code est un extrait d'un exemple d'agent RBM.

Vous pouvez également importer des fichiers multimédias avant de les envoyer dans un message avec files.create.

Exemple d'importation de fichier

Le code suivant importe un fichier vidéo et un fichier miniature, puis envoie les deux fichiers dans un message. Pour connaître les options de mise en forme et de valeur, consultez files.create et AgentContentMessage.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/upload/v1/files?agentId=AGENT_ID" \
-H "Content-Type: video/mp4" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
--upload-file "FULL_PATH_TO_VIDEO_MEDIA_FILE"

# Capture server-specified video file name from response body JSON


curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/upload/v1/files?agentId=AGENT_ID" \
-H "Content-Type: image/jpeg" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
--upload-file "FULL_PATH_TO_THUMBNAIL_MEDIA_FILE"

# Capture server-specified image file name from response body JSON


curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "uploadedRbmFile": {
      "fileName": "SERVER-SPECIFIED_VIDEO_FILE_NAME",
      "thumbnailName": "SERVER-SPECIFIED_THUMBNAIL_FILE_NAME"
    }
  }
}'

Types de contenus multimédias acceptés

RCS for Business est compatible avec les types de contenus multimédias suivants. Pour les miniatures, seuls les formats image/jpeg, image/jpg, image/gif et image/png sont acceptés.

Type de contenu Type de document Extension Fonctionne avec les cartes enrichies
application/ogg Audio OGG .ogx Non
application/pdf PDF .pdf Oui (uniquement pour Google Messages en Inde)
audio/aac Audio AAC .aac Non
audio/mp3 Format audio MP3 .mp3 Non
audio/mpeg Audio MPEG .mpeg Non
audio/mpg MPG (audio) .mp3 Non
audio/mp4 Audio MP4 .mp4 Non
audio/mp4-latm Audio MP4-latm .mp4 Non
audio/3gpp Audio 3GPP .3gp Non
image/jpeg JPEG .jpeg, .jpg Oui
image/gif GIF .gif Oui
image/png PNG .png Oui
video/h263 Vidéo H263 .h263 Oui
video/m4v Vidéo M4V .m4v Oui
video/mp4 Vidéo MP4 .mp4 Oui
video/mpeg4 Vidéo MPEG-4 .mp4, .m4p Oui
video/mpeg Vidéo MPEG .mpeg Oui
video/webm Vidéo WEBM .webm Oui

Suggestions

Votre agent envoie des suggestions (réponses et actions suggérées) dans des listes de chips de suggestions (11 suggestions maximum) ou dans des cartes enrichies (quatre suggestions maximum).

Chaque suggestion ne peut pas dépasser 25 caractères.

Réponses suggérées

Les réponses suggérées guident les utilisateurs dans les conversations en leur proposant des réponses auxquelles votre agent sait comment réagir.

Lorsqu'un utilisateur appuie sur une réponse suggérée, votre agent reçoit un événement contenant le texte de la réponse et les données de postback. La charge utile ne doit pas dépasser 2 048 caractères.

Exemple

Le code suivant envoie du texte avec deux réponses suggérées. Pour connaître les options de mise en forme et de valeur, consultez SuggestedReply.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "reply": {
          "text": "Suggestion #1",
          "postbackData": "suggestion_1"
        }
      },
      {
        "reply": {
          "text": "Suggestion #2",
          "postbackData": "suggestion_2"
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

let suggestions = [
   {
      reply: {
         'text': 'Suggestion #1',
         'postbackData': 'suggestion_1',
      },
   },
   {
      reply: {
         'text': 'Suggestion #2',
         'postbackData': 'suggestion_2',
      },
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with suggestion chips to the device
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Ce code est un extrait d'un exemple d'agent RBM.

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;
import com.google.rbm.SuggestionHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();
   suggestions.add(
      new SuggestionHelper("Suggestion #1", "suggestion_1").getSuggestedReply());

   suggestions.add(
      new SuggestionHelper("Suggestion #2", "suggestion_2").getSuggestedReply());

   // Send simple text message to user
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ce code est un extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggested replies for the message to send to the user
cluster.append_suggestion_chip(messages.SuggestedReply('Suggestion #1', 'reply:suggestion_1'))
cluster.append_suggestion_chip(messages.SuggestedReply('Suggestion #2', 'reply:suggestion_2'))

# Send a simple message with suggestion chips to the device
cluster.send_to_msisdn('+12223334444')
Ce code est un extrait d'un exemple d'agent RBM.

C#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                             projectId);

List<Suggestion> suggestions = new List<Suggestion>
{
   // Create suggestion chips
   new SuggestionHelper("Suggestion #1", "suggestion_1").SuggestedReply(),
   new SuggestionHelper("Suggestion #2", "suggestion_2").SuggestedReply()
};

// Send simple text message with suggestions to user
rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
   suggestions
);
Ce code est un extrait d'un exemple d'agent RBM.

Actions suggérées

Les actions suggérées guident les utilisateurs dans les conversations en tirant parti des fonctionnalités intégrées de leurs appareils. Votre agent peut suggérer aux utilisateurs de composer un numéro, d'ouvrir un lieu sur une carte, de partager un lieu, d'ouvrir une URL ou de créer un événement d'agenda.

Pour chaque action suggérée, vous pouvez éventuellement fournir une URL de remplacement (2 048 caractères maximum). Cette URL s'ouvre dans une nouvelle fenêtre de navigateur si l'appareil de l'utilisateur ne prend pas en charge l'action suggérée.

Lorsqu'un utilisateur appuie sur une action suggérée, votre agent reçoit un événement contenant les données de postback de l'action.

Pour connaître les options de mise en forme et de valeur, consultez SuggestedAction.

Composer un numéro

L'action "Composer" guide l'utilisateur pour qu'il compose un numéro de téléphone spécifié par votre agent. Les numéros de téléphone ne peuvent inclure que des chiffres (0-9), un signe plus (+), un astérisque (*) et un signe dièse (#). Le format international E.164 (par exemple, +14155555555) est accepté, mais pas obligatoire. Autrement dit, +14155555555 et 1011 sont des entrées valides.

Exemple

Le code suivant envoie une action de numérotation. Pour connaître les options de mise en forme et de valeur, consultez DialAction.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "action": {
          "text": "Call",
          "postbackData": "postback_data_1234",
          "fallbackUrl": "https://www.google.com/contact/",
          "dialAction": {
            "phoneNumber": "+15556667777"
          }
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Define a dial suggested action
let suggestions = [
   {
      action: {
         text: 'Call',
         postbackData: 'postback_data_1234',
         dialAction: {
            phoneNumber: '+15556667777'
         }
      }
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with a dial suggested action
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Ce code est un extrait d'un exemple d'agent RBM.

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.DialAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // creating a dial suggested action
   DialAction dialAction = new DialAction();
   dialAction.setPhoneNumber("+15556667777");

   // creating a suggested action based on a dial action
   SuggestedAction suggestedAction = new SuggestedAction();
   suggestedAction.setText("Call");
   suggestedAction.setPostbackData("postback_data_1234");
   suggestedAction.setDialAction(dialAction);

   // attaching action to a suggestion
   Suggestion suggestion = new Suggestion();
   suggestion.setAction(suggestedAction);

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ce code est un extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create a dial suggested action
suggestions = [
      messages.DialAction('Call', 'reply:postback_data_1234', '+15556667777')
]

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggestions for the message to send to the user
for suggestion in suggestions:
    cluster.append_suggestion_chip(suggestion)

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Ce code est un extrait d'un exemple d'agent RBM.

C#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Create a dial an agent suggested action
DialAction dialAction = new DialAction
{
    PhoneNumber = "+15556667777"
};

// Creating a suggested action based on a dial action
SuggestedAction suggestedAction = new SuggestedAction
{
    Text = "Call",
    PostbackData = "postback_data_1234",
    DialAction = dialAction
};

// Attach action to a suggestion
Suggestion suggestion = new Suggestion
{
    Action = suggestedAction
};

List<Suggestion> suggestions = new List<Suggestion>
{
    suggestion
};

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Ce code est un extrait d'un exemple d'agent RBM.

Afficher un lieu

L'action "Afficher la position" affiche une position dans l'application de cartographie par défaut de l'utilisateur. Vous pouvez spécifier la position par latitude et longitude, ou avec une requête basée sur la position actuelle de l'utilisateur. Vous pouvez également définir un libellé personnalisé pour le repère qui s'affiche dans l'application de cartographie.

Exemple

Le code suivant envoie une action d'affichage de la position. Pour connaître les options de mise en forme et de valeur, consultez ViewLocationAction.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "action": {
          "text": "View map",
          "postbackData": "postback_data_1234",
          "fallbackUrl": "https://www.google.com/maps/@37.4220188,-122.0844786,15z",
          "viewLocationAction": {
            "latLong": {
              "latitude": "37.4220188",
              "longitude": "-122.0844786"
            },
            "label": "Googleplex"
          }
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Define a view location suggested action
let suggestions = [
   {
      action: {
         text: 'View map',
         postbackData: 'postback_data_1234',
         viewLocationAction: {
            latLong: {
               latitude: 37.4220188,
               longitude: -122.0844786
            },
            label: 'Googleplex'
         }
      }
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with a view location suggested action
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Ce code est un extrait d'un exemple d'agent RBM.

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.ViewLocationAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // creating a view location suggested action
   ViewLocationAction viewLocationAction = new ViewLocationAction();
   viewLocationAction.setQuery("Googleplex, Mountain View, CA");

   // creating a suggested action based on a view location action
   SuggestedAction suggestedAction = new SuggestedAction();
   suggestedAction.setText("View map");
   suggestedAction.setPostbackData("postback_data_1234");
   suggestedAction.setViewLocationAction(viewLocationAction);

   // attaching action to a suggestion
   Suggestion suggestion = new Suggestion();
   suggestion.setAction(suggestedAction);

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ce code est un extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create a view location suggested action
suggestions = [
      messages.ViewLocationAction('View map',
            'reply:postback_data_1234',
            query='Googleplex, Mountain View, CA')
]

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggestions for the message to send to the user
for suggestion in suggestions:
    cluster.append_suggestion_chip(suggestion)

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Ce code est un extrait d'un exemple d'agent RBM.

C#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// create an view location action
ViewLocationAction viewLocationAction = new ViewLocationAction
{
    Query = "Googleplex Mountain View, CA"
};

// Attach the view location action to a suggested action
SuggestedAction suggestedAction = new SuggestedAction
{
    ViewLocationAction = viewLocationAction,
    Text = "View map",
    PostbackData = "postback_data_1234"
};

// Attach the action to a suggestion object
Suggestion suggestion = new Suggestion
{
    Action = suggestedAction
};

List<Suggestion> suggestions = new List<Suggestion>
{
    suggestion
};

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Ce code est un extrait d'un exemple d'agent RBM.

Partager une position

L'action "Partager la position" permet à l'utilisateur de partager une position avec votre agent. L'utilisateur peut partager sa position actuelle ou une position sélectionnée manuellement dans l'application Maps.

Exemple

Le code suivant envoie une action de partage de position. Pour connaître les options de mise en forme et de valeur, consultez ShareLocationAction.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "action": {
          "text": "Share your location",
          "postbackData": "postback_data_1234",
          "shareLocationAction": {}
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Define a share location suggested action
let suggestions = [
   {
      action: {
         text: 'Share your location',
         postbackData: 'postback_data_1234',
         shareLocationAction: {
         }
      }
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with a share location suggested action
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Ce code est un extrait d'un exemple d'agent RBM.

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.ShareLocationAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // creating a share location suggested action
   ShareLocationAction shareLocationAction = new ShareLocationAction();

   // creating a suggested action based on a share location action
   SuggestedAction suggestedAction = new SuggestedAction();
   suggestedAction.setText("Share location");
   suggestedAction.setPostbackData("postback_data_1234");
   suggestedAction.setShareLocationAction(shareLocationAction);

   // attaching action to a suggestion
   Suggestion suggestion = new Suggestion();
   suggestion.setAction(suggestedAction);

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ce code est un extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create a share location suggested action
suggestions = [
      messages.ShareLocationAction('Share location',
            'reply:postback_data_1234')
]

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggestions for the message to send to the user
for suggestion in suggestions:
    cluster.append_suggestion_chip(suggestion)

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Ce code est un extrait d'un exemple d'agent RBM.

C#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Create a share location action
ShareLocationAction shareLocationAction = new ShareLocationAction();

// Attach the share location action to a suggested action
SuggestedAction suggestedAction = new SuggestedAction
{
    ShareLocationAction = shareLocationAction,
    Text = "Share location",
    PostbackData = "postback_data_1234"
};

// Attach the action to a suggestion object
Suggestion suggestion = new Suggestion
{
    Action = suggestedAction
};

List<Suggestion> suggestions = new List<Suggestion>
{
    suggestion
};

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Ce code est un extrait d'un exemple d'agent RBM.

Ouvrir une URL

L'action "Ouvrir l'URL" vous permet de rediriger les utilisateurs vers une page Web spécifiée par votre agent. Par défaut, la page Web s'ouvre dans le navigateur de l'utilisateur. Vous pouvez également définir la page Web pour qu'elle s'ouvre dans une WebView. Pour en savoir plus, consultez Ouvrir une URL avec WebView.

Dans Google Messages uniquement : si un utilisateur a configuré une application par défaut pour la page Web, cette application s'ouvre à la place du navigateur ou de la WebView, et le bouton de suggestion affiche l'icône de l'application. Pour que l'icône de l'application s'affiche dans Google Messages, vous devez fournir l'URL complète et directe. Si vous utilisez une URL raccourcie, l'icône "Ouvrir l'URL" par défaut s'affiche à la place.

Icône d&#39;application dans un bouton de suggestion.
Icône d'application dans un bouton de suggestion
Exemple

Le code suivant envoie une action d'ouverture d'URL. Pour connaître les options de mise en forme et de valeur, consultez OpenUrlAction.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "action": {
          "text": "Open Google",
          "postbackData": "postback_data_1234",
          "openUrlAction": {
            "url": "https://www.google.com"
          }
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Define an open URL suggested action
let suggestions = [
   {
      action: {
         text: 'Open Google',
         postbackData: 'postback_data_1234',
         openUrlAction: {
            url: 'https://www.google.com'
         }
      }
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with an open URL suggested action
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Ce code est un extrait d'un exemple d'agent RBM.

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.OpenUrlAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // creating an open url suggested action
   OpenUrlAction openUrlAction = new OpenUrlAction();
   openUrlAction.setUrl("https://www.google.com");

   // creating a suggested action based on an open url action
   SuggestedAction suggestedAction = new SuggestedAction();
   suggestedAction.setText("Open Google");
   suggestedAction.setPostbackData("postback_data_1234");
   suggestedAction.setOpenUrlAction(openUrlAction);

   // attaching action to a suggestion
   Suggestion suggestion = new Suggestion();
   suggestion.setAction(suggestedAction);

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ce code est un extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create an open url suggested action
suggestions = [
      messages.OpenUrlAction('Open Google',
            'reply:postback_data_1234',
            'https://www.google.com')
]

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggestions for the message to send to the user
for suggestion in suggestions:
    cluster.append_suggestion_chip(suggestion)

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Ce code est un extrait d'un exemple d'agent RBM.

C#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Create an open url action
OpenUrlAction openUrlAction = new OpenUrlAction
{
    Url = "https://www.google.com"
};

// Attach the open url action to a suggested action
SuggestedAction suggestedAction = new SuggestedAction
{
    OpenUrlAction = openUrlAction,
    Text = "Open Google",
    PostbackData = "postback_data_1234"
};

// Attach the action to a suggestion object
Suggestion suggestion = new Suggestion
{
    Action = suggestedAction
};

List<Suggestion> suggestions = new List<Suggestion>
{
    suggestion
};

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Ce code est un extrait d'un exemple d'agent RBM.

Ouvrir une URL avec une vue Web

L'action "Ouvrir l'URL avec la vue Web" charge la page Web spécifiée dans l'application de messagerie avec le moteur de rendu de votre navigateur par défaut. L'utilisateur peut ainsi interagir avec la page Web sans quitter la conversation RCS pour les entreprises. Si l'appareil de l'utilisateur n'est pas compatible avec les WebView, la page Web s'ouvre dans le navigateur de l'utilisateur. Pour activer les vues Web, consultez OpenURLApplication.

Les vues Web ont trois modes d'affichage. Pour connaître les options de mise en forme et de valeur, consultez WebviewViewMode.

  • Plein : la page Web occupe tout l'écran.
  • Moitié : la page Web occupe la moitié de l'écran.
  • Haut : la page Web occupe les trois quarts de l'écran.
Exemple

Le code suivant envoie une action "Ouvrir l'URL avec WebView". Pour connaître les options de mise en forme et de valeur, consultez OpenURLAction.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
 "contentMessage": {
   "text": "Hello, world!",
   "suggestions": [
     {
       "action": {
         "text": "Open Google",
         "postbackData": "postback_data_1234",
         "openUrlAction": {
           "url": "https://www.google.com",
           "application": "WEBVIEW",
           "webviewViewMode": "FULL",
           "description": "Accessibility description"
         }
       }
     }
   ]
 }
}'

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.OpenUrlAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;

  
try {
  
   String URL = "https://www.google.com";
  
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();
  
   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // Create suggestion to view webpage in full mode
   Suggestion viewInFullMode =  getUrlActionInWebview(URL, "FULL")
   suggestions.add(viewInFullMode);
  
   // create suggestion to view webpage in half mode
   Suggestion viewInHalfMode =  getUrlActionInWebview(URL, "HALF")
   suggestions.add(viewInHalfMode);
     
   // create suggestion to view webpage in tall mode
   Suggestion viewInTallMode =  getUrlActionInWebview(URL, "TALL")
   suggestions.add(viewInTallMode);
     
   // Send simple text message with the suggested action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}

  /**
    * Creates a suggested action to open URL in webview.
    *
    * @return a suggestion object for an open URL in webview action .
    */
    private Suggestion getUrlActionInWebview(String url,
                                             String viewMode) {
      // create an open url action
      OpenUrlAction openUrlAction = new OpenUrlAction();
      openUrlAction.setUrl(url);
      openUrlAction.setApplication("WEBVIEW");
      openUrlAction.setWebviewViewMode(viewMode);
      openUrlAction.setDescription("Accessibility description");
     
      // attach the open url action to a suggested action
      SuggestedAction suggestedAction = new SuggestedAction();
      suggestedAction.setOpenUrlAction(openUrlAction);
      suggestedAction.setText('display_text');
      suggestedAction.setPostbackData('postback_data_123');
     
      // attach the action to a suggestion object
      Suggestion suggestion = new Suggestion();
      suggestion.setAction(suggestedAction);
     
      return suggestion;
    }

Créer un événement d'agenda

L'action "Créer un événement d'agenda" ouvre l'application d'agenda de l'utilisateur et commence à créer un événement avec les informations spécifiées.

Vous devez indiquer le titre de l'événement d'agenda. Il ne doit pas comporter plus de 100 caractères. La description de l'événement d'agenda est facultative et ne doit pas dépasser 500 caractères.

Exemple

Le code suivant envoie une action de création d'un événement d'agenda. Pour connaître les options de mise en forme et de valeur, consultez CreateCalendarEventAction.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "action": {
          "text": "Save to calendar",
          "postbackData": "postback_data_1234",
          "fallbackUrl": "https://www.google.com/calendar",
          "createCalendarEventAction": {
            "startTime": "2020-06-30T19:00:00Z",
            "endTime": "2020-06-30T20:00:00Z",
            "title": "My calendar event",
            "description": "Description of the calendar event"
          }
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Define a create calendar event suggested action
let suggestions = [
   {
      action: {
         text: 'Save to calendar',
         postbackData: 'postback_data_1234',
         createCalendarEventAction: {
            startTime: '2020-06-30T19:00:00Z',
            endTime: '2020-06-30T20:00:00Z',
            title: 'My calendar event',
            description: 'Description of the calendar event',
         },
      }
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with a create calendar event suggested action
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Ce code est un extrait d'un exemple d'agent RBM.

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.CreateCalendarEventAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // creating a create calendar event suggested action
   CreateCalendarEventAction createCalendarEventAction = new CreateCalendarEventAction();
   calendarEventAction.setTitle("My calendar event");
   calendarEventAction.setDescription("Description of the calendar event");
   calendarEventAction.setStartTime("2020-06-30T19:00:00Z");
   calendarEventAction.setEndTime("2020-06-30T20:00:00Z");

   // creating a suggested action based on a create calendar event action
   SuggestedAction suggestedAction = new SuggestedAction();
   suggestedAction.setText("Save to calendar");
   suggestedAction.setPostbackData("postback_data_1234");
   suggestedAction.setCreateCalendarEventAction(createCalendarEventAction);

   // attaching action to a suggestion
   Suggestion suggestion = new Suggestion();
   suggestion.setAction(suggestedAction);

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ce code est un extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create a calendar event suggested action
suggestions = [
      messages.CreateCalendarEventAction('Save to Calendar',
                             'reply:postback_data_1234',
                             '2020-06-30T19:00:00Z',
                             '2020-06-30T20:00:00Z',
                             'My calendar event',
                             'Description of the calendar event')

]

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggestions for the message to send to the user
for suggestion in suggestions:
    cluster.append_suggestion_chip(suggestion)

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Ce code est un extrait d'un exemple d'agent RBM.

C#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Create a calendar event action
CreateCalendarEventAction calendarEventAction = new CreateCalendarEventAction
{
    Title = "My calendar event",
    Description = "Description of the calendar event",
    StartTime = "2020-06-30T19:00:00Z",
    EndTime = "2020-06-30T20:00:00Z"
};

// Attach the calendar event action to a suggested action
SuggestedAction suggestedAction = new SuggestedAction
{
    CreateCalendarEventAction = calendarEventAction,
    Text = "Save to calendar",
    PostbackData = "postback_data_1234"
};

// Attach the action to a suggestion object
Suggestion suggestion = new Suggestion
{
    Action = suggestedAction
};

List<Suggestion> suggestions = new List<Suggestion>
{
    suggestion
};

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Ce code est un extrait d'un exemple d'agent RBM.

Liste de chips de suggestions

Votre agent envoie des listes de chips de suggestion avec des messages pour guider les actions ultérieures des utilisateurs. La liste de chips ne s'affiche que lorsque le message associé se trouve en bas de la conversation. Tous les messages suivants de la conversation (d'un utilisateur ou de votre agent) écrasent la liste de chips.

Les chips de la liste sont des réponses suggérées et des actions suggérées.

Les listes de chips contiennent au maximum 11 chips de suggestions, et chaque libellé de chip peut comporter au maximum 25 caractères.

Pour connaître les options de mise en forme et de valeur, consultez AgentContentMessage.

Cartes enrichies

Les cartes enrichies combinent des éléments multimédias, du texte et des suggestions interactives dans un seul message. Elles sont idéales pour présenter des informations associées (par exemple, un produit avec son image, son nom et son prix) et guider les utilisateurs en leur suggérant clairement la prochaine étape, comme "Afficher les détails".

Une carte enrichie peut contenir les éléments suivants :

Chacun de ces champs est facultatif, mais au moins l'un des champs 1 à 3 doit être inclus dans la carte enrichie.

Plusieurs cartes peuvent être envoyées ensemble dans un carrousel à défilement horizontal.

Notez que la charge utile totale d'une carte enrichie est de 250 Ko.

Pour obtenir des informations techniques complètes, consultez la documentation sur les cartes enrichies.

Hauteur de la fiche

Les cartes enrichies se développent verticalement pour s'adapter à leur contenu. Leur hauteur minimale est de 112 dp et leur hauteur maximale est de 344 dp. Si le contenu d'une carte n'est pas assez grand pour remplir la hauteur minimale de la carte, celle-ci se développe et remplit la hauteur supplémentaire avec un espace vide.

Les éléments multimédias des cartes enrichies doivent avoir l'une des trois hauteurs suivantes :

  • Petite : 112 DP
  • Moyenne : 168 DP
  • Grande : 264 DP

Si le média ne correspond pas aux dimensions de la fiche en fonction de la hauteur sélectionnée, l'aperçu du média est choisi en zoomant et en recadrant le média.

Exemple

Le code suivant envoie une carte enrichie avec une image et des suggestions de réponses. Pour connaître les options de mise en forme et de valeur, consultez RichCard.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "richCard": {
      "standaloneCard": {
        "thumbnailImageAlignment": "RIGHT",
        "cardOrientation": "VERTICAL",
        "cardContent": {
          "title": "Hello, world!",
          "description": "RBM is awesome!",
          "media": {
            "height": "TALL",
            "contentInfo":{
              "fileUrl": "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif",
              "forceRefresh": false
            }
          },
          "suggestions": [
            {
              "reply": {
                "text": "Suggestion #1",
                "postbackData": "suggestion_1"
              }
            },
            {
              "reply": {
                "text": "Suggestion #2",
                "postbackData": "suggestion_2"
              }
            }
          ]
        }
      }
    }
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Suggested replies to be used in the card
let suggestions = [
   {
      reply: {
         'text': 'Suggestion #1',
         'postbackData': 'suggestion_1',
      },
   },
   {
      reply: {
         'text': 'Suggestion #2',
         'postbackData': 'suggestion_2',
      },
   },
];

// Image to be displayed by the card
let imageUrl = 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif';

// Definition of the card parameters
let params = {
   messageText: 'Hello, world!',
   messageDescription: 'RBM is awesome!',
   msisdn: '+12223334444',
   suggestions: suggestions,
   imageUrl: imageUrl,
   height: 'TALL',
};

// Send rich card to device
rbmApiHelper.sendRichCard(params, function(response) {
   console.log(response);
});
Ce code est un extrait d'un exemple d'agent RBM.

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.StandaloneCard;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.cards.CardOrientation;
import com.google.rbm.cards.MediaHeight;
import com.google.rbm.RbmApiHelper;
import com.google.rbm.SuggestionHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();
   suggestions.add(
      new SuggestionHelper("Suggestion #1", "suggestion_1").getSuggestedReply());

   suggestions.add(
      new SuggestionHelper("Suggestion #2", "suggestion_2").getSuggestedReply());

   String imageUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif";

   // Create a standalone rich card to send to the user
   StandaloneCard standaloneCard = rbmApiHelper.createStandaloneCard(
       "Hello, world!",
       "RBM is awesome!",
       imageUrl,
       MediaHeight.MEDIUM,
       CardOrientation.VERTICAL,
       suggestions
   );

   rbmApiHelper.sendStandaloneCard(standaloneCard, "+12223334444");
} catch(Exception e) {
   e.printStackTrace();
}
Ce code est un extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Suggested replies to be used in the card
suggestions = [
      messages.SuggestedReply('Suggestion #1', 'reply:suggestion_1'),
      messages.SuggestedReply('Suggestion #2', 'reply:suggestion_2')
]

# Image to be displayed by the card
image_url = 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif';

# Define rich card structure
rich_card = messages.StandaloneCard('VERTICAL',
                                    'Hello, world!',
                                    'RBM is awesome!',
                                    suggestions,
                                    image_url,
                                    None,
                                    None,
                                    'MEDIUM')

# Append rich card and send to the user
cluster = messages.MessageCluster().append_message(rich_card)
cluster.send_to_msisdn('+12223334444')
Ce code est un extrait d'un exemple d'agent RBM.

C#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;
using RCSBusinessMessaging.Cards;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                             projectId);

List<Suggestion> suggestions = new List<Suggestion>
{
   // Create suggestion chips
   new SuggestionHelper("Suggestion #1", "suggestion_1").SuggestedReply(),
   new SuggestionHelper("Suggestion #2", "suggestion_2").SuggestedReply()
};

string imageUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif";

// Create rich card with suggestions
StandaloneCard standaloneCard = rbmApiHelper.CreateStandaloneCard(
   "Hello, world!",
   "RBM is awesome",
   imageUrl,
   MediaHeight.TALL,
   CardOrientation.VERTICAL,
   suggestions
);

// Send rich card to user
rbmApiHelper.SendStandaloneCard(standaloneCard, "+12223334444");
Ce code est un extrait d'un exemple d'agent RBM.

Carrousels de cartes enrichies

Les carrousels regroupent plusieurs cartes enrichies, ce qui permet aux utilisateurs de comparer des éléments et de réagir à chacun d'eux individuellement.

Les carrousels peuvent contenir entre deux et dix cartes enrichies. Les cartes enrichies dans les carrousels doivent respecter les exigences générales concernant le contenu et la hauteur des cartes enrichies, comme décrit dans la documentation sur les cartes enrichies. Pour en savoir plus sur la mise en page et les spécifications des carrousels, consultez la documentation sur les carrousels.

Exemple

Le code suivant envoie un carrousel de cartes enrichies. Pour connaître les options de mise en forme et de valeur, consultez RichCard.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "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/welcome-bot-sample-images/200.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/welcome-bot-sample-images/201.jpg",
                "forceRefresh": false
              }
            }
          }
        ]
      }
    }
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Images for the carousel cards
let card1Image = 'https://storage.googleapis.com/welcome-bot-sample-images/200.jpg';
let card2Image = 'https://storage.googleapis.com/welcome-bot-sample-images/201.jpg';

// Define the card contents for a carousel with two cards, each with one suggested reply
let cardContents = [
   {
      title: 'Card #1',
      description: 'The description for card #1',
      suggestions: [
         {
            reply: {
               text: 'Card #1',
               postbackData: 'card_1',
            }
         }
      ],
      media: {
         height: 'MEDIUM',
         contentInfo: {
            fileUrl: card1Image,
            forceRefresh: false,
         },
      },
   },
   {
      title: 'Card #2',
      description: 'The description for card #2',
      suggestions: [
         {
            reply: {
               text: 'Card #2',
               postbackData: 'card_2',
            }
         }
      ],
      media: {
         height: 'MEDIUM',
         contentInfo: {
            fileUrl: card2Image,
            forceRefresh: false,
         },
      },
   },
];

// Definition of carousel card
let params = {
   msisdn: '+12223334444',
   cardContents: cardContents,
};

// Send the device the carousel card defined above
rbmApiHelper.sendCarouselCard(params, function(response) {
   console.log(response);
});
Ce code est un extrait d'un exemple d'agent RBM.

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.CardContent;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.cards.CardOrientation;
import com.google.rbm.cards.CardWidth;
import com.google.rbm.cards.MediaHeight;
import com.google.rbm.RbmApiHelper;
import com.google.rbm.SuggestionHelper;


try {
            // Create an instance of the RBM API helper
            RbmApiHelper rbmApiHelper = new RbmApiHelper();

            List cardContents = new ArrayList();

            // Images for the carousel cards
            String card1Image = "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg";

            // Create suggestions for first carousel card
            List card1Suggestions = new ArrayList();
            card1Suggestions.add(
                new SuggestionHelper("Card #1", "card_1"));

            cardContents.add(
                new StandaloneCardHelper(
                    "Card #1",
                    "The description for card #1",
                    card1Image,
                    card1Suggestions)
                    .getCardContent(MediaHeight.SHORT)
            );

            // Images for the carousel cards
            String card2Image = "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg";

            // Create suggestions for second carousel card
            List card2Suggestions = new ArrayList();
            card2Suggestions.add(
                new SuggestionHelper("Card #2", "card_2"));

            cardContents.add(
                new StandaloneCardHelper(
                    "Card #2",
                    "The description for card #2",
                    card2Image,
                    card2Suggestions)
                    .getCardContent(MediaHeight.SHORT)
            );

            // Send the carousel to the user
            rbmApiHelper.sendCarouselCards(cardContents, CardWidth.MEDIUM, "+12223334444");
        } catch(Exception e) {
            e.printStackTrace();
        }
Ce code est un extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Images for the carousel cards
card_image_1 = 'https://storage.googleapis.com/welcome-bot-sample-images/200.jpg';
card_image_2 = 'https://storage.googleapis.com/welcome-bot-sample-images/201.jpg';

# Suggested replies to be used in the cards
suggestions1 = [
      messages.SuggestedReply('Card #1', 'reply:card_1')
]

suggestions2 = [
      messages.SuggestedReply('Card #2', 'reply:card_2')
]

# Define the card contents for a carousel with two cards,
# each with one suggested reply
card_contents = []
card_contents.append(messages.CardContent('Card #1',
                                          'The description for card #1',
                                          card_image_1,
                                          'MEDIUM',
                                          suggestions1))

card_contents.append(messages.CardContent('Card #2',
                                          'The description for card #2',
                                          card_image_2,
                                          'MEDIUM',
                                          suggestions2))

# Send the device the carousel card defined above
carousel_card = messages.CarouselCard('MEDIUM', card_contents)
cluster = messages.MessageCluster().append_message(carousel_card)
cluster.send_to_msisdn('+12223334444')
Ce code est un extrait d'un exemple d'agent RBM.

C#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;
using RCSBusinessMessaging.Cards;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                             projectId);

// Image references to be used in the carousel cards
string card1Image = "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg";
string card2Image = "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg";

// Suggestion chip lists to be used in carousel cards
List<Suggestion> suggestions1 = new List<Suggestion>
{
   new SuggestionHelper("Card #1", "card_1").SuggestedReply()
};

List<Suggestion> suggestions2 = new List<Suggestion>
{
   new SuggestionHelper("Card #2", "card_2").SuggestedReply()
};

// Create the card content for the carousel
List<CardContent> cardContents = new List<CardContent>
{
   // Add items as card content
   new StandaloneCardHelper(
                    "Card #1",
                    "The description for card #1",
                    card1Image,
                    suggestions1).GetCardContent(),
   new StandaloneCardHelper(
                    "Card #2",
                    "The description for card #2",
                    card2Image,
                    suggestions2).GetCardContent()
};

// Send the carousel to the user
rbmApiHelper.SendCarouselCards(cardContents, CardWidth.MEDIUM, msisdn);
Ce code est un extrait d'un exemple d'agent RBM.