如何在使用TwiML App创建调用时传递自定义参数



我想通过应该由TwiML应用程序处理的API创建一个新的电话号码出站呼叫。

为此,我提供了ApplicationSid参数,而不是此处文档中的Url参数

但是我找不到传递任何自定义参数的方法,因为在创建呼叫电话号码时添加自定义参数的唯一方法是将它们作为查询参数添加到URL中,如这里所述。

我可以从API查询TwiML应用程序,读取配置的Webhook url,添加我的自定义参数作为查询,并在创建调用时将它们传递给Url,StatusCallbackFallbackUrl,但这似乎是多余的和过于复杂的。

另一个解决方案是使用CallSid作为键将自定义参数存储在本地数据库中,但我希望避免具有本地状态。

是否没有办法简单地告诉API在调用TwiML应用程序的webhook时向Url添加一些参数(如这里提到的)?

这里是Twilio开发者布道者。

我担心在使用TwiML应用程序调用时没有好的方法来传递参数。您的选项是,正如您所描述的,在API请求中发送带有查询参数的url,而不是发送TwiML应用程序SID或将参数存储在本地针对CallSid作为一种会话存储。

这是很容易做的。您需要提供客户的参数调用。像这样…

var params = {
myOutboundPhone: "+15554448888",
myOutboundName: "Joe Q Customer"
};   
device.connect(
{
params
}).then((call) => {
call.on('accept', (acceptedCall) => {
console.log('in call accept');
console.log('myOutboundPhone = ' + acceptedCall.customParameters.get('myOutboundPhone'));
console.log('myOutboundName = ' + acceptedCall.customParameters.get('myOutboundName'));
});
});

您的控制台日志将看起来像这样…

in call accept
myOutboundPhone = +15554448888
myOutboundName = Joe Q Customer

然后在TwiML应用程序的语音回调中…

public function getVoiceXML(Request $request) : Response
{
error_log('in getVoiceXML');
error_log(json_encode($request->query->all()));
// ...
return $response;
}

Will log this…

[Web Server ] in getVoiceXML
[Web Server ]  {"AccountSid":"ACxxxx","ApiVersion":"2010-04-01","ApplicationSid":"APxxx","CallSid":"CAxxxx","CallStatus":"ringing","Called":"","Caller":"client:xxx","Direction":"inbound","From":"client:xxx","To":"","myOutboundName":"Joe Q Customer","myOutboundPhone":"+15554448888"}

最新更新