我已经建立了SIP域名,这样我就可以把从Twilio买来的电话转接到我的软电话上。
但我也想从软电话打电话到PSTN号码。我该怎么做?我怀疑它涉及一个弹性SIP中继,但我不知道如何配置它。
发布于 2017-06-26 23:38:46
我使用的是PHP助手库,没有弹性集群。
在Twilio控制台上的SIP域设置中,您可以为语音配置设置一个请求URL。看起来,当您试图通过SIP向任何号码发出一个传出电话时,Twilio请求这个URL,并将所有的调用信息变量与请求一起发布。其中一个变量是“调用”,它采用sip:0123456789@yourdomain.sip.us1.twilio.com:5060格式,其中0123456789是您所拨打的号码。
所以我们所要做的就是把数字从字符串中去掉,然后让Twilio拨号。很简单。
我创建了这个php文件,我在英国,所以它格式化使用英国国家代码.You调用的数字将不得不为其他国家稍微修改它。
<?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指向这个文件,你就都准备好了。
发布于 2017-06-28 09:02:26
下面是一个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'
}
});
};在Twilio中,将SIP域的“语音配置”下的“请求URL”设置为"HTTP“
https://stackoverflow.com/questions/44767139
复制相似问题