Twilio应答机检测不留信息

时间:2017-05-30 17:13:46

标签: twilio twilio-api

我们正在使用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;

有什么想法吗?

3 个答案:

答案 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_beepmachine_end_beep, machine_end_silence, machine_end_other, human, fax or unknown

如果您获得machine_end_silencemachine_end_otherMachineDetection=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长 - 您至少可以在语音邮件中保存一些消息。