Twilio:TwiML <hangup>动词未结束通话

时间:2018-07-11 13:15:45

标签: twilio twiml

我最近遇到了TwiML <Hangup>动词的问题。我有一个简单的设置,如下所示:

我有一个Twilio号码设置来接听来电,并配置为使用如下所示的TwiML bin:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Record timeout="5" transcribe="false" trim="trim-silence" maxLength="10"/>
    <Hangup/>
</Response>

目标是让号码接听来电,最多录制10秒钟的音频,调整静音,然后挂断电话。除了挂断,它可以正确地完成所有这些操作。

此刻,而不是挂断,而是在达到10秒的maxLength结束记录之后,开始新的记录。这一直持续到通话结束,通常会导致每个通话2-5次录音。好像<Hangup>动词被完全忽略了。这是我的意思的示例: Twilio Call Details Screen

我想知道以前是否有人遇到过这种情况(以及解决该问题的方法),或者在录音后如何正确挂断电话。我当前的解决方案是:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <!-- This is a hacky solution. I found by accident that passing an invalid action arguement causes the call to forcibly hangup (after the recording is completed) - hence the action "breakcall" below. = -->
    <Record timeout="5" transcribe="false" trim="trim-silence" 
            action="breakcall" maxLength="10"/>
</Response>

但是,这很棘手,我宁愿找出正确的做法。

谢谢!

1 个答案:

答案 0 :(得分:2)

您遇到此问题的原因是

  

<Record>之后出现的所有TwiML动词都是无法到达的。

在此处记录:(https://www.twilio.com/docs/voice/twiml/record)。

关于您的第一个代码段,没有action的代码段

  

如果未提供“操作”,则默认为请求当前文档的URL。

结果,您进入一个循环,这解释了为什么您最终获得多个录音。

如何解决:

创建另一个响应<Hangup/>的容器,并将第一个容器的action指向它。

第一个垃圾箱

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Record 
      action="[hangup_bin_url]" 
      timeout="5" 
      transcribe="false" 
      trim="trim-silence" 
      maxLength="10" 
    />
</Response>

第二个垃圾箱

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Hangup />
</Response>

我希望这会有所帮助。