使用<dial> </dial>时,在TwiML中使用IfMachine

时间:2014-07-08 21:08:22

标签: twilio

有没有办法将Dial动词与IfMachine参数结合使用?我在拨号动词页面(https://www.twilio.com/docs/api/twiml/dial)上看不到任何内容,表明可以使用IfMachine参数,或者是否将其传递给生成的Action参数。

我发现了这篇帖子Detecting if an answering service picks up,答案是&#34;将IfMachine参数放在你的TwiML&#34;中,但我没有看到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参数。

1 个答案:

答案 0 :(得分:5)

Twiml不支持(AMD)ifMachine参数。我已经联系过Twilio关于这个问题,下面是回复。

  

嗨Sisir,

     

感谢您的提问。不,AMD不支持TwiML,只有   API。这意味着IfMachine和AnsweredBy仅对有效   由REST API发起的调用。

     

当我们发布AMD时,这是一个故意排除。机器的方式   检测工作是它听取应答方一秒钟   在连接呼叫之前。然后,如果它听到声音的音频模式   就像人类一样,它可以让呼叫连接起来。

     

调用的问题是通常有用户打开   已经在等待被叫方接听的线路。所以,如果   机器检测“吃”呼叫的第一秒,该人   已经在电话上没有听到被叫方说“你好”。这个   引起一些尴尬的沉默。

     

最诚挚的问候,

     

Twilio客户支持

因此,如果您想使用AMD功能,必须使用REST API