转发到 SIP URI 时进行 Twilio SRV 查找
Twilio SRV lookup while forwarding to SIP URI
我正在尝试将呼叫从我的 twilio 号码转移到我的 sip 设备。然而,这目前没有按预期工作,因为 Twilio 不喜欢使用负载平衡 url 的 SIP 提供商。在我的例子中,sip uri 以 @in.callcentric.com
结尾,它又将请求发送到三个服务器。如果我直接使用其中一台服务器,即 @alpha11.callcentric.com:5070
而不是 @in.callcentric.com
,它就可以工作。然而,这在我看来并不理想。
我找到了一个执行 SRV 查找的节点模块。这是我可以使用 twilio 函数来解决问题的方法吗?
有没有办法强制 twilio 查找 SRV 记录并自动使用它来转发呼叫?
使用 NPM 的内置 dns module 我能够让事情正常进行。这就是我的函数现在的样子。似乎工作正常。
const dns = require('dns');
let sipUri = '1777xxxxxxxxxx@in.callcentric.com';
let protocol = 'udp';
let region = 'us2' ;
exports.handler = function(context, event, callback) {
var user = sipUri.split('@')[0];
var host = sipUri.split('@')[1];
// generate the TwiML to tell Twilio how to forward this call
let twiml = new Twilio.twiml.VoiceResponse();
const dial = twiml.dial();
dns.resolveSrv('_sip._'+protocol+'.'+host, (err, addresses) => {
var resolvedhost = addresses[0].name+':'+addresses[0].port;
dial.sip('sip:'+user+'@'+resolvedhost+';region='+region);
console.log(twiml.toString());
// return the TwiML
callback(null, twiml);
});
};
这会手动查询主机名以获取 SRV 记录,然后使用返回的第一个结果。不考虑重量和优先级。
我正在尝试将呼叫从我的 twilio 号码转移到我的 sip 设备。然而,这目前没有按预期工作,因为 Twilio 不喜欢使用负载平衡 url 的 SIP 提供商。在我的例子中,sip uri 以 @in.callcentric.com
结尾,它又将请求发送到三个服务器。如果我直接使用其中一台服务器,即 @alpha11.callcentric.com:5070
而不是 @in.callcentric.com
,它就可以工作。然而,这在我看来并不理想。
我找到了一个执行 SRV 查找的节点模块。这是我可以使用 twilio 函数来解决问题的方法吗?
有没有办法强制 twilio 查找 SRV 记录并自动使用它来转发呼叫?
使用 NPM 的内置 dns module 我能够让事情正常进行。这就是我的函数现在的样子。似乎工作正常。
const dns = require('dns');
let sipUri = '1777xxxxxxxxxx@in.callcentric.com';
let protocol = 'udp';
let region = 'us2' ;
exports.handler = function(context, event, callback) {
var user = sipUri.split('@')[0];
var host = sipUri.split('@')[1];
// generate the TwiML to tell Twilio how to forward this call
let twiml = new Twilio.twiml.VoiceResponse();
const dial = twiml.dial();
dns.resolveSrv('_sip._'+protocol+'.'+host, (err, addresses) => {
var resolvedhost = addresses[0].name+':'+addresses[0].port;
dial.sip('sip:'+user+'@'+resolvedhost+';region='+region);
console.log(twiml.toString());
// return the TwiML
callback(null, twiml);
});
};
这会手动查询主机名以获取 SRV 记录,然后使用返回的第一个结果。不考虑重量和优先级。