如何将动态值传递给 TwiML

Posted

技术标签:

【中文标题】如何将动态值传递给 TwiML【英文标题】:How to pass dynamic values to TwiML 【发布时间】:2021-11-05 03:30:06 【问题描述】:

我有一个 ASP.Net Core 网站,我想在该网站上使用页面上提供的号码发起出站呼叫。为此,首先我从后端控制器生成一个令牌:

var accountSid = ConfigurationManager.AppSettings["TwilioAccountSid"];
var authToken = ConfigurationManager.AppSettings["TwilioAuthToken"];
var appSid = ConfigurationManager.AppSettings["TwilioTwimlAppSid"];

var scopes = new HashSet<IScope>
  
   new OutgoingClientScope(appSid) 
;
var capability = new ClientCapability(accountSid, authToken, scopes: scopes);
return capability.ToJwt();

现在在页面上,一旦有人输入电话号码并点击通话,我就会使用 javascript 函数 Twilio.Device.connect() 发起通话。

我在生成令牌时使用其 AppSID 的 TwiML 应用程序具有提供以下 TwiML 的请求 URL:

<Response>
 <Dial callerId="+1XXXYYY">+91XXXAAA</Dial>
</Response>

这很好用,我可以接听 TwiML 中给定硬编码号码的电话。但是我想拨打页面上输入的号码。

所以我的问题是如何将在页面上输入的号码(以及 CallerID)传递给这个 TwiML,以便它拨打特定输入的号码而不是硬编码的号码?

如果这不可能,那么我的架构是否还有其他替代方案可用?

【问题讨论】:

【参考方案1】:

终于可以开始通话了。为此,我在 javascript 方法中使用了参数:

var params = 
    phoneToCall: document.getElementById('phone-number').value,
    callerIdToShow: document.getElementById('callerId').value
;
Twilio.Device.connect(params);

然后在返回 TwiML 拨号的 URL 上,我收到了这些参数并在 xml 中使用它们:

[HttpGet]
public HttpResponseMessage GetTwiML(string phoneToCall, string callerIdToShow)
            
  string XML = $"<Response><Dial callerId=\"callerIdToShow\">phoneToCall</Dial></Response>";
  return new HttpResponseMessage()
  
     Content = new StringContent(XML, Encoding.UTF8, "application/xml")
  ;

【讨论】:

以上是关于如何将动态值传递给 TwiML的主要内容,如果未能解决你的问题,请参考以下文章

如何将动态数量的输入值传递给 Symfony2.1 中的控制器

如何使用java将值动态传递给sp?

将动态值传递给路由 URI

如何将使用 ng-repeat 动态创建的 html 表单的输入元素的值传递给 ng-controller

如何根据媒体查询动态传递值

如何给url传递动态参数值?