如何使用Twilio从软电话(Sipdroid)拨打传出电话?
我已经建立了一个SIP域,这样我就可以把我用Twilio买的电话号码转接到我的软电话上如何使用Twilio从软电话(Sipdroid)拨打传出电话?,twilio,Twilio,我已经建立了一个SIP域,这样我就可以把我用Twilio买的电话号码转接到我的软电话上 但我也想用软电话拨打PSTN号码。我该怎么做?我怀疑它涉及到一个弹性SIP中继,但我不知道如何配置它。我使用了没有弹性中继的PHP助手库 在Twilio控制台上的SIP域设置中,您可以为语音配置设置请求URL。看起来,当您试图通过SIP拨打任何号码的呼出电话时,Twilio会请求此URL,并在请求中发布所有call info变量。其中一个变量为“Called”,采用sip格式:0123456789@yourd
但我也想用软电话拨打PSTN号码。我该怎么做?我怀疑它涉及到一个弹性SIP中继,但我不知道如何配置它。我使用了没有弹性中继的PHP助手库 在Twilio控制台上的SIP域设置中,您可以为语音配置设置请求URL。看起来,当您试图通过SIP拨打任何号码的呼出电话时,Twilio会请求此URL,并在请求中发布所有call info变量。其中一个变量为“Called”,采用sip格式:0123456789@yourdomain.sip.us1.twilio.com:5060,其中0123456789是您拨打的号码 所以我们需要做的就是从字符串中去掉这个号码,然后让Twilio拨它。很简单 我创建了这个php文件,我在英国,所以它将电话号码的格式设置为英国国家代码。对于其他国家,您必须对其进行一些更改
<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;
$calledNo = explode("@", $_POST['Called']); // Splits sip:0123456789@yourdomain.sip.us1.twilio.com:5060 into an array at the @ character
$callthis = '+44'.substr($calledNo[0], 5); // $calledNo[0] is set to sip:0123456789, this line strips the first 5 characters leaving 123456789 and adds +44 to the start (UK country code)
$response = new Twiml();
$dial = $response->dial(['callerId' => '{Your caller id}']); // Your caller ID must be validated or the outgoing call will fail
$dial->number($callthis); // Calls +44123456789
echo $response;
将您的语音URL指向此文件,您就一切就绪。我使用PHP帮助程序库完成了此操作,但没有使用弹性中继 在Twilio控制台上的SIP域设置中,您可以为语音配置设置请求URL。看起来,当您试图通过SIP拨打任何号码的呼出电话时,Twilio会请求此URL,并在请求中发布所有call info变量。其中一个变量为“Called”,采用sip格式:0123456789@yourdomain.sip.us1.twilio.com:5060,其中0123456789是您拨打的号码 所以我们需要做的就是从字符串中去掉这个号码,然后让Twilio拨它。很简单 我创建了这个php文件,我在英国,所以它将电话号码的格式设置为英国国家代码。对于其他国家,您必须对其进行一些更改
<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;
$calledNo = explode("@", $_POST['Called']); // Splits sip:0123456789@yourdomain.sip.us1.twilio.com:5060 into an array at the @ character
$callthis = '+44'.substr($calledNo[0], 5); // $calledNo[0] is set to sip:0123456789, this line strips the first 5 characters leaving 123456789 and adds +44 to the start (UK country code)
$response = new Twiml();
$dial = $response->dial(['callerId' => '{Your caller id}']); // Your caller ID must be validated or the outgoing call will fail
$dial->number($callthis); // Calls +44123456789
echo $response;
将您的语音URL指向此文件,您就完成了设置。这里有一个AWS Lambda,它的功能与miknik的PHP相同:
var aws = require('aws-sdk');
var ses = new aws.SES({
region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
console.log("Event: ", event);
var called = event.queryStringParameters.Called;
var number = called.match(/:(.*)@/)[1];
console.log("Number is [" + number + "]");
var dialCommand = '<Dial callerId="...">'
+ number
+ '</Dial>';
callback(null, {
statusCode: 200,
body: '<?xml version="1.0" encoding="UTF-8"?><Response>' + dialCommand + '</Response>',
headers: {
'Content-Type': 'text/xml'
}
});
};
将SIP域的Voice Configuration下的请求URL设置为HTTP GET in Twilio这是一个AWS Lambda,其功能与miknik的PHP相同:
var aws = require('aws-sdk');
var ses = new aws.SES({
region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
console.log("Event: ", event);
var called = event.queryStringParameters.Called;
var number = called.match(/:(.*)@/)[1];
console.log("Number is [" + number + "]");
var dialCommand = '<Dial callerId="...">'
+ number
+ '</Dial>';
callback(null, {
statusCode: 200,
body: '<?xml version="1.0" encoding="UTF-8"?><Response>' + dialCommand + '</Response>',
headers: {
'Content-Type': 'text/xml'
}
});
};
将SIP域的Voice Configuration下的请求URL设置为HTTP GET in Twilio嘿,miknik,感谢您为Stack Overflow社区提供的所有帮助。我很乐意从Twilio给你寄些东西来表达谢意。如果你觉得这很酷,请发邮件到twilio.com的mspeir。干杯嘿,miknik,谢谢你借给Stack Overflow社区的所有帮助。我很乐意从Twilio给你寄些东西来表达谢意。如果你觉得这很酷,请发邮件到twilio.com的mspeir。干杯