Logo
Logo
CTRLK

共有コンポーネント

メッセージの送信

コミュニケーションに使用するメッセージの種類とチャネルを定義したら、 メッセージAPIメッセージの送信 を使ってリクエストを作成します。

使用するチャネルとメッセージの種類に応じて、送信リクエストにオプションを追加することを忘れないでください。

メッセージAPIリクエストの検証

メッセージAPIは、専用エンドポイントを使用したリクエストの検証をサポートします。このエンドポイントを使用すると、送信前にメッセージペイロードをテストして、各チャネルに必要な要件を満たしていることを確認できます。リクエストを事前に検証することで、潜在的な問題を早期に発見し、解決に関する詳細なフィードバックを受け取ることができます。 この機能は、各チャネルに特定の要件があるため、1つのリクエストで複数のチャネルを処理する場合に特に便利です。検証エンドポイントは、スタンドアロンAPIに対するメッセージの検証、各フェールオーバー手順に対する追加チェックの適用、不明なフィールドのフラグ設定など、より詳細なフィードバックを提供します。

検証エンドポイント [#validation-endpoint-validate-messages-api-request]

このエンドポイントを使用すると、メッセージAPIリクエストの詳細な検証を実行できます。これにより、メッセージペイロードがプラットフォームへの送信に有効かどうかに関するフィードバックが即座に得られるようになります。リクエストが有効な場合、エンドポイントは 200 OK を返します。問題がある場合は、修正が必要な内容に関する情報を含む 400 BAD REQUEST 応答を返します。

リクエストを検証するには、次の手順に従います:

  1. 検証エンドポイント (POST /resource-management/1/messages/validate) にメッセージペイロードを含む POST リクエストを送信します。
  2. メッセージが検証に合格すると、送信の準備ができたことを示す 200 OK 応答を受け取ります。
  3. 検証に失敗した場合は、エラーの詳細が記載された 400 BAD REQUEST 応答を受け取ります。

サンプルリクエスト

json
1{
2 "messages": [
3 {
4 "channel": "SMS",
5 "sender": "447491163443",
6 "destinations": [
7 {
8 "to": "111111111"
9 }
10 ],
11 "content": {
12 "body": {
13 "text": "May the Force be with you.",
14 "type": "TEXT"
15 }
16 }
17 }
18 ]
19}

エラー応答の例

json
1{
2 "description": "Request cannot be processed.",
3 "action": "Check the syntax, violations and adjust the request.",
4 "violations": [
5 {
6 "property": "messages[0].content.body",
7 "violation": "invalid value"
8 }
9 ]
10}

エンドポイント検証の追加機能

  • スタンドアロンAPIモデルの検証: メッセージが各スタンドアロンAPIによって設定された基準に準拠していることを確認します。
  • フェールオーバーチェック: 各フェールオーバー手順が正しく構成されていることを確認します。
  • 不明なフィールドの検出: リクエストの送信時に問題を引き起こす可能性のあるフィールドにフラグを立てます。
備考

検証エンドポイントはメッセージを送信しません。ペイロードの有効性のみをチェックします。

エンドポイント検証の技術的な詳細については、 APIのドキュメントをご参照ください。

adaptationMode (アダプテーションモード)

備考

メッセージAPIの デフォルト動作adaptationMode=true になりました。これは、明示的に無効化されない限り、APIが各チャネルでサポートされている形式に、本来サポートされていないメッセージの種類に適合するメッセージを自動的に適応させようとすることを意味します。

adaptationMode を有効にすると、APIはメッセージを送信できるように調整します。ただし、APIは適応可能なエレメントを類似のサポートされているエレメントに変換するため、メッセージの見た目が若干異なる場合があります。

メッセージAPIの adaptationMode パラメーターを使用すると、指定したチャネルがサポートしていないエレメントが含まれている場合でも、メッセージを送信および配信できます。

デフォルトでは、adaptationMode が有効になっており、APIは受信者チャネルの機能に合わせてメッセージを自動的に調整し、配信が成功するようにします。適応可能なメッセージエレメントは変換され、適応不可能なエレメントはスキップされます。

適応例

  • ヘッダーがチャネルでサポートされていない場合、APIはヘッダーと本文を1つのメッセージにマージし、ヘッダーを最初の行として書式設定し、続く本文のテキストを新しい行に移って書式設定します。
  • 画像がネイティブにサポートされていない場合、APIは代わりにテキストの一部としてURLを送信します (例えば、メッセージにプレーンテキストとして追加されます)。
  • ボタンがチャネルでネイティブにサポートされておらず、適応できない場合、そのボタンはスキップされます。

adaptationMode が無効 (false として設定) の場合、APIはメッセージを適応させません。チャネルがサポートしていないエレメントがメッセージに含まれている場合、そのメッセージは拒否され、エラーが返されます。

デフォルトの動作では、可能な限りメッセージが配信されます。ただし、メッセージの書式設定を正確に制御する必要があり、エレメントがサポートされていない場合にエラーを受け取りたい場合は、APIリクエストで adaptationModetrue から false に設定することで、この機能を無効にすることができます。

adaptationMode を有効にしたリクエストの例 (デフォルト動作)

json
1 
2{
3 "messages": [
4 {
5 "channel": "WHATSAPP",
6 "sender": "441234567890",
7 "destinations": [
8 {
9 "to": "440987654321"
10 }
11 ],
12 "content": {
13 "body": {
14 "text": "Thank you for joining us on Athleete Unlocked! Would you like to subscribe for future Athleete events?",
15 "type": "TEXT"
16 },
17 "buttons": [
18 {
19 "type": "REPLY",
20 "text": "Yes",
21 "postbackData": "true"
22 },
23 {
24 "type": "REPLY",
25 "text": "No",
26 "postbackData": "false"
27 }
28 ]
29 }
30 }
31 ]
32}

出力

unified-api-deliver-anyway-example

adaptationMode の無効化 [#disabling-adaptation-mode-adaptationmode]

APIでメッセージを適応させず、エレメントがサポートされていない時にエラーを受信するようにしたい場合は、APIリクエストで adaptationModefalse に明示的に設定する必要があります。

adaptationMode を無効にしたリクエストの例

json
1 
2{
3 "messages": [
4 {
5 "channel": "SMS",
6 "sender": "441234567890",
7 "destinations": [
8 {
9 "to": "440987654321"
10 }
11 ],
12 "content": {
13 "body": {
14 "text": "Here is a link to our latest updates!",
15 "type": "TEXT"
16 },
17 "buttons": [
18 {
19 "type": "OPEN_URL",
20 "text": "Visit",
21 "url": "https://example.com"
22 }
23 ]
24 },
25 "options": {
26 "adaptationMode": false // Explicitly disabling adaptation
27 }
28 }
29 ]
30}

この例では、チャネルがボタン (SMS など) をサポートしていない場合、APIはエラーを返します。

サポートされているメッセージの種類 [#supported-message-types-adaptationmode]

メッセージングチャネルテキスト画像ビデオドキュメントリッチリンク認証リクエストList (リスト)カルーセルテンプレート
Apple Messages for Business✅*
Instagram Direct🔄🔄🔄
LINE🔄🔄🔄
Messenger🔄
MMS🔄
RCS🔄✅*
SMS🔄🔄🔄
Viber Bots🔄
Viber Business Messages
Whatsapp🔄

説明

✅ : チャネルがエレメントをネイティブにサポートし、メッセージがそのまま配信されることを示します。

❌: エレメントがサポートされていないことを示し、エラーが返されます (adaptationMode はエレメントを適応させることができません)。

🔄 : チャネルがエレメントをネイティブにサポートしていないことを示しますが、adaptationMode はチャネルをよりシンプルでネイティブにサポートされている形式 (テキストや URL など) に変換できます (サポートされていないフィールドをスキップ/適応させる)。

*Apple Messages for Business テンプレートRCSテンプレート用のについては、テキストテンプレートのみがサポートされます。

備考

adaptationModetrue に設定すると、APIは様々なメッセージングチャネルの制限に合わせてメッセージを適応させようとし、チャネルがすべてのエレメントをサポートしていない場合でもメッセージが送信されるようにします。ただし、特定の厳密なチャネルルールや例外 (ボタンの制限や必須テキストなど) が適用される場合、adaptationMode はそれらをオーバーライドできず、エラーが返されます。

ボタン [#buttons-adaptationmode]

メッセージングチャネルtrueに設定したadaptationMode false に設定したadaptationMode
Apple Messages for Businessテキスト
ボタン (個別メッセージ)
テキスト
ボタン (個別メッセージ)
Instagram Directボタン付きテキストボタン付きテキスト
LINEボタン付きテキストボタン付きテキスト
Messengerボタン付きテキストボタン付きテキスト
MMSテキストエラー: ボタンはサポートされていません
RCSボタン付きテキストボタン付きテキスト
SMSテキストエラー: ボタンはサポートされていません
Viber Botsボタン付きテキストボタン付きテキスト
Viber Business Messagesボタン付きテキストボタン付きテキスト
WhatsAppボタン付きテキストボタン付きテキスト

画像 [#image-adaptationmode]

メッセージングチャネルtrueに設定したadaptationMode false に設定したadaptationMode
Apple Messages for Business画像
画像キャプション
画像
画像キャプション
Instagram Direct画像
画像キャプション
画像
画像キャプション
LINE画像キャプション
画像のURL
エラー:画像はサポートされていませんが、適応可能です
Messenger画像
画像キャプション
画像
画像キャプション
MMS画像
画像キャプション
画像
画像キャプション
RCS画像
画像キャプション
画像
画像キャプション
SMS画像キャプション
画像のURL
エラー:画像はサポートされていませんが、適応可能です
Viber Bots画像
画像キャプション
画像
画像キャプション
Viber Business Messages画像
画像キャプション
画像
画像キャプション
WhatsApp画像
画像キャプション
画像
画像キャプション

ヘッダー付き画像 [#image-with-header-adaptationmode]

メッセージングチャネルtrueに設定したadaptationMode false に設定したadaptationMode
Apple Messages for Businessメッセージヘッダー
画像
画像キャプション
メッセージヘッダー
画像
画像キャプション
Instagram Directメッセージヘッダー
画像
画像キャプション
メッセージヘッダー
画像
画像キャプション
LINEメッセージヘッダー
画像キャプション
画像のURL
エラー:画像はサポートされていませんが、適応可能です
Messengerメッセージヘッダー
画像
画像キャプション
メッセージヘッダー
画像
画像キャプション
MMSメッセージヘッダー
画像
画像キャプション
メッセージヘッダー
画像
画像キャプション
RCSメッセージヘッダー
画像
画像キャプション
メッセージヘッダー
画像
画像キャプション
SMSメッセージヘッダー
画像キャプション
画像のURL
エラー:画像はサポートされていませんが、適応可能です
Viber Botsメッセージヘッダー
画像
画像キャプション
エラー:メッセージヘッダーはサポートされていませんが、適応可能です
Viber Business Messagesメッセージヘッダー
画像
画像キャプション
エラー:メッセージヘッダーはサポートされていませんが、適応可能です
WhatsAppメッセージヘッダー
画像
画像キャプション
エラー:メッセージヘッダーはサポートされていませんが、適応可能です

ドキュメント [#document-adaptationmode]

メッセージングチャネルtrueに設定したadaptationMode false に設定したadaptationMode
Apple Messages for Businessドキュメント
ドキュメントのキャプション
エラー:ドキュメントのファイル名はサポートされていません
Instagram Directドキュメントのキャプション
ドキュメントの URL
エラー:ドキュメントはサポートされていませんが、適応可能です
LINEドキュメントのキャプション
ドキュメントの URL
エラー:ドキュメントはサポートされていませんが、適応可能です
Messengerドキュメントエラー:ドキュメントのキャプションはサポートされていません
エラー:ドキュメントのファイル名はサポートされていません
MMSドキュメント
ドキュメントのキャプション
エラー:ドキュメントのファイル名はサポートされていません
RCSドキュメントエラー:ドキュメントのキャプションはサポートされていません
エラー:ドキュメントのファイル名はサポートされていません
SMSドキュメントのキャプション
ドキュメントの URL
エラー:ドキュメントはサポートされていませんが、適応可能です
Viber Botsドキュメント (ファイル名付き)エラー:ドキュメントのキャプションはサポートされていません
Viber Business Messagesドキュメント (ファイル名付き)エラー:ドキュメントのキャプションはサポートされていません
WhatsAppドキュメント (ファイル名付き)
ドキュメントのキャプション
ドキュメント (ファイル名付き)
ドキュメントのキャプション

ビデオ [#video-adaptationmode]

メッセージングチャネルtrueに設定したadaptationMode false に設定したadaptationMode
Apple Messages for Businessビデオ
ビデオキャプション
エラー:画像プレビューはサポートされていません
Instagram Directビデオキャプション
ビデオのURL
エラー:ビデオはサポートされていませんが、適応可能です
LINEビデオキャプション
ビデオのURL
エラー:ビデオはサポートされていませんが、適応可能です
Messengerビデオエラー:ビデオキャプションはサポートされていません
エラー:画像プレビューはサポートされていません
MMSビデオ
ビデオキャプション
エラー:画像プレビューはサポートされていません
RCSビデオ(画像プレビュー付き)
ビデオキャプション
ビデオ(画像プレビュー付き)
ビデオキャプション
SMSビデオキャプション
ビデオのURL
エラー:ビデオはサポートされていませんが、適応可能です
Viber Botsビデオ(画像プレビュー付き)
ビデオキャプション
ビデオ(画像プレビュー付き)
ビデオキャプション
Viber Business Messagesビデオ(画像プレビュー付き)
ビデオキャプション
ビデオ(画像プレビュー付き)
ビデオキャプション
WhatsAppビデオ
ビデオキャプション
エラー:画像プレビューはサポートされていません

テンプレート [#templates-adaptationmode]

メッセージングチャネルtrueに設定したadaptationMode false に設定したadaptationMode
Apple Messages for Businessテンプレートテンプレート
Instagram Directサポートされていませんサポートされていません
LINEサポートされていませんサポートされていません
Messengerサポートされていませんサポートされていません
MMSサポートされていませんサポートされていません
RCSテンプレートテンプレート
SMSサポートされていませんサポートされていません
Viber Botsサポートされていませんサポートされていません
Viber Business Messagesサポートされていませんサポートされていません
WhatsAppテンプレートテンプレート

フェイルオーバー

常にメッセージを配信するためのユーザーフェールオーバーです。このオプションは、最初のオプションが失敗した場合に、他のチャネルでメッセージを配信します。

以下のことができます:

  • チャネル切り替えの自動化: メッセージAPIは、失敗したメッセージ配信のイベントでチャネルを自動的に変更します。
  • 有効期間の構成:各チャネルの10秒から48時間までの期間を定義します。有効期間が終了すると、チャネルが切り替わり、新しいチャネルの有効期間が開始されます。
  • フェールオーバーフローのカスタマイズ化: チャネルフェールオーバーの順序を定義して優先順位を付けます。

メッセージステータスレポート

ウェブフックオプションを使用して、message status reports (メッセージステータスレポート) を受信するURLを設定します。APIリクエストのdelivery reports (配信レポート) の場合は webhooks.delivery.url パラメーター、seen reports (既読レポート) の場合は webhooks.seen.url パラメーターの下にURLを定義します。なお、既読レポートは、すべてのチャネルでサポートされているわけではありませんので、ご注意ください。

json
1 
2{
3 "messages": [
4 {
5 "channel": "WHATSAPP",
6 "sender": "441234567890",
7 "destinations": [
8 {
9 "to": "440987654321"
10 }
11 ],
12 "content": {
13 "body": {
14 "text": "Thank you for your registration!",
15 "type": "TEXT"
16 }
17 },
18 "webhooks": {
19 "delivery": {
20 "url": "https://notifyme.delivery"
21 },
22 "seen": {
23 "url": "https://notifyme.seen"
24 }
25 }
26 }
27 ]
28}

APIを使用した配信レポートのフェッチ [#fetch-delivery-reports-message-status-reports]

また、ウェブフックURLの設定に加えて、専用のGETリクエストを使用して、オンデマンドで配信レポートを取得することもできます。これにより、必要に応じてレポート情報をアクティブに引き出すことができます。

配信レポートをフェッチするには、メッセージAPIGET /messages-api/1/reports エンドポイント を使用します。次のパラメーターを使用して結果をフィルター処理できます:

  • channel
  • messageID
  • entityID
  • applicationID
  • campaignReferenceID
  • bulkID

callbackData によるメッセージのトラッキング

callbackData パラメーターには、メッセージの識別、管理、または監視に使用される追加データを格納できます。メッセージAPIにカスタムデータを添付してトラッキングし、その追跡結果を既読レポートと配信レポートに反映できるため、メッセージの汎用性が高まります。

このパラメーターは、アウトバウンドメッセージとインバウンドメッセージの両方に関連付けることができます。

  • アウトバウンド (MT) メッセージ: メッセージの送信時に callbackData が指定されている場合、この値はメッセージに添付されます。
  • インバウンド (MO) メッセージ: インバウンドメッセージを処理するためのセットアップで callbackData が定義されている場合、この値が使用されます。

キャンペーン参照ID

キャンペーン参照ID は、メッセージレベルで各APIコール内の各コミュニケーションキャンペーンに割り当てることができるユーザー定義の識別子です。これを使うことにより、キャンペーン管理機能の強化、データインサイトの向上、キャンペーンのパフォーマンスを最適化するためのプロセスの効率化が可能になります。

  • 追跡と管理: コミュニケーションキャンペーンのパフォーマンスを効率的に追跡および管理します。各キャンペーンに一意のIDを割り当てることで、様々な成功指標に関する詳細なインサイトを得ることができます。
  • 集計された概要: 様々なチャネルでのパフォーマンスに関する集計データをまとめて表示します。
  • メトリクスAPIの統合: キャンペーン参照IDは メトリクス API に統合されています。この統合により、詳細な配信レポートにアクセスでき、キャンペーンのパフォーマンス関連のメトリクスの分析を簡素化できます。

URLのトラッキングと短縮

この機能を使用すると、URLを短縮し、クリック行動を監視して、エンゲージメントとメッセージの有効性を評価できます:

  • URLの短縮shortenUrl オプションを使用して、短くてクリーンな URLを作成します。
  • クリック数のトラッキングtrackClicksオプションを利用して、送信されたURLのクリック行動を監視します。
  • URLのカスタムトラッキング: 高度トラッキング用のカスタム trackingUrl を指定します。
  • プロトコルの削除removeProtocol オプションを使用して、URLからプロトコルを削除します。
  • カスタムドメイン: ブランド化された短縮URLには customDomain オプションを使用します。

URLのトラッキングと短縮機能の使用方法の詳細については、 メッセージAPIメッセージの送信について記載しているAPIドキュメントをご参照ください。

スケジュール設定

メッセージAPIのスケジュール設定機能を使用すると、チャネル内のメッセージの送信スケジュールの設定や送信の自動化ができるようになります。この機能は、コンテンツ、送信するタイミングやターゲットチャネルを指定することを可能にするため、コミュニケーションを効果的に管理しやすくします。例えば、この機能を使えば、エンゲージメントを最大化するために、最適なタイミングでプロモーションメッセージを送信するスケジュールを組めるようになります。

スケジュール設定シナリオ

  • 単一チャネル向けメッセージ: スケジュール設定によってメッセージ送信がトリガーされます。
  • フェールオーバー: スケジュールは、最初に一覧表示されたチャネルからメッセージを開始し、その後のフェールオーバーシナリオは、設定されたフェールオーバーと有効性のロジックに従います。