View a markdown version of this page

接收傳入 RCS 媒體 - AWS最終使用者傳訊簡訊

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

接收傳入 RCS 媒體

使用者可以在與客服人員的 RCS 對話中傳送媒體 (影像、影片、音訊檔案和文件)。當您設定傳入媒體儲存時,AWS最終使用者傳訊會從 RCS 供應商下載媒體、將其上傳至 Amazon S3 儲存貯體,並使用 S3 位置和檔案中繼資料將通知發佈到您的雙向 Amazon SNS 主題。

如需接收傳入 RCS 訊息 (文字、位置和建議回應) 的一般資訊,請參閱 接收傳入 RCS 訊息。如需傳送豐富媒體給使用者的資訊,請參閱 傳送豐富的 RCS 訊息

傳入媒體的運作方式

當使用者在 RCS 對話中傳送媒體檔案時,AWS最終使用者傳訊會透過下列步驟處理訊息:

  1. 使用者從 RCS 訊息應用程式傳送映像、影片、音訊檔案或文件。

  2. AWS最終使用者傳訊會從 RCS 提供者下載媒體。

  3. AWS最終使用者傳訊會使用您指定的 IAM 角色,將媒體上傳至您設定的 S3 儲存貯體。

  4. AWS最終使用者傳訊會將通知發佈到您的雙向 SNS 主題。通知包含 S3 儲存貯體、金鑰、MIME 類型和訊息中繼資料。

對於 LOCATIONSUGGESTION 訊息類型,不會發生 S3 上傳。內容會直接在 SNS 通知內文中交付。如需這些訊息類型的詳細資訊,請參閱 接收傳入 RCS 訊息

設定傳入媒體儲存

若要接收傳入媒體,請使用 UpdateRcsAgent API 在 RCS 代理程式上設定下列欄位。您必須先在代理程式上啟用雙向傳訊,才能設定媒體儲存。

傳入媒體組態欄位
欄位 必要 描述
TwoWayMediaS3BucketName AWS最終使用者傳訊存放傳入媒體檔案的 S3 儲存貯體名稱。
TwoWayMediaS3KeyPrefix S3 物件金鑰的選用字首。如果指定,媒體物件會存放在儲存貯體中的此字首下。
TwoWayMediaS3Role AWS最終使用者傳訊擔任的 IAM 角色 ARN,可將媒體檔案上傳至 S3 儲存貯體。

需要 S3 儲存貯體和 IAM 角色。如果您指定一個,則必須同時指定兩者。

S3 金鑰格式

媒體物件會以下列金鑰格式存放,其中原始檔案名稱會附加在#分隔符號之後:

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

例如,如果您將金鑰字首設定為 inbound-media,媒體檔案可能會儲存為:

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

為傳入媒體建立 IAM 角色

建立 IAM 角色,允許AWS最終使用者傳訊服務將媒體檔案上傳至 S3 儲存貯體。該角色需要信任政策,以允許服務擔任該角色,以及授予儲存貯體s3:PutObject存取權的許可政策。

信任政策

下列信任政策允許AWS最終使用者傳訊服務主體擔任該角色。將 取代123456789012為AWS您的帳戶 ID。

{ "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:GetObjects3: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 主題。通知是具有 messageBody 欄位的 JSON 物件,其中包含具有媒體狀態的字串化 JSON 文件,並在成功時包含 S3 位置和檔案中繼資料。

下列範例顯示成功的傳入媒體通知:

{ "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

傳入訊息的唯一識別符。

messageBody JSON 包含下列欄位:

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_FAILEDROLE_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/mpegaudio/mpgaudio/mp4audio/mp4-latmaudio/3gppaudio/oggapplication/ogg

  • 影片:video/h263video/m4vvideo/mp4video/mpegvideo/mpeg4video/webm

  • 文件: application/pdf

注意

AWS最終使用者傳訊不會對傳入媒體施加大小限制。

最佳實務

  • 如果您預期使用者在 RCS 對話中傳送映像、影片或檔案,請務必設定媒體儲存。

  • 使用專用 S3 儲存貯體處理 RCS 傳入媒體,以隔離存取控制和生命週期政策。

  • 將 S3 生命週期政策設定為使舊媒體物件 (例如 90 天後) 過期,以管理儲存成本。

  • 使用由 SNS 主題觸發的 AWSLambda 函數,以非同步方式處理傳入媒體。

  • s3:PutObject 僅將 IAM 角色範圍限定為 。此服務不需要更廣泛的許可。

  • 監控 CloudWatch 指標是否有媒體上傳失敗,並設定警示以偵測組態問題。