我已经使用whatsapp业务api在业务帐户和客户之间建立了双向通信。我很难理解文档中提到的向客户发送带有图像/媒体的短信的媒体提供商。
链接如下:https://developers.facebook.com/docs/whatsapp/api/settings/media-providers/
这些供应商是谁?他们是特定的组织吗?
我目前正在使用一些预签名的url方法将媒体文件存储在AWS S3中。我可以在whatsapp媒体消息中使用存储在S3中的媒体吗?。
举个例子会很有帮助。
根据Whatsapp API媒体消息文档,有两种方式可以发送图像出站消息:
- 通过其媒体ID发送图像
- 通过其URL发送图像
选择2,通过其URL发送时,如果您引用的图像URL无法直接访问,并且需要用户名/密码验证,甚至需要承载令牌,则有时您可能需要设置媒体提供商设置。(检查https://developers.facebook.com/docs/whatsapp/api/messages)。
按媒体ID发送图像
要通过ID发送,您需要首先使用POST /v1/media
端点上传图像文件。这将返回媒体ID(例如:456
(,您应该使用该ID在POST /v1/messages/
端点上组成消息对象,如下所示:
{
"to": "1234567",
"type": "image",
"recipient_type": "individual",
"image": {
"caption": "The image caption",
"id": "456"
}
}
通过URL发送图像
当通过URL发送时,您可以简单地在POST /v1/messages/
端点的链接字段上通知图像文件的URL(例如:http://yourcompany.com/images/your_image.png
(,如下所示:
{
"to": "1234567",
"type": "image",
"recipient_type": "individual",
"image": {
"caption": "The image caption",
"link": "http://yourcompany.com/images/your_image.png"
}
}
如果URLhttp://yourcompany.com/images/your_image.png
在服务器上的某些身份验证之后,该怎么办?(用户名/密码ou可能是一个承载令牌(。然后,您需要首先使用POST /v1/settings/application/media/providers
端点设置具有此类凭据的媒体提供商,如下所示:
[{
"name": "yourcompany-images",
"type": "www",
"config": {
"basic": {
"username": "the-username",
"password": "the-password"
}
}
}
]
一旦您在API上设置了此设置,您就可以通过POST /v1/messages/
端点上的名称引用此媒体提供商,如下所示:
{
"to": "1234567",
"type": "image",
"recipient_type": "individual",
"image": {
"caption": "The image caption",
"link": "http://yourcompany.com/images/your_image.png"
"provider": {
"name" : "yourcompany-images"
}
}
}
使用S3预签名URL作为图像链接
您必须考虑到,预签名的URL是临时链接,将在一段时间后过期。当你的Whatsapp API客户端一切正常,并且收件人立即收到消息时,它就可以工作了。但如果这个链出现问题,也许Whatsapp API稍后会再次尝试下载图像。因此,请记住这一点,并尝试创建具有长过期时间的预签名URL(可能是使用IAM用户的7天过期链接,如本文所述(。