RCS for Business-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, interaktive Chat-Nachrichten, Media- und PDF-Dateien, Antwortvorschläge und vorgeschlagene Aktionen enthalten.
Die RCS for Business-Plattform gibt in bestimmten Situationen Fehler zurück, um Sie bei der Verwaltung der Nachrichtenübermittlung 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 RCS for Business-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 einem Netzwerk, in dem RCS-Traffic nicht aktiviert ist, gibt die RCS for Business-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 RCS for Business-Plattform den Fehler 400 INVALID_ARGUMENT zurück und Ihre 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 widerrufen möchten, legen Sie ein Ablaufdatum für Nachrichten fest.
Empfänger ist offline
Die RCS for Business-Plattform akzeptiert weiterhin Nachrichten zur Zustellung, wenn der Empfänger offline ist. Sie erhalten die Antwort „200 OK“. Die RCS for Business-Plattform speichert die Nachricht und versucht 30 Tage lang, sie noch einmal zuzustellen. Sie müssen RCS for Business nicht bitten, die Nachricht noch einmal zu senden.
Bei RCS for Business werden nicht zugestellte Nachrichten 30 Tage nach dem Senden gelöscht.
Je nach Anwendungsfall Ihres Agents kann es sinnvoll sein, eine nicht zugestellte Nachricht vor Ablauf dieses 30‑Tage-Timeouts zurückzurufen. Durch den Widerruf kann verhindert werden, dass Offline-Nutzer 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 automatisch zum richtigen Zeitpunkt 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 wird verhindert, dass Nutzer, die offline sind, veraltete Inhalte erhalten, wenn sie wieder online gehen. 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.
Der Höchstwert 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.
Gültigkeitsdauer (TTL) einer Nachricht
Wenn Sie einen TTL-Wert für eine RCS for Business-Nachricht festlegen, geben Sie an, wie lange die Nachricht als gültig und zustellbar gelten soll. Wenn die Nachricht innerhalb dieses TTL-Zeitraums nicht erfolgreich auf dem Gerät des Nutzers zugestellt wird, versucht die RCS for Business-Plattform automatisch, sie zu widerrufen.
Wenn Sie eine Nachricht zurückrufen, fordern Sie die RCS for Business-Plattform auf, die Zustellung dieser Nachricht zu beenden. Diese Aktion wirkt sich jedoch nur auf zukünftige Zustellversuche aus. Wenn das Gerät eines Nutzers die Nachricht bereits erfolgreich abgerufen hat, wird die Nachricht verarbeitet und die RCS for Business-Plattform kann die Nachricht nicht mehr vom Gerät des Nutzers entfernen.
Das sollten Sie in Bezug auf Benachrichtigungen wissen:
Nachricht innerhalb der TTL zugestellt:Wenn das Gerät des Nutzers online geht und die Nachricht vor Ablauf der TTL empfängt, erhalten Sie eine
DELIVERED-Benachrichtigung. Es wird keine Benachrichtigung über den Widerruf gesendet, da die Nachricht erfolgreich zugestellt wurde. Das ist das häufigste und erwartete Szenario.Nachricht nicht vor Ablauf der TTL zugestellt:Wenn die TTL abläuft, bevor die Nachricht das Gerät des Nutzers erreicht (z. B. weil das Gerät offline ist), versucht die RCS for Business-Plattform, die Nachricht zurückzurufen. Sie erhalten eine
TTL_EXPIRATION_REVOKED-Benachrichtigung, die darauf hinweist, dass die Nachricht erfolgreich aus der Zustellungswarteschlange entfernt wurde. In diesem Fall erhält der Nutzer die Nachricht nicht.
Empfehlungen für den Umgang mit Grenzfall-Szenarien
Unser System verarbeitet die Zustellung von RCS for Business-Nachrichten und das Ablaufen der TTL parallel. Aus diesem Grund kann es sehr selten vorkommen, dass der Zeitpunkt von Benachrichtigungen unerwartet ist. Sie erhalten beispielsweise sowohl eine Benachrichtigung über die Zustellung als auch über die TTL oder keine von beiden.
Hier sind unsere Empfehlungen für den Umgang mit Benachrichtigungen zu RCS for Business-Nachrichten:
DELIVERED-Benachrichtigung:Wenn Sie eineDELIVERED-Benachrichtigung für eine Nachricht erhalten, bedeutet das, dass die Nachricht den Nutzer erreicht hat. Sie können alle nachfolgenden TTL-Benachrichtigungen für diese bestimmte Nachricht ignorieren.TTL_EXPIRATION_REVOKED-Benachrichtigung:Wenn Sie eine TTL-Benachrichtigung mit dem StatusTTL_EXPIRATION_REVOKEDerhalten, bedeutet das, dass das RCS for Business-System nicht mehr versucht, diese bestimmte Nachricht zuzustellen. Sie sollten diese Nachricht als nicht zugestellt behandeln und bei Bedarf mit Ihrer Fallback-Strategie fortfahren.TTL-Benachrichtigung mit einem anderen Status:Wenn Sie eine TTL-Benachrichtigung mit einem anderen Status erhalten, deutet dies auf einen nicht eindeutigen Widerrufsversuch hin.
- Leiten Sie für wichtige Nachrichten wie Einmalpasswörter die Fallback-Methode ein.
- Bei nicht kritischen Nachrichten entscheiden Sie, ob Sie den Fallback initiieren möchten.
- Keine Benachrichtigungen:In seltenen Fällen kann es vorkommen, dass das System keine TTL-Benachrichtigung sendet und der Client auch keine Zustellbenachrichtigung generiert. Das ist ein extrem seltener Fall.
Nachrichtentyp festlegen
Die RBM API enthält das Feld messageTrafficType zum Kategorisieren von Nachrichten.
Mit Agent-Anwendungsfällen wird weiterhin das Verhalten von Agents und die anzuwendenden Geschäftsregeln definiert. 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 Anwendungsfälle für Kundenservicemitarbeiter oder Geschäftsregeln.
Dieses Feld ist optional, wird aber empfohlen. Wenn Sie es jetzt festlegen, erhalten Sie keine Fehlermeldung, wenn das Feld erforderlich wird.
Um den Nachrichtentraffictyp festzulegen, weisen Sie jeder Nachricht basierend auf ihrem Inhalt das entsprechende messageTrafficType zu. RCS for Business 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. | Transaktional 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. | OTP, Transaktions-, Werbe- oder Mehrfachnutzung |
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. | OTP, Transaktions-, Werbe- oder Mehrfachnutzung |
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.
Um unerwarteten Datenverbrauch für Nutzer zu vermeiden, darf die maximale Größe einer Datei, die über RCS for Business gesendet werden kann, 100 MiB nicht überschreiten. Die kombinierte Gesamtgröße aller Media- und PDF-Anhänge in einer einzelnen RCS for Business-Nachricht darf ebenfalls 100 MiB nicht überschreiten. (1 MiB = 1.048.576 Byte) 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-Nachrichten auf RCS for Business zu unterstützen. Eine RCS for Business-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 SMS und Linkvorschauen
RCS-Clients können Linkvorschauen implementieren. Wenn eine reine Textnachricht von RCS for Business eine URL für eine Website mit Open Graph-Tags enthält, kann der Client eine Vorschau (Bild, Titel usw.) generieren und so für eine bessere Nutzererfahrung sorgen. Beispiel für eine einfache Nachricht mit URL-Vorschau
Beachten Sie, dass der Nutzer Linkvorschauen im RCS-Client möglicherweise deaktivieren kann.
Einmalpasswörter zur Nutzerbestätigung
Mit RCS for Business 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 OTPs, die über RCS for Business eingehen.
Funktionsweise unter Android
Bei Android-Apps, die mit der SMS Retriever API registriert sind, wartet die API auf eine korrekt formatierte RCS for Business-Nachricht. Diese Nachricht muss sowohl das Einmalkennwort als auch einen eindeutigen Hash enthalten, der Ihre App identifiziert.
Wenn eine RCS for Business-Nachricht im richtigen Format empfangen wird, verarbeitet die SMS Retriever API sie genauso wie ein SMS-Einmalpasswort. Nachdem der Hash mit Ihrer App abgeglichen wurde, wird das Einmalkennwort extrahiert und zur automatischen Nutzerbestätigung an Ihre App weitergeleitet.
- Beispiel für eine RCS for Business-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.
Funktionsweise unter iOS
Bei iOS werden die im System integrierten OTP-Funktionen automatisch erkannt und RCS for Business-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 einem Bild, Video, Audio oder einer PDF-Datei senden, muss Ihr Kundenservicemitarbeiter eine öffentlich zugängliche URL für die Inhalte angeben oder die Datei direkt hochladen.
Die maximale Größe einer Datei, die gesendet werden kann, beträgt 100 MiB. Die Gesamtgröße aller Medien- und PDF-Anhänge in einer einzelnen Nachricht darf 100 MiB nicht überschreiten.
Spezifikationen für Thumbnails
Für Mediendateien 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 maximale Dateigröße einer Miniaturansicht beträgt 100 KB. Für eine optimale Nutzererfahrung empfehlen wir, dass die Größe 50 KB oder weniger beträgt.
- Das Seitenverhältnis der Miniaturansicht sollte dem der Originaldatei entsprechen.
Caching und URL-Verwaltung
Die RCS for Business-Plattform speichert Dateien 60 Tage lang im Cache und die API gibt eine Datei-ID zurück, die Ihr Kundenservicemitarbeiter in Nachrichten an Nutzer einfügen kann. Nach 60 Tagen werden Dateien aus dem Cache von RCS for Business entfernt.
Wenn Sie Dateien über eine URL angeben, empfiehlt es sich, contentMessage.forceRefresh auf false festzulegen. Wenn Sie contentMessage.forceRefresh auf true festlegen, erzwingen Sie, dass RCS for Business neue Inhalte von der angegebenen URL abruft, auch wenn die URL-Inhalte im Cache gespeichert sind. Dadurch verlängert sich die Zustellzeit von Nachrichten für Nutzer.
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 Miniaturansichtsdatei 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 JSONcurl -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 JSONcurl -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
RCS for Business 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 | Ja (nur für Google Messages in Indien) | ||
| 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 mit dem Text der Antwort und den Postback-Daten. 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 mit den Postback-Daten der Aktion.
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), Pluszeichen (+), Sternchen (*) und 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 für Ihren Agenten freigeben. Der Nutzer kann entweder seinen aktuellen Standort oder einen manuell ausgewählten Standort aus der Google 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 Agenten angegebenen Webseite weiterleiten. Standardmäßig wird die Webseite im Browser des Nutzers geöffnet. Sie können auch festlegen, dass die Webseite in einer Webview geöffnet wird. Weitere Informationen finden Sie unter URL mit Webview öffnen.
Nur in Google Messages:Wenn ein Nutzer eine Standard-App für die Webseite konfiguriert hat, wird diese App anstelle des Browsers oder der Webview geöffnet und auf der Vorschlagschaltfläche wird das Symbol der App angezeigt. Damit das App-Symbol in Google Messages angezeigt wird, müssen Sie die vollständige, direkte URL angeben. Wenn Sie eine gekürzte URL verwenden, wird stattdessen das Standardsymbol „URL öffnen“ angezeigt.
Beispiel
Mit dem folgenden Code wird eine Aktion zum Öffnen einer URL 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 RCS for Business-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 Kalendertermin muss einen Titel haben. 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 (von einem Nutzer oder Ihrem Agent) überschreiben die Chipleiste.
Die Chips in der Liste sind Antwortvorschläge und Aktionsvorschläge.
Chiplisten enthalten maximal 11 Vorschlagschips und jedes Chip-Label darf maximal 25 Zeichen lang sein.
Informationen zu Formatierungs- und Wertoptionen finden Sie unter AgentContentMessage.
Interaktive Chat-Nachrichten
Interaktive Chat-Nachrichten kombinieren Medien, Text und interaktive Vorschläge in einer einzigen Nachricht. Sie eignen sich ideal, um zusammengehörige Informationen zu präsentieren, z. B. ein Produkt mit Bild, Name und Preis, und Nutzer mit einem klaren nächsten Schritt wie „Details ansehen“ zu leiten.
Eine interaktive Chat-Nachricht kann Folgendes enthalten:
- Media (Bild, GIF oder Video)
- Text für Titel
- Beschreibungstext
- Antwortvorschläge und Aktionsvorschläge (maximal 4)
Jedes dieser Felder ist optional, aber mindestens eines der Felder 1–3 muss in der Rich Card enthalten sein.
Mehrere Karten können zusammen in einem horizontal scrollbaren Karussell gesendet werden.
Die maximale Nutzlast für eine interaktive Chat-Nachricht beträgt 250 KB.
Ausführliche technische Informationen finden Sie in der Dokumentation zu Rich Cards.
Kartenhöhe
Interaktive Chat-Nachrichten werden vertikal erweitert, um Platz für den Inhalt zu schaffen. Sie haben eine Mindesthöhe von 112 dp und eine maximale Höhe von 344 dp. Wenn der Karteninhalt nicht groß genug ist, um die Mindestkartenhöhe zu erreichen, 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 Media bei der ausgewählten Höhe nicht in die Abmessungen auf der Karte passen, wird die Media-Vorschau durch Zoomen und Zuschneiden der Media erstellt.
Beispiel
Mit dem folgenden Code wird eine interaktive Chat-Nachricht mit einem Bild und vorgeschlagenen 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
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. Interaktive Chat-Nachrichten in Karussells müssen den allgemeinen Anforderungen an interaktive Chat-Nachrichten für Inhalt und Höhe entsprechen, wie in der Dokumentation zu interaktiven Chat-Nachrichten beschrieben. Weitere Informationen zum Karussell-Layout und zu den Spezifikationen finden Sie in der Karussell-Dokumentation.
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/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); });
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(); }
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')
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);