有没有办法将Dial
动词与IfMachine
参数结合使用?我在拨号动词页面(https://www.twilio.com/docs/api/twiml/dial)上看不到任何内容,表明可以使用IfMachine
参数,或者是否将其传递给生成的Action参数。
我发现了这篇帖子Detecting if an answering service picks up,答案是"将IfMachine参数放在你的TwiML"中,但我没有看到IfMachine
参数的任何示例在TwiML中使用。我只看到过它与REST API一起使用的例子。
我试图让我的应用程序重定向呼叫,然后如果重定向呼叫被应答机接听,然后发送短信。理想情况下,传入呼叫TwiML看起来像:
<Response>
<Dial action="/sendSmsIfMachine.cshtml" method="POST" ifMachine="Continue">
555-5555
</Dial>
</Response>
然后我的sendSmsIfMachine页面会有:
@{
Response.ContentType = "text/xml";
if(Response["AnsweredBy"] == "machine")
{
var twimlResponse = new TwilioResponse();
twimlResponse.Message("You got a voicemail", new { to = "555-5556" });
Response.Write(twimlResponse.ToString();
}
}
当我尝试这个时,对sendSmsIfMachine.cshtml的结果请求根据Twilio日志没有包含AnsweredBy参数。
答案 0 :(得分:5)
否 Twiml不支持(AMD)ifMachine
参数。我已经联系过Twilio关于这个问题,下面是回复。
嗨Sisir,
感谢您的提问。不,AMD不支持TwiML,只有 API。这意味着IfMachine和AnsweredBy仅对有效 由REST API发起的调用。
当我们发布AMD时,这是一个故意排除。机器的方式 检测工作是它听取应答方一秒钟 在连接呼叫之前。然后,如果它听到声音的音频模式 就像人类一样,它可以让呼叫连接起来。
调用的问题是通常有用户打开 已经在等待被叫方接听的线路。所以,如果 机器检测“吃”呼叫的第一秒,该人 已经在电话上没有听到被叫方说“你好”。这个 引起一些尴尬的沉默。
最诚挚的问候,
Twilio客户支持
因此,如果您想使用AMD功能,必须使用REST API。