Wysyłanie wiadomości

Agenci RBM komunikują się z użytkownikami, wysyłając i odbierając wiadomości. Aby wysyłać wiadomości do użytkowników, agent wysyła żądania wiadomości do interfejsu RCS Business Messaging API. Pojedyncze żądanie może zawierać tekst, karty z elementami multimedialnymi, pliki multimedialne i PDF, a także sugerowane odpowiedzisugerowane działania.

W określonych sytuacjach platforma RBM zwraca błędy, aby ułatwić Ci zarządzanie dostarczaniem wiadomości:

  • Jeśli wyślesz wiadomość do użytkownika, którego urządzenie nie obsługuje RCS lub nie ma włączonej tej funkcji, platforma RBM zwróci błąd 404 NOT_FOUND. W takim przypadku możesz spróbować skontaktować się z użytkownikiem za pomocą metod alternatywnych zdefiniowanych w infrastrukturze.
  • Jeśli wyślesz wiadomość do użytkownika RCS w sieci, w której Twój agent nie został jeszcze uruchomiony, lub w sieci, która nie włączyła ruchu RCS, platforma RBM zwróci błąd 404 NOT_FOUND.
  • Jeśli wyślesz wiadomość z funkcjami, których urządzenie użytkownika nie obsługuje, platforma RBM zwróci błąd 400 INVALID_ARGUMENT i nie dostarczy wiadomości.

W ramach strategii komunikacji wielokanałowej najlepiej jest wycofać wiadomości, które nie zostały dostarczone po upływie rozsądnego czasu, i wysłać je innym kanałem. Aby automatycznie wycofywać wiadomości o określonej godzinie, ustaw datę wygaśnięcia wiadomości.

Adresat jest offline

Platforma RBM nadal akceptuje wiadomość do dostarczenia, jeśli odbiorca jest offline. Otrzymasz odpowiedź 200 OK, a platforma RBM będzie przechowywać wiadomość i próbować ją ponownie dostarczyć przez 30 dni. Nie musisz prosić RBM o ponowne wysłanie wiadomości.

RBM usuwa wszystkie niedostarczone wiadomości po 30 dniach od ich przesłania.

W zależności od przypadku użycia agenta możesz wycofać niedostarczoną wiadomość przed upływem 30-dniowego limitu czasu. Odwołanie może uniemożliwić użytkownikom offline otrzymanie nieaktualnej wiadomości po powrocie do trybu online. Wiadomość możesz cofnąć na kilka sposobów:

Ustawianie daty ważności wiadomości

Czy wiadomość od agenta jest pilna? Na przykład jednorazowe kody weryfikacyjne są ważne tylko przez krótki czas. Oferty ograniczone czasowo wygasają. Przypomnienia o spotkaniach nie są już przydatne po dacie spotkania. Aby wiadomości były aktualne i trafne, ustaw ich datę wygaśnięcia. Może to zapobiec otrzymywaniu przez użytkowników offline nieaktualnych treści po ponownym połączeniu z internetem. Wygaśnięcie to też dobry moment na wywołanie strategii wysyłania wiadomości zastępczych, aby użytkownicy otrzymali potrzebne informacje na czas.

Aby ustawić wygaśnięcie wiadomości, w wiadomości agenta podaj jedno z tych pól:

  • expireTime: dokładny czas wygaśnięcia wiadomości w strefie czasowej UTC.
  • ttl(time to live): czas, po którym wiadomość wygasa.

Opcje formatowania i wartości znajdziesz w sekcji AgentMessage.

Gdy wiadomość wygaśnie, platforma RBM przestanie próbować ją dostarczyć i zostanie ona automatycznie wycofana. W rzadkich przypadkach może to jednak nie zadziałać. Na przykład interfejs API może wywołać unieważnienie, gdy platforma RBM będzie w trakcie dostarczania wiadomości. Aby potwierdzić, czy wygasła wiadomość została wycofana, RBM wyśle do Twojego webhooka zdarzenie z powiadomieniem.

