我向Facebook发送带有图片文件URL的结构化消息(该文件位于Amazon S3中)。消息的结构符合https://developers.facebook.com/docs/messenger-platform/send-api-reference/generic-template(通用模板)。
邮件正在接收并显示正常 - 但图片未出现在移动iOS Messenger应用程序中(我没有测试Android)。它出现在Messenger的网络版本中。
任何人都知道是什么原因造成的?
提前致谢!
答案 0 :(得分:1)
如果图片的网址中没有子域,则会在iOS Messenger应用中发生这种情况。
就我而言,我从https://example.com/image.jpg改变 到https://mysub.example.com/image.jpg,问题就解决了。
答案 1 :(得分:0)
我认为结构化消息模板目前无法在iOS上运行。 (至少不适合我)
答案 2 :(得分:0)
我在移动应用程序上遇到了相同的图像加载问题。我发现有问题的图像文件名中有空格。尝试用' - '替换空格。或者' _'并检查。
答案 3 :(得分:0)
这是因为Facebook通过URL缓存图像。假设您尝试在通用模板中的网址http://example.org/image.png
处发送图片。
当您调用Send API时,FB会尝试从http://example.org/image.png
加载图像。当您将来发送相同的图像时,FB使用其缓存版本而不是从端点重新加载它。如果此端点无法在第一次发送时正确提供图像,则FB将继续缓存/渲染空白图像。
我遇到了这个并通过执行以下操作来修复它:
确保可以在http://example.org/image.png
在调用FB API时为image_url添加URL参数。使用http://example.org/image.png?time=1524606955198
希望您的图片开始显示。
答案 4 :(得分:-1)
好的,所以这是交易:
URL是指Amazon S3存储桶(就像我在问题中所说的那样)。事实证明,Facebook服务器无法验证S3存储桶的SSL证书。我不知道为什么它在网络版上有效,但这就是Facebook支持的说法。
无论如何,在线搜索后,我发现如果存储桶名称中有点(“。”),则S3存储桶的URL可能会导致SSL证书出现问题(请参阅http://shlomoswidler.com/2009/08/amazon-s3-gotcha-using-virtual-host.html)。而且我确实用点名称。
我改名为水桶,一切都很好。所以请记住:不要用像my.new.bucket这样的东西命名你的S3桶。
Yariv。