如何使用javascript和php在浏览器中接听来电

问题描述

connection.on('incoming',function(conn) {}) 函数调用

我正在尝试在浏览器中实现来电。我试过的是一个javascript代码

var number = $("#number").val();

params = {
    "PhoneNumber": number,"CallerId": "+13604924000","AgentName": "Noman Javed",};

Twilio.Device.setup(token);

Twilio.Device.ready(function(device) {

    console.log('Ready');

    // ---------------------------------------------------
    // Explicitly create a new outgoing connection
    var connection = Twilio.Device.connect(params);

    console.log('PhoneNumber: ' + params.PhoneNumber);

    $('#hangup_btn_span').show();
    $("#hangup_btn").show();

    connection.on('error',function(error) {
        console.log(error);
    });

    connection.on('accept',function(conn) {
    
    });

    connection.on('incoming',function(conn) {
        console.log("incoming call connection object log");
        console.log(conn);
        console.log('Incoming connection from ' + conn.parameters.From);
        // accept the incoming connection and start two-way audio
        // conn.accept();
    });

}

对于拨出电话,我必须添加 Twiml App 拨出电话 URL 的 URL 并使用 rest API 拨打电话以点击 twiml 页面

对于来电,我在电话号码来电网址中添加了来电网址

mydomain.com/Welcome/incoming_call

来电网址代码为:

header('Content-Type: application/xml');
// Load the required files
require APPPATH . 'libraries/vendor/autoload.PHP';

use Twilio\Jwt\ClientToken;
use Twilio\Rest\Client;
use Twilio\TwiMl;
use Twilio\TwiML\VoiceResponse;

    file_put_contents('request.log',"\n" . "incoming call - : " . json_encode($_REQUEST)  . "\n",FILE_APPEND);    
?>
<Response>
   <Pause length="2"/>
   <Say voice="woman">Dialing number</Say>   
   <Dial callerId="<?PHP echo $_REQUEST['From']; ?>" >
        <?PHP echo $_REQUEST['To']; ?>        
   </Dial>
</Response>

在这个带参数的函数中我将如何在浏览器中接收调用

connection.on('incoming',function(conn) {
    console.log("incoming call connection object log");
    console.log(conn);
    console.log('Incoming connection from ' + conn.parameters.From);
    // accept the incoming connection and start two-way audio
    // conn.accept();
});

我是否也需要在 Twiml App 中添加来电 URL 或只添加电话号码来电 URL?

提前感谢您的帮助和指导。

解决方法

首先,在 twiml 应用程序中,您必须为后端 api 添加 url,其中包含您的 php 代码,并将该 twiml 应用程序添加到您的传入号码。

现在,在为您的用户生成令牌时,您必须使用“身份”。我们需要使用该身份值将来电连接到用户。类似于以下内容:

$response = new VoiceResponse();
$dial = $response->dial('');
$dial->client(IDENTITY_VALUE);

此拨号->客户端会将来电连接到浏览器。

如果您没有在代币生成中使用身份属性,请检查此网址: https://www.twilio.com/docs/iam/access-tokens?code-sample=code-creating-an-access-token-voice-2&code-language=PHP&code-sdk-version=5.x

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...