我最近遇到了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>
但是,这很棘手,我宁愿找出正确的做法。
谢谢!
答案 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>
我希望这会有所帮助。