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

How to answer incoming call in browser using javascript and 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 页面。

对于来电,我在phone号来电URL中添加了来电URL即

我的域名。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 或仅添加 phone 来电号码 URL?

在此先感谢您的帮助和指导。

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

现在,在为您的用户生成令牌时,您必须使用 'identity'。我们需要使用该身份值将传入呼叫连接到用户。如下所示:

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

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

如果您没有在令牌生成中使用身份属性,请检查此 url: 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