View a markdown version of this page

インバウンド RCS メディアの受信 - AWSエンドユーザーメッセージング SMS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

インバウンド RCS メディアの受信

ユーザーは、エージェントとの RCS 会話でメディア (イメージ、ビデオ、オーディオファイル、ドキュメント) を送信できます。インバウンドメディアストレージを設定すると、AWSEnd User Messaging は RCS プロバイダーからメディアをダウンロードし、Amazon S3 バケットにアップロードし、S3 の場所とファイルメタデータを含む双方向 Amazon SNS トピックに通知を発行します。

インバウンド RCS メッセージ (テキスト、場所、提案応答) の受信に関する一般的な情報については、「」を参照してくださいインバウンド RCS メッセージの受信。リッチメディアをユーザーに送信する方法については、「」を参照してくださいリッチ RCS メッセージを送信する

インバウンドメディアの仕組み

ユーザーが RCS 会話でメディアファイルを送信すると、AWSEnd User Messaging は次の手順でメッセージを処理します。

  1. ユーザーは、RCS メッセージングアプリからイメージ、ビデオ、オーディオファイル、またはドキュメントを送信します。

  2. AWSエンドユーザーメッセージングは、RCS プロバイダーからメディアをダウンロードします。

  3. AWSエンドユーザーメッセージングは、指定した IAM ロールを使用して、設定された S3 バケットにメディアをアップロードします。

  4. AWSエンドユーザーメッセージングは、双方向 SNS トピックに通知を発行します。通知には、S3 バケット、キー、MIME タイプ、メッセージメタデータが含まれます。

LOCATION および SUGGESTION メッセージタイプでは、S3 アップロードは行われません。コンテンツは SNS 通知本文に直接配信されます。これらのメッセージタイプの詳細については、「」を参照してくださいインバウンド RCS メッセージの受信

インバウンドメディアストレージの設定

インバウンドメディアを受信するには、 UpdateRcsAgent API を使用して RCS エージェントで次のフィールドを設定します。メディアストレージを設定する前に、エージェントで双方向メッセージングを有効にする必要があります。

インバウンドメディア設定フィールド
フィールド 必要 説明
TwoWayMediaS3BucketName はい End User Messaging がインバウンドメディアファイルを保存する S3 AWSバケットの名前。
TwoWayMediaS3KeyPrefix いいえ S3 オブジェクトキーのオプションプレフィックス。指定した場合、メディアオブジェクトはこのプレフィックスの下にバケットに保存されます。
TwoWayMediaS3Role はい S3 バケットにメディアファイルをアップロードするためにAWSエンドユーザーメッセージングが引き受ける IAM ロールの ARN。

S3 バケットと IAM ロールは一緒に必要です。いずれかを指定する場合は、両方を指定する必要があります。

S3 キー形式

メディアオブジェクトは次のキー形式で保存されます。元のファイル名は#区切り文字の後に付加されます。

{prefix}/rcs/{messageId}#{fileName}

たとえば、キープレフィックスを に設定するとinbound-media、メディアファイルは次のように保存される場合があります。

inbound-media/rcs/msg-abc123def456#photo_2026.jpg

インバウンドメディアの IAM ロールの作成

AWSエンドユーザーメッセージングサービスがメディアファイルを S3 バケットにアップロードできるようにする IAM ロールを作成します。ロールには、サービスがロールを引き受けることを許可する信頼ポリシーと、バケットs3:PutObjectへのアクセスを許可するアクセス許可ポリシーが必要です。

信頼ポリシー

次の信頼ポリシーは、AWSエンドユーザーメッセージングサービスプリンシパルがロールを引き受けることを許可します。をAWSアカウント ID 123456789012に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }

アクセス許可ポリシー

