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

本文关键字:用于 呼叫 TwiML 数据 | 更新日期: 2023-09-27 18:27:28

我创建了一个托管在Azure中的WCF服务。此服务用于从SalesForce工作流中获取数据。然后,该服务将调用一个特定的文件(建议使用cshtml),这取决于需要通过Twilio的出站呼叫通知哪个团队。我需要将数据从Web服务传递到创建/返回TwiML的文件。我想不出一种方法来做到这一点,猜测cshtml不是一种方法?我目前正在使用Twilio NuGet软件包拨打外呼。我正在使用演示URL进行测试(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);

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

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

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

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

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

  • 使用与Sales Force关联的ID
  • 创建一个Key-Value对,将Sales Force数据存储在内存(缓存)中——尽管要记住处理多个服务器或大量请求
  • 将数据存储在数据库中,并使用记录的ID
  • 或者根据Sales Force数据预先计算TwiML,进行调用,并根据上面的某个选项存储TwiML

第二种选择是反其道而行之。当您使用API创建Twilio调用时,您将获得该调用的标识符(CallSID)。当Twilio请求获取TwiML时,它将提供此SID,因此您可以轻松地将API请求与TwiML请求连接起来。您只需要以一种允许您查找原始数据的方式存储该SID,或者再次查找一些预先生成的TwiML。

希望这能有所帮助!