Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Twilio从软电话(Sipdroid)拨打传出电话?_Twilio - Fatal编程技术网

如何使用Twilio从软电话(Sipdroid)拨打传出电话?

如何使用Twilio从软电话(Sipdroid)拨打传出电话?,twilio,Twilio,我已经建立了一个SIP域,这样我就可以把我用Twilio买的电话号码转接到我的软电话上 但我也想用软电话拨打PSTN号码。我该怎么做?我怀疑它涉及到一个弹性SIP中继,但我不知道如何配置它。我使用了没有弹性中继的PHP助手库 在Twilio控制台上的SIP域设置中,您可以为语音配置设置请求URL。看起来,当您试图通过SIP拨打任何号码的呼出电话时,Twilio会请求此URL,并在请求中发布所有call info变量。其中一个变量为“Called”,采用sip格式:0123456789@yourd

我已经建立了一个SIP域,这样我就可以把我用Twilio买的电话号码转接到我的软电话上


但我也想用软电话拨打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。干杯