
シェア:
KarlはVonageのDeveloper Advocateで、RubyサーバSDKのメンテナンスとコミュニティの開発者エクスペリエンスの向上に注力しています。彼は学ぶこと、ものを作ること、知識を共有すること、そして一般的にウェブ技術に関連することが大好きです。
RCSビジネスメッセージングがVonage Messages APIに登場
所要時間:1 分
ご注意ください: この投稿は、Vonage Messages APIのRCS Business Messagingのベータリリースをお知らせするものです。RCSメッセージングは 一般公開 (GA)になりました。 詳細は リリースをご覧ください。
Vonage Messages APIメッセージAPIがRCS Businessメッセージングをサポートしました(ベータ版)。Messages APIをご存知でない場合、これはオムニチャネル・メッセージング用のREST APIです。これは、SMS、MMS、WhatsApp、Facebook Messenger、Viber、そして今回のRCSを介してメッセージを送受信するための標準化された使いやすいインターフェイスを提供します!
RCSという言葉を聞いたことがない人は、「RCSメッセージングとはいったい何なのか」と疑問に思うかもしれない!
RCSメッセージングとは?
RCS(リッチ・コミュニケーション・サービス)とは、携帯電話ネットワークに接続されたデバイスに、あるいはデバイス間でメッセージを送信するための通信プロトコルである。RCSメッセージには、テキストだけでなく、写真、ビデオ、ファイルなどを含めることができる。
MMSメッセージングに似ていると思うかもしれない。まあ、そのようなものだが、いくつかの重要な違いがある:
MMSメッセージは携帯電話ネットワーク経由で配信できるのに対し、RCSメッセージはインターネットへの接続(携帯電話のデータ接続またはWi-Fi経由のいずれか)を必要とする。
また、RCSメッセージでは、画像、ビデオ、ファイルのファイルサイズをMMSよりも大きくすることができる。
RCSメッセージは、メディアを表示するための高度なメッセージタイプや、番号をダイヤルしたりマップアプリで場所を開いたりといった特定のアクションを実行するための返信候補のボタンをレンダリングするなど、MMSよりも双方向性を高めることができる。
多くの点で、RCSメッセージングは、WhatsApp、Facebook Messenger、ViberなどのアプリでおなじみのOTT(Over-The-Top)メッセージングに機能が近い。RCSの利点は、ユーザーが端末にサードパーティ製のアプリをインストールする必要がなく、携帯電話の内蔵メッセージングアプリでRCSメッセージングがネイティブにサポートされていることだ。
しかし、この利点には大きな注意点がある。
デバイスサポート
RCSメッセージングは現在、Android端末でのみサポートされている。最近の 最近のプレスリリースしかしアップルは、iOS 18の次期リリースでRCSをサポートすると発表した:
Appleデバイスを持っていない連絡先にメッセージを送る場合、メッセージアプリはRCSに対応し、SMSやMMSに比べてよりリッチなメディアと信頼性の高いグループメッセージングが可能になりました。
アップルがRCSをサポートする正確な詳細は現段階では不明で、サポートがRCSのビジネス・メッセージングを含むのか、それともピアツーピア・メッセージングのみなのかは明らかではない。
メッセージの種類
Messages APIで送受信できる様々なメッセージタイプを見て、VonageのRCS実装をもう少し掘り下げてみよう。
Vonage Messages APIのRCSチャネルは、GoogleのRBM(RCS Business Messaging)サーバを活用し、Google RBMを介して利用可能なさまざまなメッセージタイプをサポートしています。このチャネルは、アウトバウンド・メッセージング(ビジネスから顧客に送信されるメッセージ)とインバウンド・メッセージング(アウトバウンド・メッセージに応答して顧客からビジネスに送信されるメッセージ)の両方をサポートしています。この両方のカテゴリーの中に、多くの異なるタイプのメッセージが存在する。ここでは、いくつかのタイプの具体例を見ていく前に、それらを簡単にリストアップします。
送信メッセージの場合、Google RBM のメッセージ型のいくつかは、他の Messages API チャネルですでにおなじみの以下のような特定の型に抽象化されています。 text, image, videoそして file.また customメッセージタイプもあり、返信の提案、アクションの提案、リッチカード、カルーセルなど、より複雑なRBMメッセージをサポートしています。
インバウンドメッセージは、お客様の Vonage開発者ダッシュボード.RCSでは、複数のインバウンドメッセージタイプがあります。Webhookによって受信されるタイプは、顧客によって送信されたメッセージの内容、または顧客がビジネスによって送信されたメッセージとどのように相互作用するかに依存します。顧客がテキスト、ある種のメディア、または場所を送信すると、インバウンドメッセージのタイプは次のようになります。 text, image, video, audio, vcard, fileまたは location. 提案された返信または提案されたアクションメッセージと対話する顧客は、次のタイプの受信メッセージになります。 replyまたは button.
最後に、すべてのMessages APIチャネルと同様に、アウトバウンドRCSメッセージは、Webhook(再びVonage Developer Dashboardで設定)を介してメッセージステータスの更新を受け取ります。RCS メッセージの場合、これらのステータス更新には readステータスが含まれます。
これらのメッセージ・タイプのいくつかは、いくつかのコード例を見た方がイメージしやすいかもしれない!
コード例
アウトバウンドメッセージ
まず、いくつかのアウトバウンドメッセージを見てみましょう。 textメッセージを見てみましょう。
すべてのMessages APIチャネルと同様に、RCSメッセージを送信するには、適切なJSONペイロードを持つVonage Messages APIエンドポイントに POST適切な JSON ペイロードで Vonage Messages API エンドポイントにリクエストする必要があります。以下のようなJSONオブジェクト・プロパティがあります。 channel, message_type, toおよび fromなどの JSON オブジェクト・プロパティのいくつかは、チャネルやメッセージ・タイプに共通で、いくつかはチャネルやメッセージ・タイプに固有です。アウトバウンドのRCSテキストメッセージの場合、JSONは以下のような構造になる:
{
"to": "447900000000",
"from": "Vonage",
"channel": "rcs",
"message_type": "text",
"text": "Hello world!"
}この場合、受信者のメッセージアプリには以下のように表示される:
Screenshot of an RCS text message
のJSONは image, videoおよび fileメッセージのJSONは、オブジェクトに urlプロパティを持つオブジェクトを含める必要がある点以外は似ている。例えば、猫の写真を送信するJSONは次のようになります:
{
"to": "447900000000",
"from": "Vonage",
"channel": "rcs",
"message_type": "image",
"image": {
"url": "https://example.com/cat.jpg"
}
}というメッセージが受信者のメッセージアプリに表示されます:
Screenshot of an RCS image message
他のすべてのアウトバウンドRCSメッセージは customメッセージ・タイプがサポートされている。これらのメッセージには customオブジェクトが含まれる。この記事ではカバーしきれないほど多くのサブタイプや順列がありますが、1つの例として、2つの返信ボタンが提案されているメッセージがあります:
{
"to": "447900000000",
"from": "Vonage",
"channel": "rcs",
"message_type": "custom",
"custom": {
"contentMessage": {
"text": "What do you think of Vonage APIs?",
"suggestions": [
{
"reply": {
"text": "They're great!",
"postbackData": "suggestion_1"
}
},
{
"reply": {
"text": "They're awesome!",
"postbackData": "suggestion_2"
}
}
]
}
}
}と表示される:

