RCS for Business-Agenten kommunizieren mit Benutzern durch das Senden und Empfangen von Nachrichten. Um Nachrichten an Benutzer zu senden, sendet Ihr Agent Nachrichtenanfragen an die RCS Business Messaging API. Eine einzelne Anfrage kann Text , Rich Cards , Medien- und PDF-Dateien , Antwortvorschläge und Aktionsvorschläge enthalten.
Die RCS for Business-Plattform gibt in bestimmten Situationen Fehler zurück, um Sie bei der Verwaltung der Nachrichtenzustellung zu unterstützen:
- Wenn Sie eine Nachricht an einen Benutzer senden, dessen Gerät RCS nicht unterstützt oder bei 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 Benutzer über die in Ihrer Infrastruktur definierten Ausweichmethoden zu erreichen.
- Wenn Sie eine Nachricht an einen RCS-Benutzer in einem Netzwerk senden, in dem Ihr Agent noch nicht gestartet ist, oder in einem Netzwerk, in dem der RCS-Datenverkehr nicht aktiviert ist, gibt die RCS for Business-Plattform einen 404 NOT_FOUND-Fehler zurück.
- Wenn Sie eine Nachricht mit Funktionen senden, die das Gerät des Benutzers nicht unterstützt, gibt die RCS for Business-Plattform den Fehler 400 INVALID_ARGUMENT zurück und stellt Ihre Nachricht nicht zu.
Im Rahmen Ihrer Multi-Channel-Messaging-Strategie empfiehlt es sich, Nachrichten, die nach einer angemessenen Zeit nicht zugestellt wurden, zu stornieren und über einen anderen Kanal zu senden. Um Nachrichten automatisch nach einem vordefinierten Zeitpunkt zu stornieren, legen Sie ein Ablaufdatum für die Nachricht fest.
Empfänger ist offline
Die RCS for Business-Plattform nimmt Nachrichten auch dann entgegen, wenn der Empfänger offline ist. Sie erhalten eine 200-OK-Antwort, und die Plattform speichert die Nachricht und versucht 30 Tage lang erneut zuzustellen. Sie müssen RCS for Business nicht bitten, die Nachricht erneut zu senden.
RCS for Business löscht alle nicht zugestellten Nachrichten 30 Tage nach deren Absendung.
Je nach Anwendungsfall Ihres Agenten kann es sinnvoll sein, eine nicht zugestellte Nachricht vor Ablauf der 30-Tage-Frist zu widerrufen . Durch den Widerruf wird verhindert, dass Offline-Nutzer beim erneuten Onlinegehen eine veraltete Nachricht erhalten. Es gibt mehrere Möglichkeiten, eine Nachricht zu widerrufen:
- Senden Sie eine Widerrufsanfrage, um den Widerruf auszulösen.
- Legen Sie ein Ablaufdatum für die Nachricht fest , um die Nachricht zum entsprechenden Zeitpunkt automatisch zu widerrufen.
Legen Sie ein Ablaufdatum für Nachrichten fest.
Sind die Nachrichten Ihrer Mitarbeiter zeitkritisch? Beispielsweise sind Einmalpasswörter (OTPs) nur kurz gültig. Zeitlich begrenzte Angebote laufen ab. Und Terminerinnerungen sind nach dem Termin nicht mehr relevant. Um Nachrichten aktuell und relevant zu halten, legen Sie ein Ablaufdatum fest. So verhindern Sie, dass Offline-Nutzer veraltete Inhalte erhalten, wenn sie wieder online sind. Das Ablaufdatum ist außerdem ein guter Anlass, Ihre alternative Nachrichtenstrategie zu aktivieren, damit Nutzer die benötigten Informationen rechtzeitig erhalten.
Um ein Ablaufdatum für eine Nachricht festzulegen, geben Sie eines der folgenden Felder in der Agentennachricht an:
-
expireTime: die genaue Uhrzeit in UTC, zu der die Nachricht abläuft. -
ttl(Time-to-Live): Die Zeitspanne, nach der die Nachricht abläuft.
Informationen zu Formatierungs- und Wertoptionen finden Sie unter AgentMessage .
Der Maximalwert für ttl und expireTime beträgt 15 Tage nach Nachrichtenübermittlung.
Obwohl es keinen Mindestwert für ttl und expireTime gibt, wird empfohlen, mindestens 10 Sekunden nach dem Absenden der Nachricht zu warten, um die Wahrscheinlichkeit, eine Benachrichtigung über Widerruf oder Zustellung zu erhalten, deutlich zu verringern.
Zeit, die für eine Nachricht zu leben ist (TTL).
Wenn Sie für eine RCS for Business-Nachricht eine Gültigkeitsdauer (TTL) festlegen, geben Sie an, wie lange die Nachricht als gültig und zustellbar gelten soll. Wird die Nachricht innerhalb dieser Gültigkeitsdauer nicht erfolgreich an das Gerät des Nutzers zugestellt, versucht die RCS for Business-Plattform automatisch, sie zu widerrufen.
Wenn Sie eine Nachrichtenwiderrufsanfrage stellen, weisen Sie die RCS for Business-Plattform an, die Zustellung dieser Nachricht einzustellen. Diese Aktion betrifft jedoch nur zukünftige Zustellungsversuche. Wurde die Nachricht bereits erfolgreich vom Gerät des Nutzers empfangen, wird sie verarbeitet, und die RCS for Business-Plattform kann sie nicht mehr vom Gerät des Nutzers entfernen.
Folgendes können Sie in Bezug auf Benachrichtigungen erwarten:
Nachricht innerhalb der Gültigkeitsdauer zugestellt: Wenn das Gerät des Nutzers online geht und die Nachricht empfängt, bevor die Gültigkeitsdauer abläuft, erhalten Sie eine
DELIVERED. Es wird keine Widerrufsbenachrichtigung gesendet, da die Nachricht erfolgreich zugestellt wurde. Dies ist der häufigste und erwartete Fall.Nachricht nicht vor Ablauf der Gültigkeitsdauer zugestellt: Läuft die Gültigkeitsdauer ab, 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 zu widerrufen. Sie erhalten die Benachrichtigung
TTL_EXPIRATION_REVOKED, die bestätigt, 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 Sonderfällen
Unser System verarbeitet die Zustellung von RCS-for-Business-Nachrichten und die Gültigkeitsdauer (TTL) parallel. Daher kann es in seltenen Fällen vorkommen, dass die Benachrichtigungen zeitlich unerwartet erfolgen. Beispielsweise erhalten Sie möglicherweise sowohl eine Zustellungs- als auch eine Gültigkeitsdauerbenachrichtigung oder keine von beiden.
Hier sind unsere Empfehlungen für den Umgang mit RCS for Business-Nachrichtenbenachrichtigungen:
DELIVERED-Benachrichtigung: Wenn Sie eineDELIVERED-Benachrichtigung für eine Nachricht erhalten, bestätigt dies, dass die Nachricht den Empfänger erreicht hat. Sie können alle nachfolgenden TTL-Benachrichtigungen für diese Nachricht ignorieren.TTL_EXPIRATION_REVOKED-Benachrichtigung: Wenn Sie eine TTL-Benachrichtigung mit dem StatusTTL_EXPIRATION_REVOKEDerhalten, bedeutet dies, dass das RCS for Business-System die Zustellung dieser Nachricht abbricht. Behandeln Sie diese Nachricht als nicht zugestellt und wenden Sie gegebenenfalls Ihre Ausweichstrategie an.TTL-Benachrichtigung mit anderem Status: Wenn Sie eine TTL-Benachrichtigung mit einem anderen Status erhalten, deutet dies auf einen ergebnislosen Widerrufsversuch hin.
- Bei kritischen Nachrichten, wie z. B. Einmalpasswörtern (OTPs), aktivieren Sie Ihre Ausweichmethode.
- Bei nicht kritischen Meldungen entscheiden Sie, ob der Fallback ausgelöst werden soll oder nicht.
- Keine Benachrichtigungen: In seltenen Ausnahmefällen kann es vorkommen, dass das System keine TTL-Benachrichtigung sendet und der Client ebenfalls keine Zustellbenachrichtigung generiert. Dies ist ein äußerst seltener Fall.
Legen Sie den Nachrichtenverkehrstyp fest
Die RBM-API enthält das Feld messageTrafficType zur Kategorisierung von Nachrichten. Während die Anwendungsfälle der Agenten weiterhin deren Verhalten und die anzuwendenden Geschäftsregeln definieren, ermöglicht messageTrafficType eine detailliertere Kategorisierung des Nachrichteninhalts. Dadurch kann ein einzelner Agent mehrere Anwendungsfälle bearbeiten. Bestehende Anwendungsfälle oder Geschäftsregeln bleiben derzeit unberührt.
Dieses Feld ist optional, es wird jedoch empfohlen, es jetzt auszufüllen, damit Sie keine Fehlermeldung erhalten, wenn das Feld erforderlich wird.
Um den Nachrichtenverkehrstyp festzulegen, weisen Sie jeder Nachricht anhand ihres Inhalts den entsprechenden messageTrafficType zu. RCS for Business unterstützt die folgenden Verkehrstypen.
| Verkehrsart | Nachrichteninhalt | Anwendungsfall Agent |
|---|---|---|
AUTHENTICATION | Für Authentifizierungsnachrichten. | OTP |
TRANSACTION | Für Mitteilungen über bestehende Dienste oder Produkte eines Nutzers. Zum Beispiel: Bestätigungen, Zahlungsbelege oder Buchungsdetails. | Transaktions- oder Mehrfachnutzung |
PROMOTION | Für Werbebotschaften wie Angebote, Rabatte, Ankündigungen oder andere Werbeinhalte. | Werbe- oder Mehrzweckartikel |
SERVICEREQUEST | Für Meldungen über Dienste, die der Nutzer ausdrücklich angefordert hat. | OTP, Transaktions-, Werbe- oder Mehrfachnutzung |
ACKNOWLEDGEMENT | Diese Nachrichten dienen der Bestätigung einer Nutzeraktion – insbesondere einer Abmeldeanfrage. Sie bestätigen, dass die Anfrage des Nutzers eingegangen ist und bearbeitet wird. | OTP, Transaktions-, Werbe- oder Mehrfachnutzung |
Wenn kein Verkehrstyp festgelegt ist, weist das System dem Agenten den Standardtyp für seinen Anwendungsfall zu.
| Anwendungsfall Agent | Standard-Verkehrstyp |
|---|---|
| OTP | AUTHENTICATION |
| Transaktional | TRANSACTION |
| Werbeaktion | PROMOTION |
| Mehrzwecknutzung | MESSAGE_TRAFFIC_TYPE_UNSPECIFIED |
Mehrfach verwendbare Agenten haben keinen Standard-Datenverkehrstyp. Sie müssen den Datenverkehrstyp für jede Nachricht anhand ihres Inhalts explizit festlegen. Wenn Sie den Wert MESSAGE_TRAFFIC_TYPE_UNSPECIFIED nicht ersetzen, tritt ein Fehler auf.
Beschränkungen der Nachrichtengröße
Die maximale Größe der gesamten AgentMessage- Zeichenkette beträgt 250 KB. Der Textteil der Nachricht ist auf 3072 Zeichen begrenzt.
Um einen unerwartet hohen Datenverbrauch für die Nutzer zu vermeiden, ist die maximale Dateigröße für RCS for Business auf 100 MiB begrenzt. Die Gesamtgröße aller Medien- 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 Medien- und PDF-Dateien .
Text
Die einfachsten Nachrichten bestehen aus Text. Textnachrichten eignen sich am besten zur Informationsübermittlung ohne visuelle Elemente, komplexe Interaktion oder Reaktion.
Beispiel
Der folgende Code sendet eine Klartextnachricht. 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", );
Grundlegender Nachrichteninhalt – Umwandlung von SMS
Mobilfunkanbieter haben Abrechnungsmodelle eingeführt, um die Umstellung von SMS auf RCS for Business zu unterstützen. Eine RCS-for-Business-Nachricht mit bis zu 160 UTF-8-Zeichen wird als Basisnachricht bezeichnet.
Beim Verfassen einer Anfrage zum Senden einer einfachen Nachricht ist zu beachten, dass ein Zeichen als 1 Byte (UTF-8) gezählt wird. Wenn Sie eine Nachricht mit Sonderzeichen wie Emojis oder Mehrbyte-Zeichensätzen senden, zählt jedes Zeichen als 2–4 UTF-8-Zeichen oder mehr.
Geben Sie einen Text in das Feld ein, um dessen Länge zu überprüfen:
Vorschau des SMS-Inhalts und der Links
RCS-Clients können Link-Vorschauen implementieren. Enthält eine reine Textnachricht von RCS for Business eine URL zu einer Website mit OpenGraph-Tags , kann der Client eine Vorschau (Bild, Titel usw.) generieren und so ein ansprechenderes Nutzererlebnis bieten. Ein Beispiel für eine einfache Nachricht mit URL-Vorschau finden Sie hier.
Beachten Sie, dass der RCS-Client es dem Benutzer möglicherweise ermöglicht, Link-Vorschauen zu deaktivieren.
Einmalpasswörter zur Benutzerverifizierung
Mit RCS for Business können Sie Einmalpasswörter (OTPs) zur automatischen Benutzerverifizierung mithilfe der SMS Retriever API versenden. Es gibt keine separate API zum Auslesen von OTPs, die über RCS for Business eingehen.
So funktioniert es für Android
Für Android-Apps, die sich bei der SMS Retriever API registriert haben, wartet die API auf korrekt formatierte RCS for Business-Nachrichten. Diese Nachrichten müssen sowohl das OTP als auch einen eindeutigen Hash enthalten, der Ihre App identifiziert.
Wenn eine RCS for Business-Nachricht im korrekten Format empfangen wird, verarbeitet die SMS Retriever API sie wie ein SMS-OTP. Nachdem der Hashwert mit Ihrer App abgeglichen wurde, wird das OTP extrahiert und zur automatischen Benutzerverifizierung an Ihre App weitergeleitet.
- Beispiel einer SMS von RCS for Business zur Benutzerverifizierung:
Your code is <OTP><app hash>. - Beispiel:
Your code is 123456 M8tue43FGT.
Weitere Informationen zum SMS Retriever und den zugehörigen APIs finden Sie in der SMS Retriever-Dokumentation . Details zur automatischen Benutzerverifizierung in Apps, die bei der SMS Retriever API registriert sind, finden Sie in diesem Ablaufdiagramm .
So funktioniert es für iOS
Unter iOS erkennt die integrierte OTP-Funktion des Systems automatisch RCS for Business-OTPs und schlägt sie zur automatischen Ausfüllung vor, genau wie SMS-OTPs. Für die iOS-App ist keine spezielle API-Integration erforderlich, um das OTP zu lesen.
Medien- und PDF-Dateien
Wenn Sie eine Nachricht mit einem Bild, Video, Audio oder einer PDF-Datei senden, muss Ihr Agent eine öffentlich zugängliche URL für den Inhalt bereitstellen oder die Datei direkt hochladen.
Die maximale Größe einer zu versendenden Datei beträgt 100 MiB, und die Gesamtgröße aller Medien- und PDF-Anhänge innerhalb einer einzelnen Nachricht darf 100 MiB nicht überschreiten.
Medienkomprimierung und Transkodierung
Die RCS for Business-Plattform transkodiert und komprimiert automatisch Mediendateien (wie Bilder und Videos), bevor sie versendet werden, um sicherzustellen, dass sie schnell geladen werden und auf verschiedenen Netzwerken und Geräten einwandfrei funktionieren.
Die Komprimierung basiert auf der Qualität des Eingabemediums und nicht strikt auf Dateigrößenbeschränkungen. Das bedeutet, dass eine Datei auch dann komprimiert werden kann, wenn ihre Größe deutlich unter dem Grenzwert von 100 MiB liegt. Da sich Transkodierungsstandards ständig ändern, gibt es keine feste Dateigrößenbeschränkung, die festlegt, wann die Transkodierung umgangen wird. Experimentieren Sie mit verschiedenen Medienformaten, Abmessungen und Komprimierungsraten, um die optimale Balance für Ihre Daten zu finden.
Miniaturansicht-Spezifikationen
Für Mediendateien können Sie auch ein Vorschaubild festlegen, damit Nutzer den Inhalt vor dem Anklicken in der Vorschau ansehen können. Für Audiodateien wird das Standard-Audio-Widget als Platzhalter verwendet.
- Die maximale Dateigröße eines Vorschaubildes beträgt 100 kB. Für eine optimale Benutzererfahrung empfehlen wir eine Größe von 50 kB oder weniger.
- Das Seitenverhältnis des Vorschaubildes sollte dem Seitenverhältnis der Originaldatei entsprechen.
Caching und URL-Verwaltung
Die RCS for Business-Plattform speichert Dateien 60 Tage lang im Cache. Die API gibt eine Datei-ID zurück, die Ihr Agent in Nachrichten an Benutzer einfügen kann. Nach 60 Tagen werden die Dateien von RCS for Business aus dem Cache entfernt.
Beim Angeben von Dateien per URL empfiehlt es sich, contentMessage.forceRefresh auf false zu setzen. Die Einstellung contentMessage.forceRefresh auf true zwingt RCS for Business dazu, neue Inhalte von der angegebenen URL abzurufen, selbst wenn die Inhalte der URL zwischengespeichert sind. Dies verlängert die Zustellungszeiten für Benutzer.
Beispiel für eine Datei-URL
Der folgende Code sendet ein Bild. 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 vor dem Versenden in einer Nachricht mit files.create hochladen.
Beispiel für einen Datei-Upload
Der folgende Code lädt eine Videodatei und eine Miniaturansicht hoch und sendet anschließend beide Dateien in einer Nachricht. 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 | Verlängerung | Funktioniert mit hochwertigen Karten |
|---|---|---|---|
| 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 |
| Bild/GIF | GIF | .gif | Ja |
| Bild/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 Ihnen Vorschläge (Antwortvorschläge und Handlungsvorschläge) in Form von Vorschlags-Chiplisten oder Rich Cards .
Antwortvorschläge
Vorgeschlagene Antworten leiten die Nutzer durch die Konversationen, indem sie Antworten bereitstellen, auf die Ihr Agent reagieren kann.
Wenn ein Nutzer auf eine vorgeschlagene Antwort tippt, empfängt Ihr Agent ein Ereignis, das den Antworttext und die Postback-Daten enthält . Die Nutzdaten dürfen maximal 2048 Zeichen lang sein.
Beispiel
Der folgende Code sendet eine SMS mit zwei Antwortvorschlägen. 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 );
Empfohlene Maßnahmen
Vorgeschlagene Aktionen leiten Nutzer durch Gespräche, indem sie die integrierten Funktionen ihrer Geräte nutzen. Ihr Agent kann Nutzern vorschlagen, eine Nummer zu wählen, einen Standort auf einer Karte zu öffnen, einen Standort zu teilen, eine URL zu öffnen oder einen Kalendereintrag zu erstellen.
Für jede vorgeschlagene Aktion können Sie optional eine Ausweich-URL (maximal 2048 Zeichen) angeben. Diese URL öffnet sich in einem neuen Browserfenster, falls das Gerät des Nutzers die vorgeschlagene Aktion nicht unterstützt.
Wenn ein Benutzer auf eine vorgeschlagene Aktion tippt, empfängt Ihr Agent ein Ereignis, das die Postback-Daten der Aktion enthält .
Informationen zu Formatierungs- und Wertoptionen finden Sie unter SuggestedAction .
Vorschlagsanzeige
Es gibt zwei Möglichkeiten, Vorschläge anzuzeigen:
- Persistent : Vorgeschlagene Aktionen oder Antworten, die in der Sprechblase angezeigt werden und während der gesamten Konversation unverändert bleiben.
- Vorübergehende Vorschläge : Vorschläge, die außerhalb der Sprechblase angezeigt werden und verschwinden, sobald die Konversation fortgesetzt wird.
Unterstützte Nachrichtenformate
- Konsequente Vorschläge: Arbeiten Sie mit eigenständigen Textnachrichten und Rich Cards.
- Vorübergehende Vorschläge: Arbeiten Sie mit eigenständigen Textnachrichten, Mediennachrichten und Rich Cards.
Vorschläge kombinieren
Sie können dauerhafte und temporäre Vorschläge in derselben Nachricht oder Rich-Card mischen.
- Textnachrichten: Vorschläge sind standardmäßig temporär. Damit sie dauerhaft angezeigt werden, müssen Sie sie als persistent konfigurieren.
- Rich Cards: Diese unterstützen standardmäßig bis zu vier dauerhafte Vorschläge. Sie können dann temporäre Vorschläge als „Chipliste“ unterhalb der Karte hinzufügen.
Vorschlagsgrenzen
Eine einzelne SMS unterstützt maximal 11 Vorschläge. Alle hinzugefügten permanenten Vorschläge zählen zu diesem Limit. Wenn Sie beispielsweise 4 permanente Vorschläge einfügen, können Sie bis zu 7 temporäre Vorschläge hinzufügen.
| Vorschlagstyp | Limit | Wo sie erscheinen |
|---|---|---|
| Hartnäckig | Bis zu 4 | Innerhalb der Nachrichtenblase |
| Vorübergehend | Bis zu 11 | Außerhalb der Blase (als Chips) |
Zeichenbegrenzung
Jeder Vorschlag darf maximal 25 Zeichen umfassen.
URL-Transparenz in vorgeschlagenen Aktionen
Um das Vertrauen der Nutzer zu stärken, wird die zugrundeliegende URL als zweite Textzeile im Vorschlagsbutton für die Aktion „URL öffnen“ angezeigt. Dieses einheitliche Verhalten gilt für einzelne Textnachrichten, Rich Cards und Karussells.
Unterstützte Kunden für anhaltende Vorschläge
- Unterstützt: Google Messages (Version
20260225.00oder höher). - Nicht unterstützt: Google Messages-Versionen vor
20260225.00, iOS und Samsung Messages.
Wählen Sie eine Nummer
Die Wählfunktion leitet den Benutzer an, eine vom Agenten angegebene Telefonnummer zu wählen. Telefonnummern dürfen nur Ziffern ( 0-9 ), Pluszeichen ( + ), Sternchen ( * ) und Rautezeichen ( # ) enthalten. Das internationale E.164-Format (z. B. +14155555555 ) wird unterstützt, ist aber nicht erforderlich. Sowohl +14155555555 als auch 1011 sind gültige Eingaben.
Beispiel
Der folgende Code sendet eine Wählaktion. 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 anzeigen
Die Aktion „Standort anzeigen“ zeigt einen Standort in der Standard-Karten-App des Benutzers an. Sie können den Standort entweder anhand von Längen- und Breitengraden oder mithilfe einer Abfrage basierend auf dem aktuellen Standort des Benutzers festlegen. Außerdem können Sie eine benutzerdefinierte Bezeichnung für die in der Karten-App angezeigte Markierung festlegen.
Beispiel
Der folgende Code sendet eine ViewLocationAction-Aktion. 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
Die Funktion „Standort teilen“ ermöglicht es dem Nutzer, seinen Standort mit Ihrem Agenten zu teilen. Der Nutzer kann entweder seinen aktuellen Standort oder einen manuell in der Karten-App ausgewählten Standort teilen.
Beispiel
Der folgende Code sendet eine Standortfreigabeaktion. 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 );
Öffnen Sie eine URL
Mit der Aktion „URL öffnen“ können Sie Benutzer zu einer von Ihrem Agenten festgelegten Webseite weiterleiten. Standardmäßig wird die Webseite im Browser des Benutzers geöffnet. Alternativ können Sie festlegen, dass die Webseite in einer Webansicht geöffnet wird. Weitere Informationen finden Sie unter „URL mit Webansicht öffnen“ .
Nur in Google Messages
Anzeige der zugrundeliegenden URL : Um die Transparenz von A2P-Nachrichten zu verbessern, zeigt Google Messages die zugrundeliegende URL-Adresse in den Aktionsvorschlägen unter „URL öffnen“ an. Diese Änderung betrifft Aktionsvorschläge in Standard- Rich-Cards und Rich-Card-Karussells .

