RBM-Agents kommunizieren mit Nutzern, indem sie Nachrichten senden und empfangen. Wenn Ihr Agent Nachrichten an Nutzer senden soll, sendet er Nachrichtenanfragen an die RCS Business Messaging API. Eine einzelne Anfrage kann Text, Rich Cards, Media- und PDF-Dateien sowie Antwortvorschläge und Vorschläge für Aktionen enthalten.
Die RBM-Plattform gibt in bestimmten Situationen Fehler zurück, um Sie bei der Verwaltung der Nachrichtenzustellung zu unterstützen:
- Wenn Sie eine Nachricht an einen Nutzer senden, dessen Gerät RCS nicht unterstützt oder auf dem RCS nicht aktiviert ist, gibt die RBM-Plattform den Fehler 404 NOT_FOUND zurück. In diesem Fall können Sie versuchen, den Nutzer über die in Ihrer Infrastruktur definierten Fallback-Methoden zu erreichen.
- Wenn Sie eine Nachricht an einen RCS-Nutzer in einem Netzwerk senden, in dem Ihr Agent noch nicht gestartet wurde oder in dem kein RCS-Traffic aktiviert ist, gibt die RBM-Plattform den Fehler 404 NOT_FOUND zurück.
- Wenn Sie eine Nachricht mit Funktionen senden, die vom Gerät eines Nutzers nicht unterstützt werden, gibt die RBM-Plattform den Fehler 400 INVALID_ARGUMENT zurück und die Nachricht wird nicht zugestellt.
Im Rahmen Ihrer Multi-Channel-Messaging-Strategie ist es am besten, Nachrichten zurückzurufen, die nach einer angemessenen Zeit nicht zugestellt werden, und sie über einen anderen Kanal zu senden. Wenn Sie Nachrichten zu einem vordefinierten Zeitpunkt automatisch zurückrufen möchten, legen Sie ein Ablaufdatum für Nachrichten fest.
Empfänger ist offline
Die RBM-Plattform akzeptiert weiterhin Nachrichten zur Zustellung, wenn der Empfänger offline ist. Sie erhalten die Antwort „200 OK“ und die RBM-Plattform speichert die Nachricht und versucht 30 Tage lang, sie noch einmal zuzustellen. Sie müssen RBM nicht bitten, die Nachricht noch einmal zu senden.
RBM löscht alle nicht zugestellten Nachrichten 30 Tage nach dem Senden.
Je nach Anwendungsfall Ihres Agenten sollten Sie eine nicht zugestellte Nachricht vor Ablauf dieses 30‑Tage-Timeouts zurückziehen. Durch den Widerruf kann verhindert werden, dass Offlinenutzer eine veraltete Nachricht erhalten, wenn sie wieder online sind. Es gibt mehrere Möglichkeiten, eine Nachricht zurückzurufen:
- Senden Sie einen Antrag auf Widerruf, um den Widerruf auszulösen.
- Legen Sie ein Ablaufdatum für die Nachricht fest, damit die Nachricht zum richtigen Zeitpunkt automatisch widerrufen wird.
Ablaufdatum für Nachrichten festlegen
Ist die Nachricht Ihres Kundenservicemitarbeiters zeitkritisch? Einmalpasswörter sind beispielsweise nur für kurze Zeit gültig. Zeitlich begrenzte Angebote laufen ab. Terminerinnerungen sind nach dem Termin nicht mehr relevant. Damit Nachrichten zeitnah und relevant bleiben, sollten Sie ein Ablaufdatum für Nachrichten festlegen. So kann verhindert werden, dass Nutzer, die offline sind, veraltete Inhalte erhalten, wenn sie wieder online sind. Das Ablaufdatum ist auch ein guter Hinweis, um Ihre Fallback-Messaging-Strategie zu aktivieren, damit Nutzer rechtzeitig die benötigten Informationen erhalten.
Wenn Sie ein Ablaufdatum für eine Nachricht festlegen möchten, geben Sie eines der folgenden Felder in der Agent-Nachricht an:
expireTime
: die genaue Uhrzeit in UTC, zu der die Nachricht abläuft.ttl
(Gültigkeitsdauer): die Zeitspanne, nach der die Nachricht abläuft.
Informationen zu Formatierungs- und Wertoptionen finden Sie unter AgentMessage
.
Sobald die Nachricht abläuft, versucht die RBM-Plattform nicht mehr, sie zuzustellen, und sie wird automatisch widerrufen. In seltenen Fällen kann dies jedoch fehlschlagen. Die API könnte den Widerruf beispielsweise auslösen, während die RBM-Plattform gerade die Nachricht übermittelt. Um zu bestätigen, ob die abgelaufene Nachricht erfolgreich widerrufen wurde, sendet RBM eine Ereignisbenachrichtigung an Ihren Webhook.
Der Maximalwert für ttl
und expireTime
beträgt 15 Tage nach dem Senden der Mitteilung.
Es gibt zwar keinen Mindestwert für ttl
und expireTime
, aber es wird empfohlen, mindestens 10 Sekunden nach dem Senden der Nachricht zu warten, um die Wahrscheinlichkeit zu verringern, dass Sie sowohl eine Benachrichtigung über den Widerruf als auch über die Zustellung erhalten.
Nachrichtentyp festlegen
Die RBM API enthält das Feld messageTrafficType
zum Kategorisieren von Nachrichten.
Agent-Anwendungsfälle definieren weiterhin das Verhalten von Agents und welche Geschäftsregeln gelten. Mit messageTrafficType
lässt sich der Inhalt von Nachrichten jedoch detaillierter kategorisieren. So kann ein einzelner Kundenservicemitarbeiter mehrere Anwendungsfälle bearbeiten. Derzeit gibt es keine Auswirkungen auf bestehende Agent-Anwendungsfälle oder Geschäftsregeln.
Dieses Feld ist optional. Es wird jedoch empfohlen, es jetzt festzulegen, damit Sie keinen Fehler erhalten, wenn das Feld erforderlich wird.
Um den Nachrichtentraffictyp festzulegen, weisen Sie jeder Nachricht basierend auf ihrem Inhalt die entsprechende messageTrafficType
zu. RBM unterstützt die folgenden Traffic-Typen.
Traffictyp | Inhalt der Nachricht | Anwendungsfall eines Agents |
---|---|---|
AUTHENTICATION |
Für Authentifizierungsnachrichten. | OTP |
TRANSACTION |
Für Nachrichten zu den bestehenden Diensten oder Produkten eines Nutzers. z. B. Bestätigungen, Zahlungsbelege oder Buchungsdetails. | Transaktions- oder Mehrfachnutzung |
PROMOTION |
Für Werbenachrichten wie Angebote, Rabatte, Ankündigungen oder andere Werbeinhalte. | Aktionsangebot oder Mehrfachnutzung |
SERVICEREQUEST |
Für Nachrichten zu Diensten, die der Nutzer ausdrücklich angefordert hat. | Einmalpasswort, Transaktionspasswort, Werbe- oder Mehrfachpasswort |
ACKNOWLEDGEMENT |
Für Nachrichten, mit denen die Aktion eines Nutzers bestätigt wird, insbesondere eine Abmeldeanfrage. Das bestätigt, dass die Anfrage des Nutzers eingegangen ist und bearbeitet wird. | Einmalpasswort, Transaktionspasswort, Werbe- oder Mehrfachpasswort |
Wenn kein Traffictyp festgelegt ist, weist das System den Standardtyp für den Anwendungsfall des Agents zu.
Anwendungsfall eines Agents | Standard-Traffic-Typ |
---|---|
OTP | AUTHENTICATION |
Transaktional | TRANSACTION |
Werbung | PROMOTION |
Mehrfachverwendung | MESSAGE_TRAFFIC_TYPE_UNSPECIFIED |
Agents für mehrere Zwecke haben keinen Standard-Traffic-Typ. Sie müssen den Traffictyp für jede Nachricht basierend auf ihrem Inhalt explizit festlegen. Wenn Sie den Wert MESSAGE_TRAFFIC_TYPE_UNSPECIFIED
nicht ersetzen, tritt ein Fehler auf.
Größenbeschränkungen für Nachrichten
Die maximale Größe des gesamten in einen String umgewandelten AgentMessage beträgt 250 KB. Der Textteil der Nachricht ist auf 3.072 Zeichen begrenzt.
Die maximale Größe einer Datei, die über RBM gesendet werden kann, beträgt 100 MB. Weitere Informationen finden Sie unter Media- und PDF-Dateien.
Text
Die einfachsten Nachrichten bestehen aus Text. SMS eignen sich am besten, um Informationen zu kommunizieren, ohne dass Bilder, komplexe Interaktionen oder Antworten erforderlich sind.
Beispiel
Mit dem folgenden Code wird eine Nur-Text-Nachricht gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter 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); });
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(); }
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')
C#
using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", );
Inhalt der einfachen Nachricht – Umwandlung von SMS
Mobilfunkanbieter haben Abrechnungsmodelle eingeführt, um die Umstellung von SMS auf RBM zu unterstützen. Eine RBM-Nachricht mit bis zu 160 UTF-8-Zeichen wird als „Basic Message“ bezeichnet.
Wenn Sie eine Anfrage zum Senden einer einfachen Nachricht erstellen, denken Sie daran, dass Zeichen als 1 Byte (UTF-8) gezählt werden. Wenn Sie eine Nachricht mit Sonderzeichen wie Emojis oder einem Multibyte-Zeichensatz senden, zählt jedes Zeichen als 2–4 UTF‑8-Zeichen oder mehr.
Geben Sie Text in das Feld ein, um die Länge zu prüfen:
Inhalte von Basic Messages und Linkvorschauen
RCS-Clients können Linkvorschauen implementieren. Wenn eine reine Text-RBM-Nachricht eine URL für eine Website mit OpenGraph-Tags enthält, wird möglicherweise ein Vorschaubild angezeigt, das den Eindruck erweckt, dass die Nachricht reichhaltigere Inhalte enthält.
Beachten Sie, dass der Nutzer Linkvorschauen im RCS-Client möglicherweise deaktivieren kann.
Einmalpasswörter zur Nutzerbestätigung
Mit RBM können Sie Einmalkennwörter (One-Time Passwords, OTPs) für die automatische Nutzerbestätigung mit der SMS Retriever API senden. Es gibt keine spezielle API zum Lesen von Einmalpasswörtern, die über RBM eingehen.
Funktionsweise für Android
Bei Android-Apps, die für die SMS Retriever API registriert sind, wird über die API auf eine korrekt formatierte RBM-Nachricht gewartet. Diese Nachricht muss sowohl das Einmalpasswort als auch einen eindeutigen Hash enthalten, der Ihre App identifiziert.
Wenn eine RBM-Nachricht im richtigen Format empfangen wird, verarbeitet die SMS Retriever API sie genauso wie ein SMS-OTP. Nachdem der Hash mit Ihrer App abgeglichen wurde, wird das Einmalpasswort extrahiert und zur automatischen Nutzerbestätigung an Ihre App weitergeleitet.
- Beispiel für eine RBM-SMS zur Nutzerbestätigung:
Your code is <OTP> <app hash>.
- Beispiel:
Your code is 123456 M8tue43FGT.
Weitere Informationen zur SMS Retriever API und zugehörigen APIs finden Sie in der Dokumentation zur SMS Retriever API. Weitere Informationen zur automatischen Nutzerbestätigung in Apps, die mit der SMS Retriever API registriert sind, finden Sie in diesem Ablaufdiagramm.
So funktioniert es auf iOS-Geräten
Bei iOS werden die integrierten OTP-Funktionen des Systems automatisch erkannt und RBM-OTPs für das automatische Ausfüllen vorgeschlagen, genau wie SMS-OTPs. Für das Lesen des Einmalpassworts durch die iOS-App ist keine spezielle API-Integration erforderlich.
Media- und PDF-Dateien
Wenn Sie eine Nachricht mit einer Bild-, Video-, Audio- oder PDF-Datei senden, muss Ihr Kundenservicemitarbeiter eine öffentlich zugängliche URL für die Inhalte angeben oder die Datei direkt hochladen. Für Media-Dateien können Sie auch ein Vorschaubild angeben, damit Nutzer sich den Inhalt ansehen können, bevor sie darauf klicken. Für Audiodateien wird das Standard-Audio-Widget als Platzhalter verwendet.
Die RBM-Plattform speichert Dateien 60 Tage lang im Cache und die API gibt eine Datei-ID zurück, die Ihr Agent in Nachrichten an Nutzer einfügen kann. Nach 60 Tagen entfernt RBM Dateien aus dem Cache.
Wenn Sie Dateien über eine URL angeben, empfiehlt es sich, contentMessage.forceRefresh
auf false
festzulegen. Wenn Sie contentMessage.forceRefresh
auf true
festlegen, erzwingt RBM das Abrufen neuer Inhalte von der angegebenen URL, auch wenn die URL-Inhalte im Cache gespeichert sind. Dadurch verlängert sich die Nachrichtenzustellung für Nutzer.
Best Practices für Empfehlungen und Limits zur Dateigröße
Beispiel für eine Datei-URL
Mit dem folgenden Code wird ein Bild gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter 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); });
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(); }
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')
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");
Alternativ können Sie Medien hochladen, bevor Sie sie in einer Nachricht mit files.create
senden.
Beispiel für Dateiupload
Mit dem folgenden Code werden eine Videodatei und eine Miniaturansicht hochgeladen und dann beide Dateien in einer Nachricht gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter files.create
und 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" } } }'
Unterstützte Medientypen
RBM unterstützt die folgenden Medientypen. Für Miniaturansichten werden nur die Formate image/jpeg, image/jpg, image/gif und image/png unterstützt.
Medientyp | Dokumenttyp | Erweiterung | Mit Rich Cards arbeiten |
---|---|---|---|
application/ogg | OGG-Audio | OGX | Nein |
application/pdf | Nein | ||
audio/aac | AAC-Audio | .aac | Nein |
audio/mp3 | MP3-Audio | .mp3 | Nein |
audio/mpeg | MPEG-Audio | MPEG | Nein |
audio/mpg | MPG-Audio | .mp3 | Nein |
audio/mp4 | MP4-Audio | .mp4 | Nein |
audio/mp4-latm | MP4-LATM-Audio | .mp4 | Nein |
audio/3gpp | 3GPP-Audio | 3GP | Nein |
image/jpeg | JPEG | JPEG, JPG | Ja |
image/gif | GIF | GIF | Ja |
image/png | PNG | PNG | Ja |
video/h263 | H263-Video | .h263 | Ja |
video/m4v | M4V-Video | M4V | Ja |
video/mp4 | MP4-Video | .mp4 | Ja |
video/mpeg4 | MPEG-4-Video | .mp4, .m4p | Ja |
video/mpeg | MPEG-Video | MPEG | Ja |
video/webm | WEBM-Video | WEBM | Ja |
Vorschläge
Ihr Agent sendet Vorschläge (vorgeschlagene Antworten und Aktionen) in Vorschlagschip-Listen (maximal 11 Vorschläge) oder in Rich Cards (maximal 4 Vorschläge).
Jeder Vorschlag darf maximal 25 Zeichen lang sein.
Vorgeschlagene Antworten
Vorgeschlagene Antworten führen Nutzer durch Unterhaltungen, indem sie Antworten liefern, auf die Ihr Agent reagieren kann.
Wenn ein Nutzer auf eine vorgeschlagene Antwort tippt, erhält Ihr Agent ein Ereignis, das den Text und die Postback-Daten der Antwort enthält. Die Nutzlast darf maximal 2.048 Zeichen lang sein.
Beispiel
Mit dem folgenden Code wird Text mit zwei Antwortvorschlägen gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter 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); });
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(); }
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')
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 );
Vorgeschlagene Aktionen
Vorgeschlagene Aktionen führen Nutzer durch Unterhaltungen, indem sie die integrierten Funktionen ihrer Geräte nutzen. Ihr Agent kann Nutzern vorschlagen, eine Nummer zu wählen, einen Ort auf einer Karte zu öffnen, einen Ort zu teilen, eine URL zu öffnen oder einen Kalendertermin zu erstellen.
Für jede vorgeschlagene Aktion können Sie optional eine Fallback-URL angeben (maximal 2.048 Zeichen). Diese URL wird in einem neuen Browserfenster geöffnet, wenn das Gerät des Nutzers die vorgeschlagene Aktion nicht unterstützt.
Wenn ein Nutzer auf eine vorgeschlagene Aktion tippt, erhält Ihr Agent ein Ereignis, das die Postback-Daten der Aktion enthält.
Informationen zu Formatierungs- und Wertoptionen finden Sie unter SuggestedAction
.
Nummer wählen
Mit der Aktion „Anrufen“ wird der Nutzer aufgefordert, eine von Ihrem Agent angegebene Telefonnummer zu wählen.
Telefonnummern dürfen nur Ziffern (0-9
), das Pluszeichen (+
), das Sternchen (*
) und das Nummernzeichen (#
) enthalten. Das internationale Format E.164 (z. B. +14155555555
) wird unterstützt, ist aber nicht erforderlich. Das heißt, sowohl +14155555555
als auch 1011
sind gültige Einträge.
Beispiel
Mit dem folgenden Code wird eine Wählanrufaktion gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter 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); });
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(); }
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')
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 );
Standort ansehen
Mit der Aktion „Standort anzeigen“ wird ein Standort in der Standardkarten-App des Nutzers angezeigt. Sie können den Standort entweder über Breiten- und Längengrad oder mit einer Anfrage basierend auf dem aktuellen Standort des Nutzers angeben. Sie können auch ein benutzerdefiniertes Label für die Markierung festlegen, die in der Karten-App angezeigt wird.
Beispiel
Mit dem folgenden Code wird eine Aktion zum Aufrufen des Standorts gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter 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); });
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(); }
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')
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 );
Standort teilen
Mit der Aktion „Standort teilen“ kann der Nutzer einen Standort mit Ihrem Agent teilen. Der Nutzer kann entweder seinen aktuellen Standort oder einen manuell ausgewählten Standort aus der Maps App teilen.
Beispiel
Mit dem folgenden Code wird eine Aktion zum Teilen des Standorts gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter 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); });
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(); }
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')
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 );
URL öffnen
Mit der Aktion „URL öffnen“ können Sie Nutzer zu einer von Ihrem Agent angegebenen Webseite weiterleiten. Standardmäßig wird die Webseite im Browser des Nutzers geöffnet. Wenn ein Nutzer eine Standard-App für die Webseite konfiguriert hat, wird stattdessen diese App geöffnet. In diesem Fall ist das Symbol auf der Schaltfläche für die vorgeschlagene Aktion das Symbol der App.
Die Aktion „URL öffnen“ unterstützt auch integrierte Webviews. Weitere Informationen finden Sie unter URL mit WebView öffnen.
Beispiel
Mit dem folgenden Code wird eine „URL öffnen“-Aktion gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter 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); });
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(); }
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')
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 );
URL mit Webview öffnen
Mit der Aktion „URL mit Webview öffnen“ wird die angegebene Webseite in der Messaging-App mit der Rendering-Engine Ihres Standardbrowsers geladen. So kann der Nutzer mit der Webseite interagieren, ohne die RBM-Unterhaltung zu verlassen. Wenn das Gerät des Nutzers keine Webviews unterstützt, wird die Webseite stattdessen im Browser des Nutzers geöffnet. Informationen zum Aktivieren von WebViews finden Sie unter OpenURLApplication
.
Webviews haben drei Anzeigemodi. Informationen zu Formatierungs- und Wertoptionen finden Sie unter WebviewViewMode
.
- Voll:Die Webseite füllt den gesamten Bildschirm aus.
- Hälfte:Die Webseite nimmt die Hälfte des Bildschirms ein.
- Hoch:Die Webseite nimmt drei Viertel des Bildschirms ein.
Beispiel
Mit dem folgenden Code wird die Aktion „Open URL with webview“ gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter 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; }
Kalendertermin erstellen
Mit der Aktion „Kalendertermin erstellen“ wird die Kalender-App des Nutzers geöffnet und ein neuer Termin mit den angegebenen Informationen erstellt.
Ein Titel für den Kalendertermin ist erforderlich. Er darf maximal 100 Zeichen lang sein. Die Beschreibung des Kalenderereignisses ist optional und darf maximal 500 Zeichen lang sein.
Beispiel
Mit dem folgenden Code wird die Aktion „Kalendertermin erstellen“ gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter 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); });
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(); }
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')
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 );
Liste mit Vorschlags-Chips
Ihr Agent sendet Vorschlagschiplisten mit Nachrichten, um Nutzer bei ihren nachfolgenden Aktionen zu unterstützen. Die Chipleiste wird nur angezeigt, wenn sich die zugehörige Nachricht unten in der Unterhaltung befindet. Alle nachfolgenden Nachrichten in der Unterhaltung (entweder von einem Nutzer oder von Ihrem Agent) überschreiben die Chipleiste.
Die Chips in der Liste sind vorgeschlagene Antworten und vorgeschlagene Aktionen.
Chiplisten enthalten maximal 11 Vorschlagschips und jedes Chip-Label darf maximal 25 Zeichen lang sein.
Informationen zu Formatierungs- und Wertoptionen finden Sie unter AgentContentMessage
.
Rich Cards
Wenn Sie eine Gruppe von zusammengehörigen Informationen, Medien oder Vorschlägen senden müssen, sollten Sie eine interaktive Chat-Nachricht senden. Mit Rich Cards kann Ihr Agent mehrere Informationseinheiten in einer einzigen Nachricht senden.
Rich Cards können die folgenden Elemente enthalten:
- Ein Bild oder Video
- Text für Titel
- Beschreibungstext
- Vorgeschlagene Antworten und Aktionen (maximal 4)
Eine Rich Card kann alle aufgeführten Elemente enthalten. Eine Karte muss jedoch mindestens ein Bild, ein Video oder einen Titel enthalten, um gültig zu sein. Eine Rich Card kann maximal vier Aktionsvorschläge und Antwortvorschläge enthalten.
Ihr Kundenservicemitarbeiter kann mehrere interaktive Chat-Nachrichten zusammen in einem Karussell mit interaktiven Chat-Nachrichten senden.
Die maximale Größe einer Rich-Card-Nutzlast beträgt 250 KB. Best Practices
Die Spezifikationen für Rich Cards finden Sie unter Rich Cards.
Kartenhöhe
Karten werden vertikal erweitert, um Platz für den Inhalt zu schaffen. Rich Cards haben eine Mindesthöhe von 112 DP und eine maximale Höhe von 344 DP. Wenn der Inhalt einer Karte nicht groß genug ist, um die Mindesthöhe der Karte zu füllen, wird die Karte maximiert und die zusätzliche Höhe wird mit Leerraum gefüllt.
Media in Rich Cards müssen eine von drei Höhen haben:
- Kurz: 112 DP
- Mittel: 168 DP
- Hoch: 264 DP
Wenn die Medien bei der ausgewählten Höhe nicht in die Abmessungen auf der Karte passen, wird die Medienvorschau durch Zoomen und Zuschneiden der Medien erstellt.
Beispiel
Mit dem folgenden Code wird eine interaktive Chat-Nachricht mit einem Bild und Vorschlägen für Antworten gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter 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); });
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(); }
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')
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");
Karussells mit interaktiven Chat-Nachrichten
Wenn Sie einem Nutzer mehrere Optionen zur Auswahl präsentieren müssen, verwenden Sie ein Rich Card-Karussell. Karussells bestehen aus mehreren Rich Cards, sodass Nutzer Elemente vergleichen und einzeln darauf reagieren können.
Karussells können mindestens zwei und maximal zehn Rich Cards enthalten. Rich Cards in Karussells müssen den allgemeinen Rich Card-Anforderungen für Inhalt und Höhe entsprechen. Die Karussellspezifikationen finden Sie unter Rich Cards.
Die maximale Größe einer Nutzlast für ein Karussell mit Rich Cards beträgt 250 KB. Best Practices
Abgeschnittener Text
Ähnlich wie bei Rich Cards wirken sich viele Faktoren (z. B. Bildschirmauflösung, Pixeldichte und Nutzereinstellungen) darauf aus, wie Karten für Endnutzer dargestellt werden. In einem Karussell wird die Höhe aller Karten jedoch durch die Höhe der ersten Karten bestimmt. Die Kartenhöhe wirkt sich auf das Abschneiden von Titel, Beschreibung und Vorschlägen aus.
Wenn auf einem Gerät aufgrund von Displaybeschränkungen oder der Kartenhöhe nicht alle Elemente einer Karte angezeigt werden können, wird die Karte von RBM gekürzt, bis sie auf dem Gerät angezeigt werden kann. Dabei wird die folgende Logik verwendet:
- Fasse die Beschreibung in einer Zeile zusammen.
- Reduzieren Sie den Titel auf eine Zeile.
- Lassen Sie Vorschläge aus, die nicht auf die Karte passen. Beginnen Sie dabei mit dem Ende der definierten Liste.
- Lassen Sie die Beschreibung weg.
- Lassen Sie den Titel weg.
Um das Abschneiden zu vermeiden, sollten Titel und Beschreibungen so kurz wie möglich sein. Für vertikale Medien müssen Sie entweder einen Titel und eine Beschreibung oder einen Vorschlag verwenden. Verwenden Sie für mittlere Media bis zu zwei Vorschläge. Verwenden Sie für kurze Medien bis zu drei Vorschläge. Damit vier Vorschläge Platz haben, sollten Sie keine Medien in die Karte einfügen.
Die Karten sollten in Bezug auf Größe und Länge des Inhalts ungefähr gleich sein. Falls erforderlich, sollten Sie das Karussell mit größeren Karten beginnen, um ein Abschneiden der nachfolgenden Karten zu vermeiden.
Beispiel
Mit dem folgenden Code wird ein Karussell mit interaktiven Chat-Nachrichten gesendet. Informationen zu Formatierungs- und Wertoptionen finden Sie unter 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/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
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Images for the carousel cards let card1Image = 'https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg'; let card2Image = 'https://storage.googleapis.com/kitchen-sink-sample-images/elephant.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); });
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/kitchen-sink-sample-images/cute-dog.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/kitchen-sink-sample-images/elephant.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(); }
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/kitchen-sink-sample-images/cute-dog.jpg'; card_image_2 = 'https://storage.googleapis.com/kitchen-sink-sample-images/elephant.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')
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/kitchen-sink-sample-images/cute-dog.jpg"; string card2Image = "https://storage.googleapis.com/kitchen-sink-sample-images/elephant.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);