我在移动应用程序端使用@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 到电话号码。我希望在一次电话会议中实现所有这些或更多内容。
首先,我建议不要在第一个和第二个呼叫者之间进行语音通话。相反,请从创建会议开始。
第一个呼叫者将使用 Conference Twiml 发起会议。 Twilio 为简单会议提供了此 PHP 代码。
第二个呼叫者可以使用 Twiml 添加到会议(本质上重复使用与第一个呼叫相同的 Twiml),也可以使用 REST Api 创建会议参与者。