Anzeige des App-Symbols für Weblinks : Wenn für die Webseite eine Standard-App konfiguriert ist, wird diese anstelle des Browsers oder der Webansicht geöffnet, und die Schaltfläche „Vorschlag“ zeigt das App-Symbol an. Damit das App-Symbol in Google Messages angezeigt wird, muss die vollständige, direkte URL angegeben werden. Bei Verwendung einer Kurz-URL wird stattdessen das Standard-Symbol „URL öffnen“ angezeigt.

Beispiel
Der folgende Code sendet eine OpenUrlAction-Aktion. 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 );
Öffnen Sie eine URL mit Webansicht
Die Aktion „URL mit Webansicht öffnen“ lädt die angegebene Webseite innerhalb der Messaging-App mit der Rendering-Engine Ihres Standardbrowsers. Dadurch kann der Benutzer mit der Webseite interagieren, ohne die RCS for Business-Konversation zu verlassen. Falls das Gerät des Benutzers keine Webansichten unterstützt, wird die Webseite stattdessen im Browser des Benutzers geöffnet. Informationen zum Aktivieren von Webansichten finden Sie unter OpenURLApplication .
Webviews verfügen über drei Anzeigemodi. Informationen zu Formatierungs- und Wertoptionen finden Sie unter WebviewViewMode .
- Vollbild: Die Webseite füllt den gesamten Bildschirm aus.
- Hälfte: Die Webseite nimmt die Hälfte des Bildschirms ein.
- Hochformat: Die Webseite nimmt drei Viertel des Bildschirms ein.
Beispiel
Der folgende Code sendet eine OpenURL-Aktion mit Webview-Funktion. 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; }
Erstellen Sie ein Kalenderereignis
Die Aktion „Kalenderereignis erstellen“ öffnet die Kalender-App des Benutzers und beginnt mit der Erstellung eines neuen Ereignisses mit den angegebenen Informationen.
Für den Kalendereintrag ist ein Titel erforderlich. Dieser darf maximal 100 Zeichen lang sein. Die Beschreibung des Kalendereintrags ist optional und darf maximal 500 Zeichen lang sein.
Beispiel
Der folgende Code sendet eine Aktion zum Erstellen eines Kalenderereignisses. 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 );
Vorschlagsliste für Chips
Ihr Agent sendet Vorschlags-Chiplisten mit Nachrichten, um die Nutzer bei ihren weiteren Aktionen zu unterstützen. Die Chipliste wird nur angezeigt, wenn die zugehörige Nachricht am Ende des Gesprächs steht. Alle nachfolgenden Nachrichten im Gespräch (egal ob vom Nutzer oder Ihrem Agenten) überschreiben die Chipliste.
Die Chips in der Liste sind Antwortvorschläge und Handlungsempfehlungen .
Chiplisten enthalten maximal 11 Vorschlagschips, und jede Chipbezeichnung darf maximal 25 Zeichen enthalten.
Informationen zu Formatierungs- und Wertoptionen finden Sie unter AgentContentMessage .
Reichhaltige Karten
Rich Cards kombinieren Medien, Text und interaktive Vorschläge zu einer einzigen Nachricht. Sie eignen sich ideal, um verwandte Informationen darzustellen (z. B. ein Produkt mit Bild, Name und Preis) und Nutzer mit einem klaren nächsten Schritt wie dem Vorschlag „Details ansehen“ zu leiten.
Eine reichhaltige Karte kann Folgendes enthalten:
- Medien (Bild, GIF oder Video)
- Titeltext
- Beschreibungstext
- Vorschläge für Antworten und Handlungsempfehlungen (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 scrollenden Karussell versendet werden.
Beachten Sie, dass die Gesamtnutzlast einer Rich-Karte 250 KB beträgt.
Die vollständigen technischen Details finden Sie in der Dokumentation zu den Rich-Karten .
Kartenhöhe
Rich-Karten dehnen sich vertikal aus, um ihren Inhalt aufzunehmen. Ihre Mindesthöhe beträgt 112 DP und ihre maximale Höhe 344 DP. Reicht der Karteninhalt nicht aus, um die Mindesthöhe vollständig auszufüllen, wird die Karte gedehnt und der fehlende Platz mit Leerraum aufgefüllt.
Medien in Rich Cards müssen einer von drei Höhen entsprechen:
- Kurz: 112 DP
- Medium: 168 DP
- Größe: 264 DP
Wenn die Medieninhalte aufgrund der gewählten Höhe nicht in die Karte passen, wird die Medienvorschau durch Zoomen und Zuschneiden der Medieninhalte ausgewählt.
Beispiel
Der folgende Code sendet eine RichCard mit Bild und Antwortvorschlägen. 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");
Reichhaltige Kartenkarussells
Karussells verknüpfen mehrere informative Karten miteinander, sodass Benutzer Artikel vergleichen und auf jede einzelne reagieren können.
Karussells können mindestens zwei und maximal zehn Rich Cards enthalten. Rich Cards innerhalb von Karussells müssen den allgemeinen Anforderungen an Inhalt und Höhe für Rich Cards entsprechen, wie in der Dokumentation zu Rich Cards beschrieben. Weitere Informationen zum Karussell-Layout und den Spezifikationen finden Sie in der Karussell-Dokumentation .
Beispiel
Der folgende Code sendet ein Rich-Card-Karussell. 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);