0

我们正在处理从 Twilio 客户端 SDK [Javascript] 发起调用的要求。我们有一个 ASP.Net MVC Core 应用程序处理来自 Twilio Twiml 应用程序的传入 Webhook 请求。为了从客户端发起呼叫,我们使用 Twiml 拨号动词并提供 from 和 to 号码。此外,我们的要求是在检测到应答机后立即发送语音消息。

由于我们使用了 Twiml 的 Dial 动词,我们无法通过检测应答机,因此无法发送语音消息。这是 Dial 动词的设计,因为它是一种有人值守的呼叫机制。浏览文档后,我发现 REST API 允许检测和应答机,还允许发送语音消息。Twilio REST API 应用于无人值守的呼叫发起和基于规则的工作流。Twiml Dial 动词使用 VoiceResponse 类来发起呼叫,而 Twilio REST API 使用 CallResource 来发起呼叫。在开始研究可能的替代方案之前,我想确认我的理解。

我们正在考虑通过以下步骤实现上述用例

进行 Twilio REST API 调用以在启用应答机检测选项的情况下发起无人值守电话呼叫。如果 API 以human 或 unknown 的 answers_by 值响应,那么我们将调用一个 webhook,该 webhook 将使用 Twiml Dial 动词修补调用。如果 API 以作为机器的应答值作为响应,则它应使用 Twiml,其中包含可以发送给被叫方的语音消息。

4

2 回答 2

0

以上是正确的。但是,有一个具体的问题吗?

Twilio 的答录机检测功能现已普遍可用

https://www.twilio.com/blog/answering-machine-detection-generally-available

于 2019-10-17T11:13:17.533 回答
0

我们使用 TwiML 应用程序和使用 Javascript SDK 的拨号动词和带有 Twilio SDK 的 ASP.Net Core MVC 开发了出站调用机制。我们遇到了一个问题,我们发现 Dial 动词不支持应答机检测和语音留言丢失。我们正在采取不同的方法,我们将使用 Twilio REST API 来发起呼叫。它具有检测答录机并响应答录机检测结果的规定,例如修补代理或发送语音消息。此外,还有 2 种可能的配置和工作流程。

  1. MachineDetection:Enable answers_by 的可能值是 machine_start、human、fax 或 unknown。1.1 如果值为 machine_start 那么我们不能发送语音消息,因为它没有等待“哔”之后可以发送语音消息。1.2 如果 value 是 human 那么我们可以调用一个 webhook 来将用户修补到当前调用中。1.3 如果值是传真,我们将不采取任何行动 [超出范围] 1.4 如果值未知,我们可能会修补用户采取行动。这可能是提高用户工作效率的决定性因素。更多以 Unknown 结尾的请求会降低期望的结果。

  2. 机器检测: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 客户是否也观察到了这一点?如果是这样,确保不发生这种情况的最佳做法是什么?

于 2019-10-18T10:26:07.677 回答