即使未配置StatusCallback URL,SIP也会在呼叫结束时调用POSTing StatusCallback



当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帖子。

希望能有所帮助。

最新更新