我正在我的 ASP.NET Core 8 应用程序中将 Twilio WhatsApp 与 Twilio Conversation API 集成。我能够检索消息和媒体详细信息,但当我尝试使用生成的 URL 下载媒体时,出现以下错误:
<TwilioResponse>
<RestException>
<Code>20001</Code>
<Message>Invalid message sid: IMe6a9630de0df4c5c90f3b74a844a5d3c</Message>
<MoreInfo>https://www.twilio.com/docs/errors/20001</MoreInfo>
<Status>400</Status>
</RestException>
</TwilioResponse>
问题: 当我尝试从 Twilio 下载媒体时,错误消息表明 message.Sid 无效。我已验证我使用的是响应中提供的正确的 message.Sid 和 mediaSid,但我仍然无法检索媒体。 ** 我已采取的步骤:** 仔细检查 message.Sid 和 mediaSid 以确保它们正确。 确保我的 Twilio 帐户 SID 和身份验证令牌已正确设置以进行身份验证。 根据文档,在下载 URL 中使用媒体 SID。 问题: 谁能帮助解释为什么我收到 20001 错误,以及如何在 WhatsApp 集成中成功从 Twilio 的 API 下载媒体?
我在 Spring Boot / Kotlin 服务中遇到了这个问题。事实证明,我通过消息 ID 检索媒体时访问了错误的端点。
相反,我需要点击特定于对话的端点:
GET /Services/{Chat Service SID}/Media/{Media SID}
详细说明在这里:
https://www.twilio.com/docs/conversations/api/media-resource#retrieve-a-media-resource
正确连接后,我终于开始获取一些有用的信息,包括媒体资源本身的签名 URL。
{
"sid": "MEXXXXXXXXXXXXXXXXX",
"service_sid": "ISXXXXXXXXXXXXXXXXXXXXXXX",
"date_created": "2024-11-19T23:00:18.795324Z",
"date_upload_updated": "2024-11-19T23:00:18.799154Z",
"date_updated": "2024-11-19T23:00:18.795324Z",
"links": {
"content": "/v1/Services/ISXXXXXXXXXXXXXXXXXXXXXXX/Media/MEXXXXXXXXXXXXXXXXX/Content",
"content_direct_temporary": "https://media.us1.twilio.com/MEXXXXXXXXXXXXXXXXX?Expires=1732060217&Signature=blahblahblah"
},
"size": 55795,
"content_type": "image/jpeg",
"filename": "123_1.jpeg",
"author": null,
"category": "media",
"message_sid": "IMXXXXXXXXXXXXXXXXXXXXXX",
"channel_sid": "CHXXXXXXXXXXXXXXXXXXXXXXX",
"url": "/v1/Services/ISXXXXXXXXXXXXXXXXXXXXXXX/Media/MEXXXXXXXXXXXXXXXXX",
"is_multipart_upstream": false
}
Hopefully that's easily enough to set up in your .NET project.