传递数据以在TwiML中用于出站呼叫

时间:2013-08-12 21:07:42

标签: c# .net twilio

我创建了一个托管在Azure中的WCF服务。此服务用于SalesForce工作流中的in-jest数据。然后,该服务将调用特定文件(建议使用cshtml),具体取决于需要通过Twilio的出站呼叫通知哪个团队。我需要将数据从webservice传递到创建/返回TwiML的文件。我想不出办法做到这一点,猜测cshtml不是要走的路?我目前正在使用Twilio NuGet包来拨打外拨电话。我正在使用演示网址进行测试(http://demo.twilio.com/docs/voice.xml)。这工作正常。刚才需要传递SalesForce数据以在创建TwiML时使用。将会有很多字段需要传递,所以如果可能的话,我们不想将它们附加到我的URL。我到目前为止的代码如下。任何帮助/建议将不胜感激。谢谢!

        var client = new TwilioRestClient(accountSid, authToken);

        client.SendSmsMessage("", "", "Test Twilio SMS from Windows Azure Webservice", r =>
        {
            if (r.RestException != null)
            {
                //an exception occurred making the REST call
                string message = r.RestException.Message;
            }
        });

        CallOptions options = new CallOptions();
        options.To = "";
        options.From = "";
        options.Url = "http://demo.twilio.com/docs/voice.xml";
        options.Timeout = 5;
        options.IfMachine = "Hangup";

        client.InitiateOutboundCall(options);

1 个答案:

答案 0 :(得分:2)

Twilio Evangelist在这里,如果你想避免将所有数据都放在URL中,那么你可以只添加一个ID作为一个状态数据,允许你找到原始的SalesForce数据。所以基本上,你需要沿着这些行中的一个ID:

https://example.com/calls/1234567890
https://example.com/calls?some_id=1234567890

然后当您的应用程序收到此请求时,它可以使用此ID来查找允许它生成TwiML的数据。

现在你可以做很多不同的事情:

  • 使用与Sales Force相关联的ID
  • 创建一个将Sales Force数据存储在内存(缓存)中的键值对 - 尽管记得处理多个服务器或大量请求。
  • 将数据存储在数据库中,并使用记录的ID。
  • 或者从Sales Force数据预先计算您的TwiML,进行调用,并将TwiML存储在上面的其中一个选项中。

第二种选择是反过来。使用API​​创建Twilio呼叫时,您将获得呼叫的标识符(呼叫SID)。当Twilio发出获取TwiML的请求时,它将提供此SID,因此您可以使用TwiML请求轻松加入API请求。您只需要以允许您查找原始数据的方式存储该SID,或者再次存储一些预先生成的TwiML。

希望这有帮助!