Maksymalna wartość dla ttlexpireTime to 15 dni od przesłania wiadomości.

Chociaż nie ma wartości minimalnej ttlexpireTime, zalecamy, aby od momentu przesłania wiadomości upłynęło co najmniej 10 sekund. Pozwoli to znacznie zmniejszyć prawdopodobieństwo otrzymania powiadomienia o odwołaniu i dostarczeniu.

Ustaw typ ruchu wiadomości

Interfejs RBM API zawiera pole messageTrafficType, które służy do kategoryzowania wiadomości. Chociaż przypadki użycia agenta nadal określają zachowanie agenta i to, które reguły biznesowe mają zastosowanie, funkcja messageTrafficType umożliwia bardziej szczegółowe kategoryzowanie treści wiadomości. Umożliwi to jednemu agentowi obsługę wielu przypadków użycia. Obecnie nie ma to wpływu na dotychczasowe przypadki użycia agentów ani reguły biznesowe.

To pole jest opcjonalne, ale zalecamy jego ustawienie już teraz, aby uniknąć błędu, gdy stanie się wymagane.

Aby ustawić typ ruchu wiadomości, przypisz odpowiedni messageTrafficType do każdej wiadomości na podstawie jej treści. RBM obsługuje te typy ruchu:

Typ ruchu Treść wiadomości Przypadek użycia agenta
AUTHENTICATION w przypadku wiadomości uwierzytelniających. Hasło jednorazowe
TRANSACTION W przypadku wiadomości dotyczących istniejących usług lub produktów użytkownika. Na przykład potwierdzenia, pokwitowania płatności lub szczegóły rezerwacji. Transakcyjne lub wielokrotnego użytku
PROMOTION W przypadku wiadomości promocyjnych, takich jak oferty, rabaty, ogłoszenia lub inne treści promocyjne. Promocyjne lub wielokrotnego użytku
SERVICEREQUEST Wiadomości dotyczące usług, o które użytkownik wyraźnie poprosił. Hasło jednorazowe, transakcyjne, promocyjne lub wielokrotnego użytku
ACKNOWLEDGEMENT Wiadomości używane do potwierdzania działania użytkownika, w szczególności prośby o anulowanie subskrypcji. Jest to potwierdzenie, że otrzymaliśmy prośbę użytkownika i ją przetwarzamy. Hasło jednorazowe, transakcyjne, promocyjne lub wielokrotnego użytku

Jeśli nie ustawisz typu ruchu, system przypisze domyślny typ dla przypadku użycia agenta.

Przypadek użycia agenta Domyślny typ ruchu
OTP AUTHENTICATION
Transakcyjne TRANSACTION
Promocyjne PROMOTION
Wielokrotnego użytku MESSAGE_TRAFFIC_TYPE_UNSPECIFIED

Agenci wielofunkcyjni nie mają domyślnego typu ruchu. W przypadku każdej wiadomości musisz wyraźnie określić typ ruchu na podstawie jej treści. Jeśli nie zastąpisz wartości MESSAGE_TRAFFIC_TYPE_UNSPECIFIED, wystąpi błąd.

Limity rozmiaru wiadomości

Maksymalny rozmiar całego ciągu znaków AgentMessage wynosi 250 KB. Część tekstowa wiadomości ma własny limit 3072 znaków.

Maksymalny rozmiar pliku, który można wysłać za pomocą RBM, to 100 MB. Więcej informacji znajdziesz w artykule Pliki multimedialne i PDF.

Tekst

Najprostsze wiadomości składają się z tekstu. Wiadomości tekstowe najlepiej nadają się do przekazywania informacji bez potrzeby używania elementów wizualnych, złożonych interakcji czy odpowiedzi.

Przykład

Poniższy kod wysyła wiadomość w formacie zwykłego tekstu. Opcje formatowania i wartości znajdziesz w sekcji 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);
});
Ten kod to fragment przykładowego agenta RBM.