次のアクセス許可ポリシーは、S3 バケットにオブジェクトを書き込むアクセス許可をロールに付与します。my-rcs-media-bucket をバケット名に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::my-rcs-media-bucket/*" } ] }
注記

IAM ロールの範囲を狭めますs3:PutObject。このサービスではs3:GetObject、インバウンドメディア配信に 、s3:DeleteObject、またはその他のアクセス許可は必要ありません。

メディアストレージの設定 (CLI)

次の AWSCLI コマンドは、既存の RCS エージェントにインバウンドメディアストレージを設定します。

aws pinpoint-sms-voice-v2 update-rcs-agent \ --rcs-agent-id rcs-agent-1234567890abcdef0 \ --two-way-media-s3-bucket-name my-rcs-media-bucket \ --two-way-media-s3-key-prefix "inbound-media" \ --two-way-media-s3-role arn:aws:iam::123456789012:role/RcsInboundMediaRole \ --region us-east-1

インバウンドメディア通知ペイロード

AWSエンドユーザーメッセージングは、メディアファイルを受信すると、双方向 SNS トピックに通知を発行します。通知は、メディアステータスと成功時に S3 の場所とファイルメタデータを含む文字列化された JSON ドキュメントを含むmessageBodyフィールドを持つ JSON オブジェクトです。

次の例は、正常なインバウンドメディア通知を示しています。

{ "originationNumber": "+14255551234", "destinationNumber": "rcs-cb1e6e519e9049fabf8c0ae38e4d876b", "messageBody": "{\"mediaStatus\":\"SUCCESS\",\"s3Bucket\":\"my-rcs-media-bucket\",\"s3Key\":\"inbound-media/rcs/msg-abc123def456#photo_2026.jpg\",\"mimeType\":\"image/jpeg\",\"fileName\":\"photo_2026.jpg\",\"fileSizeBytes\":1211843}", "inboundMessageId": "8821d750-4bc5-4cb1-a8c3-c3d64a38d019" }

最上位の通知には、次のフィールドが含まれます。

originationNumber

メディアを送信したユーザーの電話番号。

destinationNumber

メッセージを受け取った RCS エージェント識別子。

messageBody

メディアを記述する文字列化された JSON ドキュメント。次の表のフィールドが含まれています。

inboundMessageId

インバウンドメッセージの一意の識別子。

JSON messageBody には次のフィールドが含まれます。

mediaStatus

メディア処理の結果。有効な値は、SUCCESSUPLOAD_FAILEDROLE_ASSUME_FAILED です。

mediaStatusMessage

人間が読めるステータスの説明。mediaStatus が失敗値である場合に表示されます。

s3Bucket

メディアファイルが保存されている S3 バケットの名前。成功時に表示されます。

s3Key

保存されたメディアファイルの S3 オブジェクトキー。成功時に表示されます。

mimeType

メディアファイルの MIME image/jpegタイプ (例: 、video/mp4application/pdf)。

fileName

ユーザーのデバイスから提供された元のファイル名。

fileSizeBytes

メディアファイルのサイズをバイト単位で示します。

注記

インバウンドメディア通知には、現在メッセージタイプフィールドは含まれません。mediaStatus を使用して結果を決定します。

メディアダウンロードの失敗処理

AWSエンドユーザーメッセージングが RCS プロバイダーからメディアをダウンロードまたは保存できない場合でも、サービスは双方向 SNS トピックに通知を発行します。messageBody には障害 mediaStatus (UPLOAD_FAILED または ROLE_ASSUME_FAILED) と原因mediaStatusMessageを説明する があり、S3 の場所フィールドはありません。

たとえば、IAM ロールの引き受けに失敗すると、次のmessageBody内容が生成されます。

{ "mediaStatus": "ROLE_ASSUME_FAILED", "mediaStatusMessage": "Media received but could not assume the configured IAM role", "mimeType": "image/heic", "fileName": "IMG_7115.heic", "fileSizeBytes": 1211843 }

メディアのダウンロードに失敗する一般的な原因は次のとおりです。

  • メディアは RCS プロバイダーから利用できなくなりました (期限切れや削除されたなど)。

  • IAM ロールには、指定された S3 バケットに書き込むアクセス許可がありません。

  • S3 バケットが存在しないか、想定とは異なるリージョンにあります。

配信の失敗をトラブルシューティングするには、IAM ロールの信頼ポリシーとアクセス許可ポリシーが正しく設定されていること、および S3 バケットが存在し、サービスからアクセスできることを確認します。メディアアップロードの失敗について、エージェントの CloudWatch メトリクスをモニタリングします。

受け入れられるメディアタイプ

AWSエンドユーザーメッセージングは、次のインバウンドメディア MIME タイプを受け入れます。

  • イメージ: image/jpegimage/jpgimage/gifimage/png

  • オーディオ: audio/aacaudio/mp3audio/mpeg、、audio/mpgaudio/mp4audio/mp4-latmaudio/3gppaudio/ogg、、 application/ogg

  • 動画: video/h263video/m4vvideo/mp4video/mpegvideo/mpeg4video/webm

  • ドキュメント: application/pdf

注記

AWSエンドユーザーメッセージングは、インバウンドメディアにサイズ制限を課しません。

ベストプラクティス

  • ユーザーが RCS 会話でイメージ、ビデオ、またはファイルを送信することが予想される場合は、常にメディアストレージを設定します。

  • RCS インバウンドメディア専用の S3 バケットを使用して、アクセスコントロールとライフサイクルポリシーを分離します。

  • ストレージコストを管理するために、古いメディアオブジェクトを期限切れにする (90 日後など) ように S3 ライフサイクルポリシーを設定します。

  • SNS トピックによってトリガーされる AWSLambda 関数を使用して、インバウンドメディアを非同期的に処理します。

  • IAM ロールの範囲を s3:PutObjectのみに設定します。このサービスには、より広範なアクセス許可は必要ありません。

  • CloudWatch メトリクスでメディアアップロードの失敗をモニタリングし、アラームを設定して設定の問題を検出します。