【问题标题】:Twilio answering machine detection not leaving messageTwilio 应答机检测不留言
【发布时间】:2017-05-30 17:13:45
【问题描述】:

我们正在使用 Twilio 的答录机检测留下语音消息(使用 MP3)。我们在日志中看到对 API 的正确调用/来自 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;

有什么想法吗?

【问题讨论】:

  • 在机器本身开始录制之前播放的信息吗?
  • 我认为这是可能的,但这不是 Twilio 的 AMD 应该如何工作的。我不认为我有能力编写逻辑来听停止或哔哔声。我可以录制更长的消息,看看是否只剩下一部分?他们的服务处于测试阶段 - 所以我预计会出现一些问题,但不会像这样。

标签: twilio twilio-api


【解决方案1】:

这里是 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_silence, machine_end_other, human, fax or unknown

如果您收到machine_end_beepmachine_end_silencemachine_end_other,那么您应该可以留言。对于其他结果,您可以像处理正常呼叫一样处理它们。

如果您只使用MachineDetection=Enable,那么一旦 Twilio 确定是人还是机器,它就会尝试将您连接到带有结果的呼叫。如果你想留言,我不会选择这个选项。

让我知道这是否有帮助。

【讨论】:

  • 我认为我们正在按照文档中的规定执行此操作。我已经更新了我们上面的代码。
  • 这可能需要更深入的调查。我建议收集一些未留下语音邮件的呼叫 Sid 并将其发送,其余数据发送至Twilio support team
  • 实际上 - 我刚刚检查了日志。我看到一个带有“AnsweredBy”=“answering_machine_other”的对我们 API 的 POST 请求。我看到来自我们 API 的响应,其中包含有效的 TwiML,即正确语音邮件消息的播放动词。然后,我看到 Twilio 执行 GET 以检索所述消息,该消息似乎正在运行……但我呼叫的最终用户收到了 no 语音邮件。 Twilio 的 AMD 还没有准备好迎接黄金时段吗?
  • 我有一张支持票,已经有 5 天了。离岸团队回应了一些关于跟踪的基本要求。但从那以后,无线电静默了 5 天。
  • AMD 处于测试阶段,文档中明确指出:twilio.com/docs/api/rest/…。如果您将您的票号发送到 philnash@twilio.com,我会推动团队回复您并尝试诊断发生了什么。
【解决方案2】:

在这里回答我自己的问题。在通过销售推高之后终于得到了 Twilio 的一些支持 - 在票保持开放并且几天没有工作之后。

基本上,如果你想成功拉下 AMD,你需要能够在 150 毫秒内做出响应。在我们的通话中,语音邮件正在启动,没有检测到声音,并说“我们很抱歉,但你没有说话......然后我们的消息就会开始”。更正是通过改变编程实践,减少我们 API 调用中的数据库查找,并将我们的 MP3 移动到东海岸的某个地方(AWS 首选)。

我们对此进行了调查...发现虽然我们的 API 响应大约需要 1 秒,但 AMD 有时会在哔声后等待 15 秒以上才能播放消息。还是一头雾水。

【讨论】:

  • 只是跟进 - 从通话记录中 - 很明显 Twilio 没有有效地检测到机器的结束。在语音邮件已经检测到我们“不说话”后,它通常会向我们返回 API 调用 - 导致无法发送消息。看来我们必须等待未来的测试版更新才能宣布这是一场胜利。
【解决方案3】:

我们正在使用 Twilio AMD 广播电话预约提醒,并且在留下语音邮件消息时遇到类似的困难。在大约 50 次调用中对此进行了测试,我们看到 AMD 在应该触发 PLAY 的“哔”声之前检测到“machine_end_silence”的情况。因此,当您收听通话录音时,PLAY 与“您的通话已转接到自动语音消息服务...请留言...”同时发生。所以 API 调用看起来都正确,但用户没有收到语音邮件(因为播放消息 wav 文件在哔声之前结束)。

我们看到 AMD 没有听到哔哔声的其他情况 - 而是在播放 wav 之前等待 machineDetectionTimeout - 在接收器语音邮件上留下很长的死气间隙。即使在我的小型开发团队中,我们也看到了行为上的差异。例如,我们在同一个 Verizon 服务计划中对几部具有相同默认语音信箱设置(当您没有录制自定义问候时获得的设置)的 iPhone 进行了测试呼叫。所以 AMD 应该听到完全相同的答案。然而,AMD 会在我们的某些手机上检测到“哔”声,但不是全部。

鉴于所有这些挑战,我们发现留下“更长”版本的消息(重复几次关键信息)是个好主意。假设您的消息比 machineDetectinTimeout 长 - 您至少可以将一些消息保存在语音邮件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多