使用 twilio php 进行电话会议

问题描述 投票:0回答:1

我在移动应用程序端使用@twilio/voice-react-native-sdk,在服务器端使用php。我的目标是首先 clinetA 开始呼叫 clinetB,然后在通话过程中 clinetA 或 clinetB 希望使用 电话号码 添加通话中的人员。我能够在 clinetA 和 clinetB 之间进行呼叫。并且还能够在通话过程中拨打电话号码。我的问题是我的代码正在创建两个调用。第一个 clinetA 到 clinetB,第二个 clinetA 到电话号码。我希望在一次电话会议中包含所有这些或更多内容。我是 twilio 和 PhP 的新手。我有一些想法,我第一次创建正常呼叫,然后在呼叫期间使用电话号码创建会议。第一次应用程序将以字符串形式发送参与者,然后将参与者添加为电话号码。我不知道应该如何在 clinetA 到 ClinetB 之间进行电话会议,然后添加相同的呼叫电话号码。

if (!is_numeric($participantPhoneNumber)) participant is string clinetA to clinetB  
  <?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require __DIR__ . '/twilio-php-main/src/Twilio/autoload.php';

use Twilio\TwiML\VoiceResponse;
use Twilio\Rest\Client;

$accountSid = 'xxxxxxxxx';
$authToken = 'xxxxxxxxx';

$response = new VoiceResponse();
$callerNumber = '+447401120267';
$callerId = isset($_POST["callerId"]) ? $_POST["callerId"] : "";
$typeOfCall = isset($_POST["typeOfCall"]) ? $_POST["typeOfCall"] : "audio";
$minimumMinutes = isset($_POST["minimumMinutes"]) ? $_POST["minimumMinutes"] : "60";
$language = isset($_POST["language"]) ? $_POST["language"] : "Arabic";
$speciality = isset($_POST["speciality"]) ? $_POST["speciality"] : "Social Services";
$from = isset($_POST["from"]) ? $_POST["from"] : "";
$to = isset($_POST["to"]) ? $_POST["to"] : "";
$participantPhoneNumber = isset($_POST["participant"]) ? $_POST["participant"] : "";

if (!isset($to) || empty($to)) {
    $response->say('Hello');
} else {
    if (!is_numeric($participantPhoneNumber)) {
        // Initial call between clients
         
        $dial = $response->dial();
        $client = $dial->client($to); 
        $client->identity($to);
        $client->parameter(['name' => 'typeOfCall', 'value' => $typeOfCall]);
        $client->parameter(['name' => 'minimumMinutes', 'value' => $minimumMinutes]);
        $client->parameter(['name' => 'language', 'value' => $language]);
        $client->parameter(['name' => 'speciality', 'value' => $speciality]);
    } else {
        $callSid = isset($_POST["callSid"]) ? $_POST["callSid"] : "";
        // Conference call
        $conferenceOptions = [
            'startConferenceOnEnter' => true,
            'endConferenceOnExit' => true,
        ];
     
        $conferenceName = $to; // Replace with a unique conference name
        $conferenceDial = $response->dial();
        $conferenceDial->conference($conferenceName, $conferenceOptions);
        // Add participant to the conference
        if (isset($participantPhoneNumber) && !empty($participantPhoneNumber)) {
            $client = new Client($accountSid, $authToken);
            try {
                $participant = $client->conferences($conferenceName)->participants->create(
                    $callerNumber,
                    $participantPhoneNumber,
                    ["beep" => false]
                );
            } catch (Twilio\Exceptions\TwilioException $e) {
                echo $e->getMessage();
            }
        }
    }
}

header('Content-Type: text/xml');
print $response;
?>

我可以在 clinetA 和 clinetB 之间进行通话。并且还可以在通话过程中拨打电话号码。我的问题是我的代码正在创建两个调用。第一个 clinetA 到 clinetB,第二个 clinetA 到电话号码。我希望在一次电话会议中实现所有这些或更多内容。

php react-native twilio-api twilio-php twilio-conference
1个回答
0
投票

首先,我建议不要在第一个和第二个呼叫者之间进行语音通话。相反,请从创建会议开始。

第一个呼叫者将使用 Conference Twiml 发起会议。 Twilio 为简单会议提供了此 PHP 代码。

第二个呼叫者可以使用 Twiml 添加到会议(本质上重复使用与第一个呼叫相同的 Twiml),也可以使用 REST Api 创建会议参与者

© www.soinside.com 2019 - 2024. All rights reserved.