Java

import com.google.rbm.RbmApiHelper;


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

   // Send simple text message to user
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444"
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ten kod to fragment przykładowego agenta RBM.

Python

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

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

# Send text message to the device
messages.MessageCluster().append_message(message_text).send_to_msisdn('+12223334444')
Ten kod to fragment przykładowego agenta RBM.

C#

using RCSBusinessMessaging;


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

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
);
Ten kod to fragment przykładowego agenta RBM.

Treść wiadomości podstawowej – konwersja SMS-ów

Operatorzy wprowadzili modele rozliczeń, aby wspierać przejście z SMS-ów na RBM. Wiadomość RBM zawierająca maksymalnie 160 znaków UTF-8 jest nazywana wiadomością podstawową.

Podczas tworzenia prośby o wysłanie wiadomości podstawowej pamiętaj, że znaki są liczone jako 1 bajt (UTF-8). Jeśli wyślesz wiadomość zawierającą znaki specjalne, takie jak emoji lub wielobajtowy zestaw znaków, każdy znak będzie liczyć się jako 2–4 znaki UTF-8 lub więcej.

Wpisz tekst w polu, aby sprawdzić jego długość:

Klienci RCS mogą implementować podgląd linków. Jeśli wiadomość RBM zawierająca tylko tekst zawiera adres URL witryny z tagami Open Graph, może się wyświetlić obraz podglądu, który sprawia wrażenie bogatszej treści.

Pamiętaj, że klient RCS może umożliwiać użytkownikowi wyłączenie podglądów linków.

Jednorazowe hasła do weryfikacji użytkowników

Za pomocą RBM możesz wysyłać jednorazowe hasła (OTP) do automatycznej weryfikacji użytkowników za pomocą interfejsu SMS Retriever API. Nie ma specjalnego interfejsu API do odczytywania haseł jednorazowych, które przychodzą przez RBM.

Jak to działa na Androidzie

W przypadku aplikacji na Androida zarejestrowanych w SMS Retriever API interfejs API nasłuchuje prawidłowo sformatowanej wiadomości RBM. Wiadomość musi zawierać zarówno kod OTP, jak i unikalny hash identyfikujący Twoją aplikację.

Gdy wiadomość RBM zostanie odebrana w prawidłowym formacie, interfejs SMS Retriever API przetworzy ją tak samo jak SMS z kodem OTP. Gdy hash zostanie dopasowany do Twojej aplikacji, kod OTP zostanie wyodrębniony i przekazany do aplikacji w celu automatycznej weryfikacji użytkownika.

  • Przykładowy SMS RBM do weryfikacji użytkownika: Your code is <OTP> <app hash>.
  • Przykład: Your code is 123456 M8tue43FGT.

Więcej informacji o interfejsie SMS Retriever i powiązanych interfejsach API znajdziesz w dokumentacji interfejsu SMS Retriever. Szczegółowe informacje o automatycznej weryfikacji użytkowników w aplikacjach zarejestrowanych w interfejsie API SMS Retriever znajdziesz na tym schemacie.

Jak to działa na iOS

W przypadku iOS wbudowana obsługa kodów OTP automatycznie wykrywa i sugeruje kody OTP RBM do automatycznego wypełniania, tak samo jak kody OTP SMS. Aby aplikacja na iOS mogła odczytać kod OTP, nie jest wymagana żadna specjalna integracja z interfejsem API.

Pliki multimedialne i PDF

Gdy wysyłasz wiadomość z obrazem, filmem, plikiem audio lub PDF, Twój agent musi podać publicznie dostępny adres URL treści lub bezpośrednio przesłać plik. W przypadku plików multimedialnych możesz też określić obraz miniatury, który umożliwia użytkownikom wyświetlenie podglądu treści przed kliknięciem. W przypadku plików audio jako symbol zastępczy używany jest domyślny widżet audio.

