Conf call: дождитесь ответа первого человека, затем подключите второго человека

Базовый случай: система позвонит человеку A. Если человек A поднимет трубку, он позвонит человеку B, и они будут подключены.

Я прочитал здесь несколько ответов, например https://stackoverflow.com/a/20976996/1907888, но это все еще неясно.

Будет ли работать следующее? Он позвонит PERSON_A, если человек ответит, он подключится к конференции, затем позвонит PERSON_B и подключится к той же конференции? Мне нужно сначала начать конференцию?

$response = new VoiceResponse();
$dial = $response->dial('PERSON_A');
if($dial->conference('Room 1234')) {
    $dial = $response->dial('PERSON_B');
    $dial->conference('Room 1234');
}

person Robert Sinclair    schedule 20.11.2020    source источник


Ответы (1)


Проповедник разработчиков Twilio здесь.

Когда вы управляете вызовами с помощью Twilio, есть два механизма, с помощью которых он работает. Существует Twilio REST API, который ваше приложение может использовать, чтобы все происходило, например запуск или изменить звонок. Затем есть веб-перехватчики, которые представляют собой HTTP-запросы, которые Twilio отправляет вашему приложению, когда что-то меняется в вызове, например, кто-то набирает ваш номер Twilio, вводит данные на телефоне или человек отвечает на исходящий вызов. Вы отвечаете на веб-перехватчики с помощью TwiML, подмножества XML, с инструкциями о том, что делать. со звонком дальше.

В этом случае вы хотите для начала позвонить человеку A. Для этого вам понадобится REST API для этого вызова. Когда человек А отвечает на звонок, Twilio отправляет вашему приложению запрос через веб-перехватчик, чтобы узнать, что делать дальше. Именно в этот момент вы можете как вызвать человека B, снова используя REST API, так и подключить человека A к конференц-связи, ответив с помощью TwiML.

Итак, ваш первоначальный исходящий вызов REST API должен выглядеть примерно так:

use Twilio\Rest\Client;

// Find your Account Sid and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
$sid = getenv("TWILIO_ACCOUNT_SID");
$token = getenv("TWILIO_AUTH_TOKEN");
$twilio = new Client($sid, $token);

$call = $twilio->calls
               ->create($personANumber, // to
                        $yourTwilioNumber, // from
                        ["url" => "http://example.com/conference.php"]
               );

URL-адрес, который вы отправляете при вызове, будет тем местом, куда Twilio отправляет запрос веб-перехватчика. Таким образом, в ответ на example.com/conference.php в этом случае вам нужно будет позвонить другому человеку и ответить с помощью TwiML, чтобы направить человека A в конференц-связь.

На этот раз вместо отправки URL-адреса вы можете отправить TwiML в ответе REST API. Что-то вроде этого:

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

// Find your Account Sid and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
$sid = getenv("TWILIO_ACCOUNT_SID");
$token = getenv("TWILIO_AUTH_TOKEN");
$twilio = new Client($sid, $token);

$twiml = new VoiceResponse();
$dial = $twiml->dial();
$dial->conference("Conference Name");

$call = $twilio->calls
               ->create($personBNumber, // to
                        $yourTwilioNumber, // from
                        ["twiml" => $twiml->toString()]
               );

echo $twiml.toString();

В этом случае я использовал один и тот же TwiML для обеих сторон вызова, потому что они оба входят в одну конференцию. Вы можете ответить другим TwiML в зависимости от того, что происходит.

Сообщите мне, если это поможет.

person philnash    schedule 20.11.2020