2013-07-24 2 views
7

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

Мой план состоит в том, чтобы записать URL-адрес записи, а затем получить список участников и сделать обращение к REST API каждому вызывающему абоненту, изменив свой вызов на «Скачав« Теперь ввод », а затем воспроизвести URL-адрес записи. Я думаю, что после этого мне придется отправить их обратно в комнату, я не уверен.

Я думаю, что изменение каждого звонка приведет их из конференц-зала, что не является идеальным. Есть ли более простой способ использовать Say/Play для всех участников конференции, встроенной в REST API?

ответ

8

Кто-то на форумах Twilio интересовался the very same question, и в настоящее время ответ на этот вопрос не является прямым вызовом API REST.

Что вам нужно сделать, когда участник присоединяется к конференции, you'll use the REST API to make Twilio dial back in to your application. Вы можете выбрать, как определить, что вы звоните в свою конференцию, как вам нравится (например, сравнивая исходящие и входящие номера телефонов для равенства); как только вы это обнаружите, вы можете присоединиться к этому вызову непосредственно на конференцию и использовать глаголы TwiML<Say> и <Play>, чтобы воспроизвести введение для всех.

Это немного запутанно, но таким образом вы не удаляете каждого участника с конференции (не давая им услышать друг друга на мгновение), а затем воссоединяться с ними.


Вот что-то, что должно напоминать хорошее сквозное решение.

Во-первых, пользователь набирает номер, и вы просматриваете стандартные подсказки, чтобы получить ПИН-код для конференц-зала и их имя.

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Gather action="/conference/pin" finishOnKey="#"> 
     <Say>Please the conference pin number followed by the pound key.</Say> 
    </Gather> 
</Response> 

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Say>Say your name and then press the pound key.</Say> 
    <Record action="/conference/name" finishOnKey="#" /> 
</Response> 

Теперь, после того, как вы установили контакт и запись, произойдут две вещи; ответ от должности до /conference/name будет содержать <Conference> глагол, размещение пользователя в комнате:

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Dial> 
    <Conference>{conference ID}</Conference> 
    </Dial> 
</Response> 

... и асинхронный к тому, что она будет использовать REST API, чтобы начать новый вызов обратно в конференц-зал.

POST /2010-04-01/Accounts/{AccountSid}/Calls 
From = {your conference phone number} 
To = {your conference phone number} 
SendDigits = wwww{conference PIN}# 
Url = /conference/announce?name={name ID} 

Теперь следующий бит вводит в заблуждение. Twilio теперь будет разговаривать с вашим URL-адресом обратного вызова для входящего конца вызова и указанным выше URL-адресом для исходящего конца вызова. Ваш обработчик входящего вызова должен будет обнаружить, что линия конференции возвращает себя и ведет себя по-другому; сначала нужно будет ответить простым TwiML, который позволяет исходящему концу вызова ввести контакт для конференц-зала.

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Gather action="/conference/announce-pin" finishOnKey="#" /> 
</Response> 

Параметр POST SendDigits обеспечит цифры, которые немного TwiML ожидают. Затем это действие должно отвечать конференцией в новом вызове.

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Dial> 
    <Conference>{conference ID}</Conference> 
    </Dial> 
</Response> 

Последний фрагмент головоломки - TwiML, испускаемый URL-адресом, указанным в POST. Это разметка, которая будет запускаться после того, как вызов loopback будет добавлен в конференцию.

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Play>/conference/name-recordings/{name ID}</Play> 
    <Say>has joined the call.</Say> 
    <Hangup /> 
</Response> 

Это работает разметка, играет имя вызывающего абонента и сообщение в конференц-зале, а затем вешает трубку.

+0

Я пытаюсь продумать ваше решение, но я точно не следую. Возможно, если вы ссылаетесь на конкретные вызовы API REST. – Alex

+0

Я предлагаю использовать «/ 2010-04-01/Accounts/{AccountSid}/Conferences/{ConferenceSid}/Участники» для получения каждого вызоваSid, затем POSTing Url для каждого »/ 2010-04-01/Accounts/{ AccountSid}/Calls/{CallSid}, который имеет Play/Say TwiML. Я предполагаю, что это удалит участников с конференции, но я не уверен в этом. – Alex

+0

Это действительно удаляет участников конференции. Я не могу создать образец для вас прямо сейчас, но, возможно, позже сегодня или завтра я смогу описать весь процесс для вас. –

Смежные вопросы