2013-07-24 9 views
7

Przygotowuję prosty system połączeń konferencyjnych, w którym użytkownik wprowadza kod PIN i jest połączony z konferencją z nim powiązaną. Ustawiam go także, aby zapisali swoje imię przed wejściem do pokoju.Skorzystaj z opcji Powiedz dla wszystkich uczestników konferencji

Moim planem jest pobranie nagranego adresu URL, następnie pobranie listy uczestników i wykonanie wywołania API REST dla każdego dzwoniącego, zmieniającego ich połączenie na Powiedz "Teraz wchodzisz", a następnie Odtwórz URL do nagrywania. Myślę, że po tych dniach też będę musiał je odesłać z powrotem do pokoju, nie jestem pewien.

Myślę, że modyfikowanie każdego połączenia spowoduje usunięcie ich z sali konferencyjnej, co nie jest idealne. Czy istnieje łatwiejszy sposób użycia funkcji Say/Play dla wszystkich członków konferencji wbudowanych w interfejs API REST?

Odpowiedz

8

Ktoś na forach Twilio interesował się the very same question, a odpowiedź brzmi obecnie, że nie ma bezpośredniego wywołania REST API dla tego.

Co należy zrobić, gdy uczestnik przyłącza się do konferencji, you'll use the REST API to make Twilio dial back in to your application. Możesz wybrać, jak wykrywać, że dzwonisz w swoją własną konferencję, jak chcesz (na przykład porównywanie numerów wychodzących i przychodzących dla równości); po wykryciu tego, możesz dołączyć do tego połączenia bezpośrednio do konferencji i użyć czasowników TwiML<Say> i <Play>, aby odtworzyć wstęp dla wszystkich.

To jest trochę skomplikowane, ale w ten sposób nie usuniesz każdego uczestnika z konferencji (co uniemożliwi im chwilę wzajemnego słuchania się), a następnie dołączysz do nich.


Oto coś, co powinno przypominać dobre rozwiązanie typu end-to-end.

Najpierw użytkownik wybiera numer i przechodzi przez standardowe monity, aby uzyskać numer PIN do pokoju konferencyjnego i jego nazwę.

<?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> 

Teraz, gdy już masz przypięcie i nagranie, dwie rzeczy się wydarzą; odpowiedź ze stanowiska do /conference/name będzie zawierać <Conference> czasownik, umieszczając użytkownikowi w pokoju:

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

... i asynchroniczna do tego, będzie korzystał z REST API, aby zainicjować nowe połączenie z powrotem do pokój konferencyjny.

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} 

Teraz kolejny fragment staje się mylący. Twilio będzie teraz rozmawiać z Twoim adresem zwrotnym dla przychodzącego końca połączenia oraz z adresem URL określonym powyżej dla wychodzącego końca połączenia. Twój przychodzący moduł obsługi połączeń będzie musiał wykryć, że linia konferencyjna oddzwania do siebie i zachowuje się inaczej; najpierw trzeba odpowiedzieć prostym TwiML, który umożliwia wychodzące zakończenie połączenia, aby wprowadzić pin do sali konferencyjnej.

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

Parametr Poczty SendDigits zapewni cyfr że trochę TwiML spodziewa. Ta akcja powinna następnie odpowiadać na konferencje w nowym wywołaniu.

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

Ostatnim elementem układanki jest TwiML emitowany przez URL podany w POST. Jest to znacznik, który będzie uruchamiany po dodaniu połączenia zwrotnego do konferencji.

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

To markup biega, gra nazwisko osoby dzwoniącej oraz komunikat do sali konferencyjnej, a następnie rozłącza się.

+0

Próbuję przemyśleć twoje rozwiązanie, ale nie podążam dokładnie. Być może, jeśli odwołasz się do określonych wywołań REST API. – Alex

+0

Proponuję użyć "/ 2010-04-01/Accounts/{AccountSid}/Conferences/{ConferenceSid}/Participants", aby uzyskać każdy identyfikator funkcji CallSid, ​​a następnie OGLUJ URL każdego "/ 2010-04-01/Accounts/{ AccountSid}/Calls/{CallSid} "z Play/Say TwiML. Zakładam, że to usunie uczestników z konferencji, ale nie jestem tego pewien. – Alex

+0

To rzeczywiście usuwa uczestników z konferencji. Nie mogę teraz utworzyć dla ciebie próbki, ale może później, dzisiaj lub jutro, przedstawię ci cały proces. –