我们正在使用Twilio的答录机检测留下语音留言(使用MP3)。我们在日志中看到来自API的正确呼叫(通过应答机回答,我们录制的消息的帖子)......没有错误。
但是这些人正在测试,只有1/4实际上正在接收语音邮件。其余的都没有收到语音邮件,即使日志显示正确的API调用...?这里发生了什么?
以下是调用twiml的代码。
if (Request.Form["AnsweredBy"] != null)
{
switch (Request.Form["AnsweredBy"])
{
case "machine_end_beep":
case "machine_end_silence":
case "machine_end_other":
SaveTwilioMessage(transaction.Campaign.Id.ToString());
//var machineResponse = new VoiceResponse();
if (!string.IsNullOrWhiteSpace(transaction.Campaign.VoicemailMessageUrl))
{
response.Play(transaction.Campaign.VoicemailMessageUrl);
}
else
{
response.Say(transaction.Campaign.VoicemailMessage, voice: _voice);
}
return new TwiMLResult(response);
case "human":
case "fax":
case "unknown":
default:
break;
}
这是产生这个的电话:
var call = await CallResource.CreateAsync(url: callbackUrl, to: new PhoneNumber(phoneNumber), from: new PhoneNumber(fromPhone),machineDetection: "DetectMessageEnd");
var result = new TelephonicResource(call.Sid);
return result;
有什么想法吗?
答案 0 :(得分:3)
Twilio开发者传道者在这里。
使用Twilio's answering machine detection时,您有两种检测机器的选项。您可以通过向REST API request to make a call提供MachineDetection
参数将应答机检测设置为开启。
MachineDetection
parameter can be either Enable
or DetectMessageEnd
。如果您想在应答机消息完成后留言,则需要使用DetectMessageEnd
。
然后,当您获得调用开始时的webhook回调时,您将获得一个额外参数AnsweredBy
,该machine_end_beep
为machine_end_beep
, machine_end_silence
, machine_end_other
, human
, fax
or unknown
。
如果您获得machine_end_silence
,machine_end_other
或MachineDetection=Enable
,那么您应该可以留下您的信息。对于其他结果,您可以像正常通话那样处理它们。
如果您只是使用{{1}},那么Twilio会在发现它是人或机器时尝试将您与结果联系起来。如果你想留言,我不会选择这个选项。
让我知道这是否有帮助。
答案 1 :(得分:2)
在这里回答我自己的问题。最后得到了Twilio的一些支持,推动了销售 - 票数保持开放和未工作数天。
基本上,如果您想成功启动AMD,您需要能够在150ms内做出响应。在我们的电话中,语音邮件正在启动,没有检测到声音,并说“我们很抱歉,但你不说话......那么我们的信息就会开始”。更正是通过改变编程实践,将我们的MP3移动到东海岸的某个地方(首选AWS),在我们的API调用中进行更少的数据库查找。
我们对此进行了调查......并发现虽然我们的API响应时间约为1秒,但AMD有时会在发出蜂鸣声后等待15秒以上才能播放该消息。还是很困惑。
答案 2 :(得分:1)
我们正在使用Twilio AMD来播放电话预约提醒,并且在留下语音邮件时遇到类似的困难。在对大约50个呼叫进行了测试后,我们看到AMD检测到机器_end_silence'在“哔哔”之前应该触发PLAY。因此,当您收听录制的呼叫时,PLAY正在与您的呼叫转发到自动语音留言服务的同时发生...请留言......"。所以API调用看起来都是正确的,但是用户没有收到语音邮件(因为播放消息wav文件在哔哔声之前结束)。
我们看到了AMD没有听到哔哔声的其他情况 - 而是在播放wav之前等待机器检测时间 - 在接收器语音邮件上留下了长时间的死风。即使在我的小型开发团队中,我们也看到了行为的差异例如,我们对一些iphone进行了测试呼叫,这些iphone都具有相同的默认语音邮件设置(在您没有记录自定义问候语时获得的设置)在同一个Verizon服务计划上。所以AMD应该听到完全相同的答案。然而,AMD会发现“哔哔”声。在我们的一些手机上,但不是全部。
鉴于所有这些挑战,我们发现留下更长的时间是个好主意。消息的版本(重复几次关键信息)。假设您的消息比machineDetectinTimeout长 - 您至少可以在语音邮件中保存一些消息。