我使用Twilio拨打电话,在此期间用户可以按键进行回复。我的问题是我想处理4种情况:
1)用户回答,然后按1
2)用户回答并按除1以外的另一个键
3)用户回答并按无键
4)用户不回答
对于情况1、2和3,一切正常: 我在XML中有一个“收集”,带有一个“操作” URL,一个超时和一个actionOnEmptyResult =“ true”
对于管理案例4,我使用statusCallback网址和'statusCallbackEvent'=> ['answered','completed']
我在日志中注意到的是,在情况3(用户接听但不按任何键)和情况4(用户不接听电话)下,我收到的数据完全相同。 也许这是由于以下事实造成的:该呼叫在语音箱中掉了几个“铃”之后,欺骗了Twilio,后者认为这是“应答”事件。
在我的日志中,我看到(情况3或4)这3个事件:
呼叫我的状态使用CallStatus =进行中的回调
使用msg = Gather End和Digits =“”
调用我的状态使用CallStatus =已完成回调
所以我的问题是:我怎么知道“接听电话并且什么都不打”和“不接听电话”之间的区别?
编辑:如果我拒绝通话,结果是一样的。因此,我会收到相同的“ hook”和statusCallback呼叫,如果用户接听但不回答,他不接听或拒绝呼叫,则使用相同的数据...
答案 0 :(得分:0)
这里是Twilio开发人员的传播者。
您可能希望对“不接听电话”的处理略有不同。如果用户不回答,您的操作URL仍会被调用,但是发送到网络挂钩的parameter CallStatus
将是no-answer
。在这种情况下,您可以<Hangup/>
呼叫并将其标记为未接。
还有另一个问题。如果通过语音邮件应答了呼叫,则您的呼叫将尝试正常继续。您可以将其作为已接听但未输入任何内容的电话,也可以尝试使用Twilio's answer machine detection检测是人还是机接听了电话。如果是人工操作,您可以照常继续操作,但是如果机器应答,您也可以将其标记为未应答,并<Hangup/>
进行呼叫。
让我知道这是否有帮助。