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

问题描述:

我正在尝试使用Twilio和C#进行传出呼叫。从控制台客户端进行自定义内容出站语音呼叫

我给出了(fromnumber,tonumber,twiliodemourl)作为3个参数,用于启动 出站呼叫。然后它使用默认的twilio演示语音内容。

现在我需要自定义语音内容属性,每一次我触发启动外呼方法

我已经通过Twilio文档走后,我没有发现什么好的选择用于动态定制 内容时,一些其他属性 从每次我发送请求时使用C#的代码。

我的客户端应用程序定期运行以验证任何新消息,然后触发initiateoutboundall。

我没有任何自定义URL来发布语音正在寻找的第3个 参数initiateOutBoundCall的新XML。

那么是否需要一个外部域名URL才能从代码动态定制语音内容? 如果没有请提供选项/示例我必须从C#控制台应用程序中执行此操作。

我试图使用twimlets.com来呼应自定义文本以在通话中发言。 对于文本更改它与自定义文本工作正常。但我不确定twimlets.com/echo是否可用于生产用途?请确认。 Twimlets不支持我正在寻找的一些功能,例如收集输入 ,如IVR消息,用于出站呼叫。

使用Twilio的语音和C#的客户端:

  1. 声音请求使用Twilio C#的客户端?

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

    • 对于短信它发送我得到的响应为“排队”,而不是消息发送。 基于短信发送成功与否我需要更新一些标志。 所以我怎么能得到短信响应作为“发送”。

      SMSMessage sms = twilio.SendSmsMessage(sFromNumber, sToNumber, sMessage); 
          Console.WriteLine("SMS Status::::::" + sms.Status); 
      
    • 同样,我需要响应的语音呼叫一旦呼叫是振铃id完成。 但它给“排队”。

      var call = twilio.InitiateOutboundCall(sFromNumber,sToNumber, url); 
          Console.WriteLine("Call Status" + call.Status); 
      

所以,请给我提供了使用Twilio做选择。

如果您使用C#提供任何示例示例,那就太好了。

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2014-09-12 20:27:46

Twilio福音传教士在这里。

您确实需要某种类型的公开URL,Twilio可以在出站呼叫得到应答后发出HTTP请求。这就是Twilio如何获得所需的指示,以便继续进行实时的进行中的呼叫。

正如您所指出的,有许多托管静态TwiML内容的免费选项。 Twimlets就是其中之一。 Twimlbin.com是另一个。这两个服务都是免费的,并且至少可以开始原型设计或设置应用程序的简单MVP,但请记住,如果您期望有大量流量,或者需要使用自己的定制逻辑构建某些内容,那么您可能会想要转向别的东西。

其他的东西可能是您自己的网站作为Azure网站托管(您也可以免费获得)。移动到自己的网站也意味着您可以根据需要进行扩展,并且您可以开始提供动态生成的TwiML,而不仅仅限于动态TwiML,因为您基本上使用Twimlets或Twimlbin。

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

Twilio为TwiML生成提供助手库,并使用ASP.NET MVC构建Twilio应用程序,您可以从NuGet获取它。

假设您想要使用ASP.NET MVC构建自己的自定义Twilio应用程序,并使用Azure网站托管它。在这种情况下,使用我们的帮助程序库,您可以在您的控制器中构建一个操作方法,该方法返回带有<Say><Gather>动词的TwiML。喜欢的东西:

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

您将提供执行该操作方法在initiaizeOutboundCall方法如第三个参数的网址:

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

一旦用户输入他们的意见,Twilio将请求URL你在<Gather>动词动作参数指定传递你被点名了数字的额外的HTTP参数,你可以在你的操作方法,抓住并在您的应用程序逻辑中使用:

public void Gather(string Digits) { 

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

    return TwiML(response); 
} 

为了得到一个电话或短信的状态,可以包括使用statuscallback参数:

  • 短信: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将使一旦达到了消息或呼叫的最终状态,就向statusCallback URL发送HTTP请求。

希望有所帮助。

+0

感谢您的回应和帮助。我没有得到的一件事我无法获得短信的状态,Voice.Please帮助我理解。我需要创建一个动作“状态”http://example.azurewebsites。 net/status在默认controller.If是什么输入参数什么内容我应该为公共ActionResult状态(){} – user3311016 2015-01-13 20:07:03