Platforma RBM buforuje pliki przez 60 dni, a interfejs API zwraca identyfikator pliku, który agent może uwzględnić w wiadomościach do użytkowników. Po 60 dniach RBM usuwa pliki z pamięci podręcznej.

Podczas określania plików za pomocą adresu URL sprawdzoną metodą jest ustawienie wartości contentMessage.forceRefresh na false. Ustawienie contentMessage.forceRefreshna true wymusza pobieranie przez RBM nowych treści z określonego adresu URL, nawet jeśli treść adresu URL jest zapisana w pamięci podręcznej, co wydłuża czas dostarczania wiadomości do użytkowników.

Zalecenia i limity dotyczące rozmiaru plików znajdziesz w tym artykule.

Przykład adresu URL pliku

Poniższy kod wysyła obraz. Opcje formatowania i wartości znajdziesz w sekcji 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);
});
Ten kod to fragment przykładowego agenta RBM.

Java

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


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

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

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

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

   rbmApiHelper.sendAgentMessage(agentMessage, "+12223334444");
} catch(Exception e) {
   e.printStackTrace();
}
Ten kod to fragment przykładowego agenta RBM.

Python

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

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

messages.MessageCluster().append_message(file_message).send_to_msisdn('+12223334444')
Ten kod to fragment przykładowego agenta RBM.

C#

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


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

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

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

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

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

rbmApiHelper.SendAgentMessage(agentMessage, "+12223334444");
Ten kod to fragment przykładowego agenta RBM.

Możesz też przesłać multimedia przed wysłaniem ich w wiadomości za pomocą files.create.

Przykład przesyłania plików

Poniższy kod przesyła plik wideo i plik miniatury, a następnie wysyła oba pliki w wiadomości. Opcje formatowania i wartości znajdziesz w sekcjach files.createAgentContentMessage.

cURL

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

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


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

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


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

Obsługiwane typy multimediów

RBM obsługuje te typy multimediów: W przypadku miniatur obsługiwane są tylko formaty image/jpeg, image/jpg, image/gif i image/png.

Typ nośnika Typ dokumentu Rozszerzenie Współpraca z kartami informacyjnymi
application/ogg Dźwięk OGG .ogx Nie
application/pdf PDF .pdf Nie
audio/aac Dźwięk AAC .aac Nie
audio/mp3 format dźwięku MP3 .mp3 Nie
audio/mpeg MPEG audio .mpeg Nie
audio/mpg MPG; .mp3 Nie
audio/mp4 MP4 audio .mp4 Nie
audio/mp4-latm MP4-latm audio .mp4 Nie
audio/3gpp Dźwięk 3GPP .3gp Nie
image/jpeg JPEG .jpeg, .jpg Tak
image/gif GIF .gif Tak
image/png PNG .png Tak
video/h263 Film H263 .h263 Tak
video/m4v Film M4V .m4v Tak
video/mp4 Film MP4 .mp4 Tak
video/mpeg4 Film MPEG-4 .mp4, .m4p Tak
video/mpeg Film MPEG .mpeg Tak
video/webm Film WEBM .webm Tak

Sugestie

Agent wysyła sugestie (sugerowane odpowiedzi i sugerowane działania) w listach z sugestiami (maksymalnie 11 sugestii) lub w kartach z elementami multimedialnymi (maksymalnie 4 sugestie).

Każda sugestia może mieć maksymalnie 25 znaków.

Sugerowane odpowiedzi

Sugerowane odpowiedzi prowadzą użytkowników przez rozmowy, ponieważ zawierają odpowiedzi, na które Twój agent wie, jak zareagować.

Gdy użytkownik kliknie sugerowaną odpowiedź, Twój agent otrzyma zdarzenie zawierające tekst odpowiedzi i dane zwrotne. Ładunek może mieć maksymalnie 2048 znaków.

Przykład

Poniższy kod wysyła tekst z 2 sugerowanymi odpowiedziami. Opcje formatowania i wartości znajdziesz w sekcji 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);
});
Ten kod to fragment przykładowego agenta RBM.

