当SIP呼叫结束时,最后一个被张贴到我的应用程序的请求会再次被张贴,略有修改,但Twilio文档指示的参数将包含在呼叫StatusCallback POST中。这有点奇怪,因为我没有配置StatusCallback URL!
所以。。。一个例子。环境(所有URL都是https):
- Twilio SIP端点:
test-myaccount.sip.twilio.com
- 语音URL(POST):
myapp.myserver.com/twilioapp
- 回退URL(GET):
s3.amazonaws.com/somebucket/twilioerror.xml
(无法想象这有什么关联,但我提到了它,以防它会让任何人产生奇怪的副作用) - 状态回调URL(POST):空白
呼叫流程:
1a。呼叫SIP端点-Twilio向TwiML应用服务器发送请求:
POST myapp.myserver.com/twilioapp
1b。TwiML应用程序回应:
<?xml version="1.0" encoding="UTF-8"?> <Response> <Say language="en-US" voice="alice">May the fourth be with you!</Say> <Redirect>myapp.myserver.com/twilioapp/secondstep?actualdate=20140503</Redirect> </Response>
2a。Twilio播放TTS语音,然后张贴回应用程序服务器(根据重定向动词):
POST myapp.myserver.com/twilioapp/secondstep?actualdate=20140503
2b。应用服务器响应:
<?xml version="1.0" encoding="UTF-8"?> <Response> <Say language="en-US" voice="alice">Whoops, wrong date. Goodbye!</Say> <Hangup /> </Response>
3a。这是我看到的可怕之处——Twilio随后发布了另一个请求:
POST myapp.myserver.com/twilioapp/secondstep/?actualdate=20140503
注意(a)POST是Twilio发布到的最后一个URL,(b)在querystring params之前,URL中添加了一个尾随斜杠。
与最终POST一起发送的参数:
AccountSid: <MyAccountSid>
Caller: sip:55512345678@169.0.0.0
CallStatus: completed
Duration: 1
Called: sip:test-myaccount.sip.twilio.com
To: sip:test-myaccount.sip.twilio.com
CallDuration: 22
CallSid: <TheCallSid>
From: sip:55512345678@169.0.0.0
Direction: inbound
ApiVersion: 2010-04-01
更奇怪的是:Duration和CallDuration都包含在POST参数中——Duration以(四舍五入)分钟为单位,CallDuration以秒为单位。
所以,我不知道发生了什么。我收到了一张支持票,但已经好几天没有回音了;我想,当我在等待Twilio代码探索者施展魔法时,我会在社区里打电话,看看是否有其他人也注意到了这种行为。
Twilo Evangelist在这里。
我刚刚与我们的一名客户支持团队成员进行了交谈,看起来我们有关于这种行为的问题报告。她应该很快联系你,给你一个更详细的更新。
如果我们确定了一个解决方案,我们将确保用这些细节更新这篇SO帖子。
希望能有所帮助。