关于c#:从控制台客户端进行自定义内容出站语音呼叫

Making an custom content outbound voice call from console client

我想用twilio和c打个呼出电话。

我给出了(fromnumber、tonumber、twiliodemourl)作为初始化的3个参数。出站呼叫。然后使用默认的Twilio演示语音内容。

现在我需要自定义语音内容属性和其他一些属性每次触发Initiate Outbound调用方法时

我浏览过Twilio文档,但没有找到自定义每次发送请求时都使用C动态地从代码中获取内容。

我的客户机应用程序定期运行以验证是否有任何新消息,然后触发InitiateOutboundCall。

我没有任何自定义的URL来发布Voice在第三版中要查找的任何新XMLinitiateOutboundCall的参数。

那么,是否需要一个外部域URL来从代码动态自定义语音内容?如果没有,请提供选项/示例,我必须从C控制台应用程序中完成。

我试着用twimlets.com回送自定义文本在电话中讲话。对于文本更改,可以使用自定义文本。但我不确定twimlets.com/echo是否可以用于生产?请确认。Twimlets不支持我正在寻找的一些功能,比如收集输入。类似于用于出站呼叫的IVR消息。

使用Twilio Voice和C客户端:

  • 使用Twilio C客户端的语音请求?

    • 使用自定义语音内容()拨打号码。如果用户没有响应,请离开带有自定义语音内容()的语音邮件。
    • 使用自定义语音内容拨号()。如果用户响应,在阅读后消息需要提供以下选项:
      • 按1重复相同的语音信息。
      • 按2确认消息上的操作。
      • 按3发送语音信息的短信息。
  • 需要获得每个语音呼叫/消息的响应?

    • 对于它发送的短信息,我得到的响应是"排队"而不是消息发送。根据短信发送成功与否,我需要更新一些标志。所以我如何才能得到短信回复"发送"。

      1
      2
        SMSMessage sms = twilio.SendSmsMessage(sFromNumber, sToNumber, sMessage);
        Console.WriteLine("SMS Status::::::" + sms.Status);
    • 同样地,我需要在呼叫完成后对语音呼叫进行响应。但它正在"排队"。

      1
      2
        var call = twilio.InitiateOutboundCall(sFromNumber,sToNumber, url);  
        Console.WriteLine("Call Status" + call.Status);
  • 所以请提供使用twilio的选项。

    如果您提供任何使用C的示例,那将是非常好的。


    这里是布道者。

    您确实需要某种公共URL,一旦出站调用被应答,Twilio就可以向其发出HTTP请求。这就是Twilio如何获得继续进行实时进行调用所需的指令。

    正如您所注意到的,有许多免费选项可以托管静态twiml内容。Twimlets就是其中之一。twimlbin.com是另一个。这两个服务都是免费的,至少是开始原型设计或设置应用程序的简单MVP的好地方,但是请记住,如果您期望大量的流量,或者您需要在其中构建具有您自己的自定义逻辑的东西,那么您可能会想转移到其他地方。

    其他东西可以是你自己的网站作为Azure网站托管(你也可以免费获得)。移动到你自己的网站也意味着你可以根据需要扩展它,你可以开始提供动态生成的twiml,而不是仅仅局限于动态twiml,就像你基本上使用twimlets或twimlbin一样。

    如果您想要处理来自的输入,并且没有一个twimlet满足您的需求,那么您可能需要查看azure选项(或者某种托管网站,不必是azure)。这将允许您构建自己的自定义逻辑,以便处理调用者输入,并基于该逻辑动态生成twiml响应。

    twilio为twiml生成和使用asp.net mvc构建twilio应用程序提供了助手库,可以从nuget获得。

    假设您想使用ASP.NET MVC构建自己的自定义Twilio应用程序,并使用Azure网站托管它。在这种情况下,使用我们的助手库,您可以在控制器中构建一个操作方法,用动词返回twiml。类似:

    1
    2
    3
    4
    var response = new TwilioResponse();
    response.Say("Hello World");
    response.BeginGather(new { action="http://example.azurewebsites.com/gather/" } );
    response.EndGather();

    您将提供执行该操作方法的URL作为initiaizeOutboundCall方法中的第三个参数,例如:

    1
    client.IntializeOutboundCall(FROM, TO,"http://example.azurewebsites.net");

    一旦用户输入,twilio将请求您在verbs动作参数中指定的URL,并向您传递一个名为digits的额外HTTP参数,您可以在动作方法中获取该参数并在应用程序逻辑中使用:

    1
    2
    3
    4
    5
    6
    7
    public void Gather(string Digits) {

        var response = new TwilioResponse();
        response.Say("You pressed" + Digits);

        return TwiML(response);
    }

    要获取电话或短信息的状态,可以包括使用statusback参数:

    • 短信:var result = client.SendMessage(FROM, TO, BODY,"http://example.azurewebsites.net/status");

    • 语音:var result = client.InitiateOutboundCall(FROM, TO, VOICEURL,"http://example.azurewebsites.net/status");

    一旦到达消息或调用的最终状态,twilio将向statusback URL发出HTTP请求。

    希望有帮助。