0

我有这段代码可以发送带有 GIF 的彩信。(使用 Ruby 和 Sinatra,托管在 Heroku 上)。

client.messages.create(
  to: to,
  from: phone, 
  body: message,
  media_url: 'http://media.giphy.com/media/zl170rmVMCpEY/giphy.gif'
)

它失败了,Twilio 的调试控制台显示 12300 无效的内容类型错误。我确定我在这里遗漏了一些简单的东西,但我不知道是什么。

4

1 回答 1

1

您使用的 URL 会根据Accept请求的标头返回不同类型的内容。

在 Chrome 中,响应的“Content-Type”标头为“text/html”。.gif鉴于URL 上的后缀,这令人惊讶。

Chrome 接受标头如下所示:Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

但是,如果我使用curl -I http://media.giphy.com/media/zl170rmVMCpEY/giphy.gif我得到Content-Type: image/gif

如果您查看 HTML 页面上的图像 URL,在 Chrome 中,它实际上是:https ://i.giphy.com/zl170rmVMCpEY.webp

webp是 gif 的替代格式,如果浏览器支持它,我怀疑它会代替 gif 提供。

如果 Twilio 支持 webp 格式的图像,您可以改用它。

Gify 似乎也使用 mp4 格式,看起来他们品牌为 gif,但实际上并不向可以接受 HTML 或 WebP 内容的客户端提供 gif。

于 2017-05-22T20:31:42.003 回答