Java

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


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

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

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

   // Send simple text message to user
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ten kod to fragment przykładowego agenta RBM.

Python

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

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

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

# Send a simple message with suggestion chips to the device
cluster.send_to_msisdn('+12223334444')
Ten kod to fragment przykładowego agenta RBM.

C#

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


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

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

// Send simple text message with suggestions to user
rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
   suggestions
);
Ten kod to fragment przykładowego agenta RBM.

Sugerowane działania

Sugerowane działania prowadzą użytkowników przez rozmowy, wykorzystując wbudowane funkcje urządzeń. Agent może sugerować użytkownikom wybieranie numeru, otwieranie lokalizacji na mapie, udostępnianie lokalizacji, otwieranie adresu URL lub tworzenie wydarzenia w kalendarzu.

W przypadku każdej sugerowanej czynności możesz opcjonalnie podać adres URL rezerwowy (maksymalnie 2048 znaków). Ten URL otworzy się w nowym oknie przeglądarki, jeśli urządzenie użytkownika nie obsługuje sugerowanego działania.

Gdy użytkownik kliknie sugerowane działanie, Twój agent otrzyma zdarzenie zawierające dane zwrotne działania.

Opcje formatowania i wartości znajdziesz w sekcji SuggestedAction.

Wybierz numer

Działanie Wybierz numer telefonu prowadzi użytkownika do wybrania numeru telefonu określonego przez agenta. Numery telefonów mogą zawierać tylko cyfry (0-9), znak plusa (+), gwiazdkę (*) i znak numeru (#). Obsługiwany jest międzynarodowy format E.164 (np. +14155555555), ale nie jest on wymagany. Oznacza to, że prawidłowe są zarówno wpisy +14155555555, jak i 1011.

Przykład

Poniższy kod wysyła działanie wybierania numeru. Opcje formatowania i wartości znajdziesz w sekcji 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);
});
Ten kod to fragment przykładowego agenta RBM.

Java

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


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

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

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

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

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

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ten kod to fragment przykładowego agenta RBM.

Python

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

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

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

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

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Ten kod to fragment przykładowego agenta RBM.

C#

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


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

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

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

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

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

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Ten kod to fragment przykładowego agenta RBM.

Wyświetlanie lokalizacji

Działanie Wyświetl lokalizację wyświetla lokalizację w domyślnej aplikacji do map użytkownika. Lokalizację możesz określić za pomocą szerokości i długości geograficznej lub za pomocą zapytania opartego na bieżącej lokalizacji użytkownika. Możesz też ustawić niestandardową etykietę pinezki, która będzie wyświetlana w aplikacji Mapy.

Przykład

Poniższy kod wysyła działanie „Wyświetl lokalizację”. Opcje formatowania i wartości znajdziesz w sekcji 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);
});
Ten kod to fragment przykładowego agenta RBM.

Java

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


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

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

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

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

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

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ten kod to fragment przykładowego agenta RBM.

Python

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

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

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

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

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Ten kod to fragment przykładowego agenta RBM.

C#

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


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

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

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

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

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

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Ten kod to fragment przykładowego agenta RBM.

Udostępnianie lokalizacji

Działanie Udostępnij lokalizację umożliwia użytkownikowi udostępnienie lokalizacji agentowi. Użytkownik może udostępnić bieżącą lokalizację lub lokalizację wybraną ręcznie w aplikacji Mapy.

Przykład

Poniższy kod wysyła działanie udostępniania lokalizacji. Opcje formatowania i wartości znajdziesz w sekcji 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);
});
Ten kod to fragment przykładowego agenta RBM.

Java

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


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

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

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

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

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

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ten kod to fragment przykładowego agenta RBM.

Python

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

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

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

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

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Ten kod to fragment przykładowego agenta RBM.

C#

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


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

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

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

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

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

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Ten kod to fragment przykładowego agenta RBM.

