我正在尝试使用Twilio和C#拨打电话。
我将(来自数字,重量,twiliodemourl)作为3个参数用于启动 出站呼叫。然后它使用默认的twilio演示语音内容。
现在我需要自定义语音内容属性和其他一些属性 每次我触发启动出站呼叫方法
我已经通过Twilio docs我没有找到任何定制的好选项 每次发送请求时,使用C#动态地从代码中获取内容。
我的客户端应用程序定期运行以验证是否有新消息 触发initiateoutboundcall。
我没有任何自定义网址来发布语音正在寻找的第三个新XML initiateOutBoundCall的参数。
那么是否需要外部域URL来自代码动态自定义语音内容? 如果没有请提供我必须从C#控制台应用程序执行的选项/示例。
我尝试使用twimlets.com来回显要在通话中说话的自定义文字。 对于文本更改,它可以正常使用自定义文本。但我不确定twimlets.com/echo是否可以用于生产用途?请确认。 Twimlets不支持我正在寻找的一些功能,如收集输入 比如出站呼叫的IVR消息。
使用Twilio Voice和C#客户端:
使用Twilio C#客户端的语音请求?
需要获得每个语音通话/消息的响应吗?
对于它发送的短信我得到的响应是“排队”而不是发送的消息。 根据短信发送成功与否我需要更新一些标志。 那么我怎么能把短信响应作为“发送”。
SMSMessage sms = twilio.SendSmsMessage(sFromNumber, sToNumber, sMessage);
Console.WriteLine("SMS Status::::::" + sms.Status);
同样,一旦呼叫完成了铃声,我就需要对语音呼叫进行响应。 但它正在“排队”。
var call = twilio.InitiateOutboundCall(sFromNumber,sToNumber, url);
Console.WriteLine("Call Status" + call.Status);
所以请为我提供使用Twilio的选项。
如果您使用C#提供任何示例示例,那就太棒了。
答案 0 :(得分:1)
Twilio福音传教士在这里。
您确实需要某种公共URL,Twilio可以在应答出站呼叫后发出HTTP请求。这就是Twilio如何获得所需的指令,以便继续进行实时的正在进行的呼叫。
正如您所指出的,托管静态TwiML内容有许多免费选项。 Twimlets就是其中之一。 Twimlbin.com是另一个。这两种服务都是免费的,至少可以开始进行原型设计或设置应用程序的简单MVP,但请记住,如果您预计会有大量流量,或者您需要使用自己的自定义逻辑构建内容,那么#39; ll可能想要转向别的东西。
其他东西可能是您自己的网站托管,如Azure网站(您也可以免费获得)。移动到您自己的网站也意味着您可以根据需要进行扩展,并且您可以开始提供动态生成的TwiML,而不仅仅局限于动态TwiML,因为您基本上使用的是Twimlet或Twimlbin。
如果您想处理来自<Gather>
的输入并且没有任何Twimlet满足您的需求,那么您可能需要查看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();
您将提供执行该操作方法的URL作为initiaizeOutboundCall
方法中的第三个参数,例如:
client.IntializeOutboundCall(FROM, TO, "http://example.azurewebsites.net");
一旦用户输入他们的输入,Twilio将请求您在<Gather>
动词操作参数中指定的URL,向您传递一个名为Digits的额外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请求。
希望有所帮助。
答案 1 :(得分:0)
从C#SDK的5.32版本开始,您可以将动态twiml字符串传递到CallResource.Update()方法中,如下所示:
CallResource.Update(
twiml: "<Response><Say>Custom Message Here</Say></Response>"
pathSid: call.Sid);
甚至:
string customMessage = "<Response><Say>Custom Message Here</Say></Response>"
CallResource.Update(
twiml: customMessage,
pathSid: call.Sid);