如何使用Twilio AMD留下语音信箱? [英] How to leave a voicemail using Twilio AMD?

查看:41
本文介绍了如何使用Twilio AMD留下语音信箱?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定发出传出呼叫的客户端代码,如下所示:

var accountSid = configuration["accountSid"];
        var authToken = configuration["authToken"];

        TwilioClient.Init(accountSid, authToken);

        var call = CallResource.Create(
            machineDetection: "DetectMessageEnd",
            asyncAmd: "true",
            asyncAmdStatusCallback: new Uri("[URL]/callback/index"),
            asyncAmdStatusCallbackMethod: HttpMethod.Post,
            twiml: new Twilio.Types.Twiml("<Response><Say>Ahoy there!</Say></Response>"),
            from: new Twilio.Types.PhoneNumber(configuration["fromPhoneNumber"]),
            to: new Twilio.Types.PhoneNumber(configuration["toPhoneNumber"])
        );

又名,启用了asyncAmd并指定了回调URL,我的WebHook控制器操作如下所示:

[ApiController]
[Route("callback")]
public class CallbackController : TwilioController
{
    [HttpPost]
    [Route("index")]
    public IActionResult Index()
    {
        var response = new VoiceResponse();

        if (Request.Form.TryGetValue("AnsweredBy", out var answeredBy))
        {
            if (answeredBy != "human")
            {
                response.Say("this is the voice message");
            }
        }

        return Content(response.ToString(), "text/xml");
    }
}

为什么没有留下语音邮件?

注意:我在CallResource.Createb/c中包含了我要说的Twiml,我不希望在人工应答时通过回调来获取消息内容。

我只需要对AMD检测结果进行回调,然后留言。

我这样做有回应吗?你说呢?

谢谢!

推荐答案

Twilio Developer传教士此处。

Twilio应答机检测可以同步或异步模式进行。发件人this blog post

在Twilio上使用异步AMD时,AMD是异步执行的(由此得名)。当呼叫被应答时,呼叫url会立即执行,因此,如果有人应答呼叫而不是语音邮件,他们可以开始与您的应用程序交互,而不会有任何沉默。然后,AMD"异步地"或"并行地"处理呼叫音频,并确定是什么人应答了呼叫。AMD处理完成后,结果(AnsweredBy参数)将发送到第二个URL,即asyncAmdStatusCallback

标准AMD和异步AMD之间的一个关键区别是在收到AMD结果后如何修改调用。使用标准AMD,您有一个URL,结果将像任何其他出站API调用一样发送到此URL。当您的URL收到结果时,您可以检查AnsweredBy参数并使用TwiML相应地更新调用。使用异步AMD时,您的调用已经在执行TwiML,您需要通过API更新该调用

在您的情况下,您使用的是异步AMD,但您没有通过API更新调用。

您有两个选择。您可以选择使用同步AMD,然后可以像目前一样使用TwiML响应结果。

或者,您也可以继续使用异步AMD,但不使用TwiML响应WebHook,而是use the REST API to update the call with the new TwiML or with a new webhook URL

有一件事我也会留心。您的初始TwiML非常短,示例代码显示它发送<Response><Say>Ahoy there!</Say></Response>。该TwiML完全有可能在检测到应答机之前完成,并且由于它是用于该呼叫的唯一TwiML,因此该呼叫随后将被挂断。您可能需要考虑使用更长的消息或暂停,以便可以获得AMD结果。

这篇关于如何使用Twilio AMD留下语音信箱?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