Otwieranie adresu URL

Działanie Otwórz adres URL umożliwia kierowanie użytkowników na stronę internetową wskazaną przez agenta. Domyślnie strona internetowa otwiera się w przeglądarce użytkownika. Jeśli użytkownik ma skonfigurowaną domyślną aplikację dla strony internetowej, zostanie ona otwarta zamiast przeglądarki. W takim przypadku ikoną na przycisku sugerowanego działania będzie ikona aplikacji.

Działanie Otwórz adres URL obsługuje też zintegrowane komponenty WebView. Więcej informacji znajdziesz w sekcji Otwieranie adresu URL za pomocą komponentu WebView.

Przykład

Ten kod wysyła działanie otwierania adresu URL. Opcje formatowania i wartości znajdziesz w sekcji 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);
});
Ten kod to fragment przykładowego agenta RBM.

Java

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


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

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

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

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

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

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ten kod to fragment przykładowego agenta RBM.

Python

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

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

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

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

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Ten kod to fragment przykładowego agenta RBM.

C#

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


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

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

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

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

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

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Ten kod to fragment przykładowego agenta RBM.

Otwieranie adresu URL w widoku internetowym

Działanie Otwórz adres URL za pomocą widoku internetowego wczytuje określoną stronę internetową w aplikacji do obsługi wiadomości za pomocą silnika renderującego domyślnej przeglądarki. Dzięki temu użytkownik może wchodzić w interakcję ze stroną internetową bez opuszczania rozmowy w RBM. Jeśli urządzenie użytkownika nie obsługuje widoków internetowych, strona internetowa otworzy się w przeglądarce użytkownika. Aby włączyć widoki internetowe, zapoznaj się z tym artykułem: OpenURLApplication

Widoki internetowe mają 3 tryby wyświetlania. Opcje formatowania i wartości znajdziesz w sekcji WebviewViewMode.

  • Pełny: strona internetowa zajmuje cały ekran.
  • Połowa: strona internetowa zajmuje połowę ekranu.
  • Wysoki: strona internetowa zajmuje trzy czwarte ekranu.
Przykład

Poniższy kod wysyła działanie „Otwórz URL z widokiem WebView”. Opcje formatowania i wartości znajdziesz w sekcji 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;
    }

Tworzenie wydarzenia w kalendarzu

Działanie Utwórz wydarzenie w kalendarzu otwiera aplikację kalendarza użytkownika i rozpoczyna tworzenie nowego wydarzenia z określonymi informacjami.

Nazwa wydarzenia w kalendarzu jest wymagana. Może mieć maksymalnie 100 znaków. Opis wydarzenia w kalendarzu jest opcjonalny i może mieć maksymalnie 500 znaków.

Przykład

Poniższy kod wysyła działanie tworzenia wydarzenia w kalendarzu. Opcje formatowania i wartości znajdziesz w sekcji 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);
});
Ten kod to fragment przykładowego agenta RBM.

Java

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


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

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

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

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

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

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Ten kod to fragment przykładowego agenta RBM.

Python

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

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

]

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

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

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Ten kod to fragment przykładowego agenta RBM.

C#

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


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

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

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

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

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

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Ten kod to fragment przykładowego agenta RBM.

Lista elementów z sugestiami

Agent wysyła listy z sugestiami w wiadomościach, aby kierować dalszymi działaniami użytkowników. Lista elementów jest wyświetlana tylko wtedy, gdy powiązana wiadomość znajduje się u dołu rozmowy. Wszystkie kolejne wiadomości w rozmowie (od użytkownika lub agenta) zastępują listę elementów.

Elementy na liście to sugerowane odpowiedzi i sugerowane działania.

Listy z elementami zawierają maksymalnie 11 elementów z sugestiami, a etykieta każdego elementu może mieć maksymalnie 25 znaków.

Opcje formatowania i wartości znajdziesz w sekcji AgentContentMessage.

Karty informacyjne

