Twilio:循环消息并在拨号之前等待人类互动

时间:2019-03-20 10:49:33

标签: twilio

我正在使用Twilio在两个人之间建立电话。 我使用Twilio C#API从我的电话号码中呼叫第一个人,并调用一个TwiML bin,其中会显示欢迎消息并拨打电话给第二个人。

var from = myNumber;
var to = firstPeson;
var templateUrl = $"{config.template_url}?Dial={secondPerson}&Welcome={welcome}";
CallResource.Create(new PhoneNumber(to), new PhoneNumber(from), url: new Uri(templateUrl), client: restClient);

和TwiML bin:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say>{{Welcome}}</Say>    
  <Dial>{{Dial}}</Dial>
  <Hangup/>
</Response>

问题是当第一个“人”是呼叫中心时。它没有听到TwiML bin欢迎消息。 我的猜测是,当有人到达电话之前,当呼叫到达呼叫中心调度队列时,就会执行TwiML bin。

所以,我的想法是循环欢迎消息,并使用Gather等待人类进行交互,然后再调用另一个垃圾箱进行拨号。

<?xml version="1.0" encoding="UTF-8"?>
<Response>
 <Gather numDigits="1" finishOnKey="#" timeout="60" action="https://handler.twilio.com/twiml/123456789123456?Dial={{Dial}}">
    <Say loop="0">{{Welcome}}</Say>    
  </Gather>
</Response>

这里的问题是

  • 按下键#时循环不会结束。使用loop =“ 10”,#不会中断循环。
  • 由于网址中的{{Dial}}会导致错误,因此我们无法将拨号号码作为操作方法的参数传递。

按下键#时是否可以中断循环? 如何在垃圾箱之间传递Dial参数?

谢谢

1 个答案:

答案 0 :(得分:1)

这里是Twilio开发人员的传播者。

numDigits="1"上设置<Gather>时,您实际上可以使用任何按钮来中断循环并触发操作。我建议删除finishOnKey="#",然后让用户按下任意按钮。