我正在尝试从具有以下结构的 TwiML 模板访问存储在 GCP 存储桶中的音频文件:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Play>https://storage.cloud.google.com/.../.../welcome.wav</Play>
</Response>
当我登录我的 GCP 帐户并尝试从浏览器访问此文件时,没有任何问题。但是,当 Twilio 尝试访问它时,会发生以下错误:
https://www.twilio.com/docs/api/errors/11750
此外,当我从命令行执行以下命令时:
curl -v https://storage.cloud.google.com/.../.../welcome_en.wav
我收到以下 HTTP 响应:
HTTP/2 302
content-type: application/binary
这似乎不是权限问题,因为当我尝试在没有 GCP 身份验证的情况下访问同一文件时,我收到 HTTP 403(禁止)错误。
如何从 Twilio 成功访问 GCP 存储桶中的此文件?
一种可能是您的内容类型错误。根据支持的音频文件类型页面,Twilio Play 兼容:
MIME type Description
audio/mpeg mpeg layer 3 audio
audio/wav wav format audio
audio/wave wav format audio
audio/x-wav wav format audio
audio/aiff audio interchange file format
audio/x-aifc audio interchange file format
audio/x-aiff audio interchange file format
audio/x-gsm GSM audio format
audio/gsm GSM audio format
audio/ulaw μ-law audio format
“应用程序/二进制文件”不在列表中。我播放 Blob 存储中的音频文件并指定 Blob 的内容类型。您能否为 GCP 存储桶中的 blob 指定内容类型?
您还应该检查 Twilio 控制台以查找“响应正文太大”的原因。可能是 GPC 返回登录页面或未经授权的错误,这导致 Twiml 太大而导致 Twilio 无法处理。 Twilio 控制台的错误日志中应该有错误,或者打开导致错误的调用并查看 Twiml。