如何将动态值传递给 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 中的控制器