Twimlets语音邮件被切断

时间:2017-12-09 00:30:38

标签: c# twilio

我想使用Twilio提供语音留言。我也用文字来表示twimlets。这是代码

TwilioClient.Init(accountSid, authToken);
string responseurl = "http://twimlets.com/echo?Twiml=%3CResponse%3E%0A%3CSay%3EDear%20John%20Smith%3C%2FSay%3E%0A%3CSay%3E%0AThis%20is%20a%20test%20for%20happy%20programing%20IVR.%20Why%20this%20is%20so%20hard%3F%3F%0A%3C%2FSay%3E%0A%3CPlay%3E%0Ahttp%3A%2F%2Fwww.pacdv.com%2Fsounds%2Fpeople_sound_effects%2Fapplause-4.mp3%0A%3C%2FPlay%3E%0A%3CSay%3EGood%20Bye%3C%2FSay%3E%0A%3C%2FResponse%3E&";

var call = CallResource.Create(to,from,url: new Uri(responseurl));




<Response>
<Say>Dear John Smith</Say>
<Say>
This is a test for happy programing IVR. Why this is so hard??
</Say>
<Play>
http://www.pacdv.com/sounds/people_sound_effects/applause-4.mp3
</Play>
<Say>Good Bye</Say>
</Response>

问题是,当我接听电话时,我会听到所有语音信箱的播放。当它进入语音邮件时,它将切断前7秒的录音。 谁知道如何解决这个问题? 感谢

1 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

问题在于,当您的语音信箱接听电话时,它会通过阅读自己的信息开始。与此同时,Twilio也正在阅读该消息,因此当语音邮件开始录制时,消息已经过了一半。

有两种方法可以解决这个问题。您可以在消息中构建一个循环,以确保记录所有内容。或者,您可以使用Twilio's Answer Machine Detection仅在确定人员或机器已应答时才启动该消息。

要使用AMD,您需要在创建呼叫时传递另一个参数:

var call = CallResource.Create(
  to, from,
  url: new Uri(responseurl)
  machineDetection: "DetectMessageEnd"
);

machineDetection可以是“Enable”或“DetectMessageEnd”。一旦Twilio知道它是人还是机器,“启用”将立即调用您的webhook URL,“DetectMessageEnd”将等待它,如果它是一台机器,直到语音邮件的消息结束,允许您播放您的消息并完全记录它。 / p>

当Twilio请求您的webhook网址时,它还会有一个额外的参数AnsweredBy。您可以根据人或机器的回答来决定采用哪种方法。

让我知道这是否有帮助。