Twilio: программно подключиться к конференции и воспроизвести команду ‹Say› или звуковой файл ‹Play›?

У меня есть два пользователя, и я объединил их обоих в <Conference>.

Я хочу, чтобы робот присоединился к <Conference>, а затем сделал объявление.

Я рассматриваю два подхода:

  1. Возьмите всех участников конференции, перенаправьте их на TwiML, который воспроизводит звук, а затем верните их обратно в конференцию.

  2. Создать бота, который каким-то образом подключается к Конференции и играет в TwiML, но мне из документации непонятно, как это сделать.


person Zack Burt    schedule 20.03.2016    source источник


Ответы (1)


Евангелист разработчиков Twilio здесь.

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

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

$sid = "{{ account_sid }}"; 
$token = "{{ auth_token }}"; 
$client = new Services_Twilio($sid, $token);

// Loop over the list of participants and redirect ($client->account->conferences->get(CONFERENCE_SID)->participants as $participant) {
    $call = $client->account->calls->get($participant->call_sid);
    $call->update(array(
        "Url" => "http://example.com/conference_message"
    ));
}

Тогда вашей конечной точке /conference_message потребуется TwiML следующим образом:

<Response>
  <Play>http://example.com/message.mp3</Play>
  <Redirect>http://example.com/conference</Redirect>
</Response>

С другой стороны, чтобы бот вошел в комнату, вам нужно создать звонок на номер конференции и укажите URL, который указывает на TwiML для play сообщение, а затем повесить трубку. Как это:

$sid = "{{ account_sid }}"; 
$token = "{{ auth_token }}"; 
$client = new Services_Twilio($sid, $token); 

$call = $client->account->calls->create(A_TWILIO_NUMBER, THE_CONFERENCE_NUMBER, "http://example.com/conference_message");

Тогда ваша конечная точка /conference_message вернет TwiML следующим образом:

<Response>
  <Play>http://example.com/message.mp3</Play>
  <Hangup/>
</Response>

Дайте мне знать, поможет ли это вообще.

person philnash    schedule 21.03.2016
comment
Спасибо, это полезно! Как мне получить THE_CONFERENCE_NUMBER .. это ConferenceSid? Первоначально Конференция была создана с помощью глагола ‹TwiML›, ‹Конференция›{произвольный внутренний идентификатор‹/Конференция›. - person Zack Burt; 22.03.2016
comment
Ах, нет, это всего лишь номер, по которому вы можете позвонить, чтобы связаться с вашей конференцией. Я предположил, что люди просто подключаются к конференции, и ваш бот тоже может. - person philnash; 22.03.2016
comment
Значит, нельзя заставить бота присоединиться к программно созданной конференции? - person Zack Burt; 22.03.2016
comment
Что ж, единственный способ для бота присоединиться — это позвонить в конференцию, сказать, что это сообщение, а затем повесить трубку. Это то, что я пытался объяснить выше. - person philnash; 22.03.2016
comment
Как бот может подключиться к конференции, у которой нет номера телефона (т. е. к конференции, созданной программно)? - person Zack Burt; 24.03.2016
comment
Вы не могли бы создать номер для конференции? Или, предположительно, у вас есть номер Twilio, чтобы каким-то образом привлечь людей на эту конференцию, вы можете запрограммировать этот номер, чтобы направлять бота на конференцию, если этот номер вызывается этим ботом. Я не уверен в вашей настройке здесь, поэтому трудно предложить что-то более конкретное. - person philnash; 24.03.2016
comment
Думаю, я мог бы создать номер, посвященный конференциям. Затем я мог набрать номер, ввести код конференции, сделать паузу, сказать приветствие и уйти. Прохладный. Спасибо. - person Zack Burt; 24.03.2016
comment
@ZacharyBurt, ты смог дозвониться до конференции? Как вы присвоили номер конференции? - person H R; 05.08.2017
comment
@philnash Есть ли способ присоединиться к конференц-вызову с помощью conferenceSid или удобного для конференции имени. Проверьте мой вопрос stackoverflow.com/questions/47595208/ - person Puneet Singh; 02.12.2017