Gdy chcesz wysłać pakiet powiązanych informacji, multimediów lub sugestii, użyj karty informacyjnej. Karty rozszerzone umożliwiają agentowi wysyłanie wielu jednostek informacji w jednej wiadomości.

Karty z elementami rozszerzonymi mogą zawierać te elementy:

  • obraz lub film,
  • Tekst tytułu
  • Tekst opisu
  • Sugerowane odpowiedzi i sugerowane działania (maksymalnie 4)

Karta z elementami rozszerzonymi może zawierać wszystkie wymienione elementy, ale aby była prawidłowa, musi zawierać co najmniej obraz, film lub tytuł. Karta z elementami rozszerzonymi może zawierać maksymalnie 4 sugerowane działaniasugerowane odpowiedzi.

Agent może wysłać kilka kart informacyjnych jednocześnie w karuzeli kart informacyjnych.

Maksymalny rozmiar ładunku karty z elementami multimedialnymi to 250 KB. Zapoznaj się ze sprawdzonymi metodami, aby poznać zalecenia i limity dotyczące rozmiaru plików multimedialnych.

Specyfikacje kart informacyjnych znajdziesz w sekcji Karty informacyjne.

Wysokość karty

Karty rozwijają się w pionie, aby dopasować się do zawartości. Karty z elementami rozszerzonymi mają minimalną wysokość 112 DP i maksymalną wysokość 344 DP. Jeśli zawartość karty nie jest wystarczająco duża, aby wypełnić minimalną wysokość karty, karta rozszerza się i wypełnia dodatkową wysokość białym miejscem.

Media w kartach z elementami multimedialnymi muszą mieć jedną z 3 wysokości:

  • Krótki: 112 DP
  • Średnia: 168 dp
  • Wysoki: 264 DP

Jeśli multimedia nie mieszczą się w wymiarach karty przy wybranej wysokości, podgląd multimediów jest wybierany przez powiększenie i przycięcie multimediów.

Przykład

Poniższy kod wysyła kartę informacyjną z obrazem i sugerowanymi odpowiedziami. Opcje formatowania i wartości znajdziesz w sekcji 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);
});
Ten kod to fragment przykładowego agenta RBM.

Java

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


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

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

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

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

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

   rbmApiHelper.sendStandaloneCard(standaloneCard, "+12223334444");
} catch(Exception e) {
   e.printStackTrace();
}
Ten kod to fragment przykładowego agenta RBM.

Python

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

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

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

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

# Append rich card and send to the user
cluster = messages.MessageCluster().append_message(rich_card)
cluster.send_to_msisdn('+12223334444')
Ten kod to fragment przykładowego agenta RBM.

C#

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


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

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

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

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

// Send rich card to user
rbmApiHelper.SendStandaloneCard(standaloneCard, "+12223334444");
Ten kod to fragment przykładowego agenta RBM.

Karuzela kart informacyjnych

Jeśli chcesz przedstawić użytkownikowi kilka opcji do wyboru, użyj karuzeli kart z elementami multimedialnymi. Karuzela łączy ze sobą wiele kart z elementami multimedialnymi, dzięki czemu użytkownicy mogą porównywać produkty i reagować na każdy z nich z osobna.

Karuzela może zawierać od 2 do 10 kart z elementami multimedialnymi. Karty z elementami rozszerzonymi w karuzelach muszą spełniać ogólne wymagania dotyczące treści i wysokości. Specyfikacje karuzeli znajdziesz w sekcji Karty z elementami rozszerzonymi.

Maksymalny rozmiar ładunku karuzeli kart rozszerzonych to 250 KB. Zapoznaj się ze sprawdzonymi metodami, aby poznać zalecenia i limity dotyczące rozmiaru plików multimedialnych.