別の例としては、URLを開くための行動提案メッセージがある:
{
"to": "447900000000",
"from": "Vonage",
"channel": "rcs",
"message_type": "custom",
"custom": {
"contentMessage": {
"text": "Check out our latest offers!",
"suggestions": [
{
"action": {
"text": "Open product page",
"postbackData": "postback_data_1234",
"openUrlAction": {
"url": "http://example.com/"
}
}
}
]
}
}
}その結果、次のようになる:
Screenshot of an RCS suggested action message
この2つのメッセージタイプの構造は異なりますが、どちらも replyと actionオブジェクトには postbackDataプロパティが含まれていることにお気づきでしょう。このプロパティの値は、提案された返信メッセージや提案されたアクションメッセージが受信者によって操作されたときにトリガされる受信メッセージのコンテキストに関係します。次は受信メッセージを見てみましょう。
インバウンドメッセージ
前述したように、インバウンドメッセージはウェブフック経由で受け取ります。インバウンドメッセージにはいくつかの種類があり、ここではそのすべてをカバーすることはできませんが、いくつかの例を紹介します。
アウトバウンド・メッセージと同様に、JSONペイロードのいくつかのフィールドは、すべてのチャネルとメッセージ・タイプで共通である。それは to, from, channelおよび message_typeフィールドは、上記のアウトバウンド・メッセージの例ですでに見たことがあるでしょう。これらに加えて、インバウンドメッセージにはいくつかの標準的なフィールドがあります; message_uuidメッセージの一意な識別子である timestampはインバウンド・メッセージが配信された日時を示します。これらの標準的なプロパティの他に、webhook のペイロードに含まれるものはメッセージの種類によって異なります。
などのタイプがある。 text, image, video, audio, vcard, fileそして locationには、お客様のデバイスから送信されたメッセージに基づくデータが含まれます。何らかのメディアやファイルが送信されるタイプの場合、ペイロードにはVonageのメディアサーバー上のファイルへのリンクが含まれます。例えば、画像メッセージのウェブフックのペイロードは以下のようになります:
{
"to": "Vonage",
"from": "447900000000",
"channel": "rcs",
"message_uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"timestamp": "2024-02-08T10:12:44Z",
"context_status": "none",
"message_type": "image",
"image": {
"name": "image.jpg",
"url": "https://api-eu.nexmo.com/v3/media/6882bbe2-fe14-4e2f-910f-652bbbb058d4"
}
}インバウンド replyと buttonメッセージはそれぞれ、顧客が提案された返信メッセージと提案されたアクションメッセージとやりとりした結果として送信されます。この記事の前半で、これらのタイプの送信メッセージの postbackDataプロパティに設定する値が重要になります。
提案された返答の例を見てみると、もし顧客が次のようなボタンを選択したとする。 They're awesome!受信 replyメッセージの値は postbackDataの値は idオブジェクトの replyオブジェクトの
{
"to": "Vonage",
"from": "447900000000",
"channel": "rcs",
"message_uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"timestamp": "2024-02-08T10:12:44Z",
"context_status": "none",
"message_type": "reply",
"reply": {
"id": "suggestion_2",
"title": "They're awesome!"
}
}インバウンド buttonメッセージも同様に postbackDataのプロパティとして設定される。 payloadオブジェクトの buttonオブジェクトのプロパティとして設定されます。A buttonメッセージは以下のようになります:
{
"to": "Vonage",
"from": "447900000000",
"channel": "rcs",
"message_uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"timestamp": "2024-02-08T10:12:44Z",
"context_status": "none",
"message_type": "button",
"button": {
"payload": "postback_data_1234",
"text": "Open product page"
}
}どちらの場合も、この postbackDataの値は、顧客が行ったアクションを特定するために使用できます。そして、全体的なメッセージフローの一部として、更なるアウトバウンドメッセージをトリガーするために、これを中心にロジックを構築することができる。
まとめ
この記事では、異なるタイプの個別のメッセージを送受信する例を見てきた。しかし、SMSやMMSのようなチャネルと比較して、RCSの潜在的なパワーは、多くの異なるトランザクションやマーケティングのユースケースに使用することができるリッチでインタラクティブなメッセージングフローを構築するために、これらの異なるメッセージタイプを組み合わせることにある。
RCSは、WhatsApp、Facebook Messenger、Viberなどのメッセージングアプリが提供するような、魅力的なメッセージング体験の可能性を提供します。顧客の端末でRCSがネイティブにサポートされているということは、メッセージを受信するために特定のアプリをダウンロードする必要がないということであり、特定のメッセージング・アプリ・チャネルと比較して、RCSメッセージングの潜在的なリーチを大幅に拡大することになる。しかし、iOS 18でRCSがサポートされる予定である今、RCSを使い始め、貴社のメッセージング・システムに組み込む絶好の機会です。
RCSに興奮し、もっと学びたいと思ったら、私たちの 開発者向けドキュメント.Messages APIが提供する他のすべてのチャンネルをチェックしたり、他の多くのコミュニケーションAPIを探索することができます。
また、以下のSlackにもぜひご参加ください。 Vonage Developer Slackに投稿してください。 Xに投稿してください!


