Твилио: Жужжание у входной двери

#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