用户用手机结束通话时回拨循环

问题描述 投票:0回答:1

我有一个用 C# 编写的 MVP 应用程序。

在较高层面上,我的应用程序执行以下操作:

将用户的电话系统注册到他们的个人资料中,并作为 Twilio 中批准的 DID 呼叫者。

用户按下网站中的按钮,Twilio 呼叫用户,用户按下 1 后,Twilio 添加他们应该呼叫的目的地号码。 Twilio 对通话进行录音(是的,我们已同意)。

问题陈述:

在移动设备上,当我单击按钮发起呼叫时,Twilio 会正确地使移动设备响铃。用户可以接收并参与对目的地号码的呼叫。通话结束后,Twilio 用户可以挂断手机。在除 Twilio 之外的任何其他情况下,这都会结束通话。但在这种情况下,当 Twilio 用户挂断电话时,Twilio 会立即回拨 Twilio 用户,从而使用户陷入循环。就像尝试重新连接断开连接的用户一样。

期望的结果:

当 Twilio 用户挂断手机时,Twilio 通话应完全结束,而不是尝试重新连接。

我认为如何实现这一目标:

将此尾随逻辑添加到 CallStatusCallback Webhook。据我了解,这应该在通话状态发生变化时触发。

当 Twilio 发回 callStatus == 已完成时,然后发出挂断命令,如下所定义:

https://www.twilio.com/docs/voice/twiml/hangup

这是正确的语法/逻辑吗?

response.Hangup() 如何知道结束由 webhook 触发的呼叫?

[HttpPost("twilio-webhook-CallStatusCallback")]

公共 ActionResult CallStatusCallback()

{

var callStatus = Request.Form["CallStatus"];

if(callStatus ==“已完成”)

{

// 处理呼叫完成事件

var 响应 = new VoiceResponse();

response.Hangup();

返回TwiML(响应);

}

// 如果需要,处理其他呼叫状态

返回新的HttpStatusCodeResult(HttpStatusCode.OK);

}

我尝试添加 Webhook,但需要帮助检测正确的状态并向该特定呼叫发送 Hangup() 命令。

twilio twilio-api twilio-twiml
1个回答
0
投票

当某人断开连接时,Twilio 不会自动回电。您在代码中的某个位置指示 Twilio 执行此操作。也许是状态回调事件?请注意,您可以(并且通常会)需要有不同的回调 Webhook 端点或使用任意查询参数来跟踪调用状态,这就是“response.Hangup() 知道结束由 Webhook 触发的调用”的方式。换句话说,如果是初始调用,则 webhook 仅返回 twiml,或者向被调用者和调用者返回不同的 twiml。

要包含查询参数,请使用以下类型的格式: https://yourwebhookendpoint.com/action/twiml/hangup?callersrole=caller

当调用 yourwebhookendpoint.com 时,Twilio 将包含“callersrole=caller”。

© www.soinside.com 2019 - 2024. All rights reserved.