Podobnie jak w przypadku kart z elementami rozszerzonymi, na to, jak karty będą wyświetlane użytkownikom, wpływa wiele czynników (np. rozdzielczość ekranu, gęstość pikseli i ustawienia użytkownika). W karuzeli jednak wysokość kilku pierwszych kart określa wysokość wszystkich kart w karuzeli, a wysokość karty wpływa na obcinanie tytułu, opisu i sugestii.

Jeśli urządzenie nie może wyświetlić wszystkich elementów karty z powodu ograniczeń wyświetlania lub wysokości karty, RBM obcina kartę, dopóki nie będzie można jej wyświetlić na urządzeniu, zgodnie z tą logiką:

  1. Skróć opis do jednego wiersza.
  2. Skróć tytuł do jednego wiersza.
  3. Pomiń sugestie, które nie mieszczą się na karcie, zaczynając od końca zdefiniowanej listy.
  4. Pomiń opis.
  5. Pomiń tytuł.

Aby uniknąć obcięcia, stosuj jak najkrótsze tytuły i opisy. W przypadku wysokich plików multimedialnych użyj tytułu i opisu lub jednej sugestii. W przypadku mediów średnich możesz użyć maksymalnie 2 sugestii. W przypadku krótkich treści możesz użyć maksymalnie 3 sugestii. Aby zmieścić 4 sugestie, nie umieszczaj w karcie multimediów.

Zadbaj o to, aby karty miały podobną wielkość i długość treści. W razie potrzeby umieść na początku karuzeli większe karty, aby uniknąć obcinania treści na kolejnych kartach.

Przykład

Poniższy kod wysyła karuzelę kart informacyjnych. Opcje formatowania i wartości znajdziesz w sekcji RichCard.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "richCard": {
      "carouselCard": {
        "cardWidth": "MEDIUM",
        "cardContents": [
          {
            "title": "Card #1",
            "description": "The description for card #1",
            "suggestions": [
              {
                "reply": {
                  "text": "Card #1",
                  "postbackData": "card_1"
                }
              }
            ],
            "media": {
              "height": "MEDIUM",
              "contentInfo": {
                "fileUrl": "https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg",
                "forceRefresh": false
              }
            }
          },
          {
            "title": "Card #2",
            "description": "The description for card #2",
            "suggestions": [
              {
                "reply": {
                  "text": "Card #2",
                  "postbackData": "card_2"
                }
              }
            ],
            "media": {
              "height": "MEDIUM",
              "contentInfo": {
                "fileUrl": "https://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg",
                "forceRefresh": false
              }
            }
          }
        ]
      }
    }
  }
}'

Node.js

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

// Images for the carousel cards
let card1Image = 'https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg';
let card2Image = 'https://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg';

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

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

// Send the device the carousel card defined above
rbmApiHelper.sendCarouselCard(params, function(response) {
   console.log(response);
});
Ten kod to fragment przykładowego agenta RBM.

Java

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


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

            List cardContents = new ArrayList();

            // Images for the carousel cards
            String card1Image = "https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg";

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

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

            // Images for the carousel cards
            String card2Image = "https://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg";

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

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

            // Send the carousel to the user
            rbmApiHelper.sendCarouselCards(cardContents, CardWidth.MEDIUM, "+12223334444");
        } catch(Exception e) {
            e.printStackTrace();
        }
Ten kod to fragment przykładowego agenta RBM.

Python

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

# Images for the carousel cards
card_image_1 = 'https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg';
card_image_2 = 'https://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg';

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

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

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

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

# Send the device the carousel card defined above
carousel_card = messages.CarouselCard('MEDIUM', card_contents)
cluster = messages.MessageCluster().append_message(carousel_card)
cluster.send_to_msisdn('+12223334444')
Ten kod to fragment przykładowego agenta RBM.

C#

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


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

// Image references to be used in the carousel cards
string card1Image = "https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg";
string card2Image = "https://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg";

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

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

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

// Send the carousel to the user
rbmApiHelper.SendCarouselCards(cardContents, CardWidth.MEDIUM, msisdn);
Ten kod to fragment przykładowego agenta RBM.