包含 S3 签名 URL 的 TwiML 在语音呼叫中出错



我正在尝试调用以下内容:

twilio api:core:calls:create 
--method GET 
--url https://xxxxxxxxx.execute-api.us-east-1.amazonaws.com/play?job=1589297170910&record=2&username=992b512f-130d-4da6-a9d3-a1a4227f82f5 
--to +19995551212 
--from +12345678901
SID                                 From          To            Status  Start Time
CA283a5deadbeefcafe0c89e861d  +12345678901  +19995551212  queued  null      

上面--url参数中的终结点返回 TwiML,响应如下:

HTTP/1.1 200 OK
Apigw-Requestid: M8x5Wgf9IAMEVmg=
Connection: keep-alive
Content-Length: 1154
Content-Type: text/xml
Date: Fri, 22 May 2020 20:04:12 GMT
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Play>https://s3.amazonaws.com/<my bucket name>/private/jobs/992b512f-130d-4da6-a9d3-a1a4227f82f5/1589297170910/2.mp3?AWSAccessKeyId=ASIA23STQFMZWXGL6GU2&Signature=3trMYp%2Fzc6ZV4FNRUc6%2B2Exen3k%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEPT%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJHMEUCIQDJyUkf%2FBrHEVBl2k3rKHpaAwyaObsObFqTxp53P%2FKghQIgHPH8Idf9cGZ4XR9zxbs%2FgbEuPmeOPO3%2FbNQQP%2F6LOf8q8QEITRAAGgw3NDY0MjU2OTA5MzEiDBK45eAIlYDHS04WHirOASI41mSxg6kEefiyQkZ969RopMhCFBdsXrUZWefUHrRqkFL209n%2BNLV0gKhAmyG8vvlRON74Zy3J05aIQ79%2BxFwYfKq9HLhvFskU%2B58Q8QmZlZtiPQ0KSGI2OuMceXaroRlVdfEBUJgMwR0EoXYGbf9XlXLgbK8%2BpLLtQ7MNAE4bTNE1%2FccQgq33s1wZfKyUKQGjeZkZEU2ISvDCvvUTsRgLMT9zM1thLszgm7eoaKv%2BdnfeFTKAEQDNaIFtGUwAihm5yaW6XphY8sUtccJoMLvgoPYFOuABojlUjGBEbxcXkk6nIMs6f1KYxc6USarhca13DgbrGnTdGG0CeD3KW9OByw2Cv6A7gyfAgAjSBzDyfC%2FScaYs6i4WdnZNO190d%2F3PoPMnL2kcxqRiWDo9lVXqGa03RekFKWgJGxxZ2nUXffBw9twDmZ%2BElVOZv2M2lhxOR8f06JbX3BtP0%2BE5RNxpRx0HUxeakZzrOcSqpS9OEESYB0E4UtOzrSqPJ0K7V%2B%2FhOldIoAyv%2Bdce1TZgrjgyMMjxemxQeKrtW7RSlXLh2S3SGtN7O2eg06h4YkoikzSWXsmfAOw%3D&Expires=1590782652</Play>
</Response>

上述元素中的 URL 是 MP3 文件的 Amazon S3 签名 URL。如果直接在浏览器中播放,它可以正常工作。它还为 MP3 文件设置了正确的 MIME 类型 —audio/mpeg

HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 19010
Content-Type: audio/mpeg
Date: Fri, 22 May 2020 20:08:52 GMT
ETag: "68e63d2845abc6ed528445ab22de68f6"
Last-Modified: Fri, 22 May 2020 19:32:48 GMT
Server: AmazonS3
x-amz-id-2: M/ic62y1nbUEn4PA1THXqx4rdEpKV70C8L6EifAlREOnf7CaG+frpICoaStqn9fr4T9saEJu9qk=
x-amz-request-id: 118DFC99C7EA2F66
[...binary data truncated...]

当我接到电话时,播放的消息是"很抱歉,发生了应用程序错误。我找不到更多的调试信息。

我在这里做错了什么?使用查询字符串或 urlencoding 字符串是否有问题?

我未能对我的TwiML<Play>内容进行XML编码。从&&amp;的简单字符串替换。

最新更新