我们使用 TwiML 应用程序和使用 Javascript SDK 的拨号动词和带有 Twilio SDK 的 ASP.Net Core MVC 开发了出站调用机制。我们遇到了一个问题,我们发现 Dial 动词不支持应答机检测和语音留言丢失。我们正在采取不同的方法,我们将使用 Twilio REST API 来发起呼叫。它具有检测答录机并响应答录机检测结果的规定,例如修补代理或发送语音消息。此外,还有 2 种可能的配置和工作流程。
MachineDetection:Enable answers_by
的可能值是 machine_start、human、fax 或 unknown。1.1 如果值为 machine_start 那么我们不能发送语音消息,因为它没有等待“哔”之后可以发送语音消息。1.2 如果 value 是 human 那么我们可以调用一个 webhook 来将用户修补到当前调用中。1.3 如果值是传真,我们将不采取任何行动 [超出范围] 1.4 如果值未知,我们可能会修补用户采取行动。这可能是提高用户工作效率的决定性因素。更多以 Unknown 结尾的请求会降低期望的结果。
机器检测:DetectMessageEnd
answer_by 的可能值为 machine_end_beep、machine_end_silence、machine_end_other、human、fax 或 unknown。2.1 如果值为 machine_end_beep 那么我们可以使用 TwiML url 向被叫方发送语音消息。2.2 如果值为 machine_end_silence 那么我们可以使用 TwiML url 向被叫方发送语音消息。此类场景需要使用此默认操作进行处理,并随着时间的推移进行改进。2.3 如果值为 machine_end_other 那么我们可以使用 TwiML url 向被叫方发送语音消息。此类场景需要使用此默认操作进行处理,并随着时间的推移进行改进。2.4 如果 value 是 human ,那么我们可以调用一个 webhook 来将用户修补到当前调用中。2.5 如果值是传真,那么我们将不采取任何行动 [超出范围] 2.6 如果值未知,那么我们可能会修补用户采取行动。这可能是提高用户工作效率的决定性因素。更多以 Unknown 结尾的请求会降低期望的结果。
参考: https
: //www.twilio.com/docs/voice/answering-machine-detection
https://www.twilio.com/docs/voice/answering-machine-detection#webhook-parameters
基于上述工作流程,我们决定使用 MachineDetection:DetectMessageEnd 配置选项。我们确实对第 2.4 点有疑问。下面是一个场景,我们使用 MachineDetection:DetectMessageEnd 配置发出 API 请求来发起调用。被呼叫者选择了电话并介绍了自己。Twilio 已检测到一个人并将 answer_by 设置为 human。这触发了一个 webhood,将用户修补到当前呼叫。加入会议的用户很可能不知道另一端是谁,最终可能会问这是谁?这可能会惹恼被调用者并影响整体客户参与度。
这是我们的客户根据他的经验分享的场景。我想知道 Twilio 检测“answerd_by”的速度有多快?是否有一种机制可以允许在接听呼叫后播放被叫方的录音,以便用户知道谁在另一端。是 Twilio 可以提供的,还是我们需要使用录制功能来做到这一点?我知道 Twilio 有多种选项可以通过 Web API 调整 AMD 参数,但是,在项目开始之前我们可能没有足够的数据来调整它们。在生产中推出此功能后,我们可能会到达那里。
我们的客户还提到,有时,语音消息没有完全传递?Twilio 客户是否也观察到了这一点?如果是这样,确保不发生这种情况的最佳做法是什么?