#twilio
Вопрос:
Я хотел бы переключиться на Twilio, у меня есть очень простой вариант использования: входная дверь в моем здании.
Сегодня: Когда кто-то набирает наш номер, входная дверь звонит мне с одной из двух телефонных линий, и мой телефон и телефон моего партнера звонят (показывая идентификатор вызывающего абонента входной двери) одновременно. Один из нас отвечает и вызывает человека.
С Twilio я бы поставил входящий вызов в очередь и сделал два вызова одновременно. Затем я бы сделал «Обнаружение человека» (нажмите 1), присоединился к входящему вызову к человеку и отбросил другой звонок.
Все это кажется разумным, за исключением того, как мне получить идентификатор вызывающего абонента на наши телефоны, чтобы мы знали, что это кто-то звонит? Могу ли я зарегистрировать наши телефоны, чтобы разрешить «любой» идентификатор вызывающего абонента из Twilio?
Ответ №1:
Евангелист-разработчик Twilio здесь.
Я думаю, что вы можете достичь этого с помощью более простого подхода, чем постановка в очередь и размещение новых звонков.
Когда вы получаете входящий вызов на свой номер Twilio, вы можете вернуть a <Dial>
с несколькими <Number>
s. Это приведет к размещению вызовов на телефонные номера, используя исходный идентификатор входящего абонента, поэтому будет казаться, что он поступает с исходного номера.
Обычно использование <Number>
приведет к отмене других вызовов, как только будет получен ответ на первый. Но вы можете добавить url
атрибут <Number>
to play TwiML к человеку, отвечающему на звонок, перед подключением к входящему вызову. Это известно как шепот и позволяет выполнять обнаружение человека с помощью <Gather>
. Затем, как только шепот закончится и вызов соединится, другие вызовы будут отброшены. Итак, ваш первый ТвиМЛ должен выглядеть примерно так:
<Response>
<Dial answerOnBridge="true">
<Number url="/detect"> 123456789</Number>
<Number url="/detect"> 198765432</Number>
</Dial>
</Response>
Тогда /detect
должно выглядеть так:
<Response>
<Gather action="/gather-input" numDigits="1">
<Say>You are getting a call from your front door, press 1 to accept</Say>
</Gather>
<Hangup/>
</Response>
Затем /gather-input
должен ответить, <Hangup>
если 1 не был нажат, и пустой <Response>
, если вы хотите подключиться. Например (в псевдокоде, похожем на рубин):
post '/gather-input' do
if params["Digits"] == 1
return "<Response/>"
else
return "<Response><Hangup/></Response>"
end
end