SIP-коннектор Telegram + Voximplant = звонки на сотовые и софтфоны

qkikbvxn5con1sw8zcrb_vmlizk.jpeg


Для телеграма разработали SIP-коннектор (@siptg). Voximplant — это платформа телефонии. Правильно, они могут прекрасно работать в паре и сегодня мы покажем, как. Добро пожаловать под кат!

Регистрируем софтфон в Voximplant


SIP-коннектор может работать в двух режимах: софтфон и SIP-шлюз. Мы рассмотрим первый вариант, так как он позволяет зарегистрировать бота «под видом» внутреннего юзера вашего приложения Voximplant. Именно поэтому сперва надо создать приложение Voximplant и пользователей внутри него.

  1. Зайдите в ваш аккаунт https://manage.voximplant.com/.
  2. Перейдите в раздел «Приложения» и создайте приложение с именем sip.
  3. Находясь внутри приложения, перейдите на вкладку «Пользователи» и создайте пользователя usertelegram. Не забудьте про пароль, он скоро понадобится:
    bw_a-49v4tzhib2c7zecacpnlru.png
  4. Здесь же создайте пользователя userbob (он нам пригодится чуть позже).


Внимание. На момент написания статьи коннектор @siptg имеет особенность: при исходящих звонках он приводит имена пользователей к нижнему регистру. Поэтому необходимо создавать пользователей Voximplant как указано: usertelegram, userbob и т.д. Если вы назовете пользователей в стиле camelCase, то телеграм будет принимать входящие звонки, а вот исходящие работать не будут.

Теперь идем на сторону мессенджера. Сам софтфон находится под именем @siptg, а его настройки под именем @siptg_bot — открываем их. Нажимаем Start, далее вводим команду /tariff и выбираем Free (для демонстрации его более чем достаточно, однако у него есть ограничения — например, после 5 неуспешных звонков наступает временная блокировка. Точное время разблокировки можно будет увидеть также с помощью команды /tariff).

Затем используем команду /softphone и клацаем кнопку New. Здесь поочередно надо ввести данные пользователя Voximplant и нажать Apply. Поле server состоит из sip. + имя аккаунта Voximplant + .voximplant.com:

pv8zw4tqjdtysnrbzg6nx4zpec8.png


Если все введено правильно, зарегистрированный клиент будет подсвечен зеленым светом.

p_xf-jlc-ygc-19ruyod0s_23ui.png


Отлично, теперь можем проверить, приходят ли в телеграм…

… входящие звонки


Для этого необходимо на стороне Voximplant зайти в приложение sip, чтобы создать сценарий и правило обработки звонков. Сценарий простейший: когда в облако приходит звонок от пользователя приложения sip, облако звонит второму пользователю того же приложения и соединяет их. Выглядит это так:

VoxEngine.addEventListener(AppEvents.CallAlerting, e => {
   const inc = e.call
 
   const out = VoxEngine.callUser(e.destination, e.callerid)
 
   VoxEngine.easyProcess(inc, out)
})


Сохраните сценарий под именем callUser. Оставаясь там же, в приложении sip, переключитесь на вкладку «Правила» и создайте правило call user rule с такими настройками (обратите внимание на маску):

meyv_jj-pzvkk98aqfrinnbpxvs.png


Помните пользователя userbob, созданного в самом начале? Отлично, залогиньтесь с его именем и паролем в нашем вебфоне:

oz7_xaalalsbzhqaidk2iepiugu.png


Введите usertelegram и нажмите «Позвонить» — вы получите входящий звонок от бота @siptg на всех устройствах, где у вас открыт мессенджер.

jkdr7rvchmh6i68jt4ojh7nc5yy.png


Исходящие звонки пользователям Voximplant


Сценарий и правило — те же самые, ничего нового создавать не нужно.

Единственный нюанс я уже упоминал выше — имена пользователей Voximplant должны быть написаны в нижнем регистре. Если же имя пользователя будет userBob, то когда вы укажете его, бот @siptg в итоге преобразует его в userbob, а такого пользователя в вашем приложении Voximplant попросту нет. Как итог — ошибка дозвона.

Откройте бота @siptg, отправьте ему сообщение userbob и увидите якобы входящий звонок от бота (контринтуитивно, но уж как есть).

dttmiaquupvd0mwqomkntvaxggi.png


Нажмите на зеленую трубку и после этого звонок поступит на софтфон в браузере, то есть пользователю userbob.

vch0vvgdzzxdiawlgsl30kkbvbs.png


Исходящие звонки на сотовые номера


Для того, чтобы телеграм-бот мог звонить на стационарные номера, понадобятся:

  • еще один сценарий и правило;
  • валидный номер телефона для коллбэка (Caller ID). Это может быть либо ваш личный номер телефона, который вы подтвердили в панели, либо номер, купленный у Voximplant. Обратите внимание, что тестовые номера не подходят для этих целей.


В приложении sip создайте сценарий callPSTN с таким кодом (обратите внимание на строку 4 — здесь надо подставить валидный номер):

VoxEngine.addEventListener(AppEvents.CallAlerting, e => {
   const inc = e.call
 
   const out = VoxEngine.callPSTN(e.destination, "real callback number")
 
   VoxEngine.easyProcess(inc, out)
})


Затем создайте правило call PSTN rule, маску можно оставить по умолчанию:

pupnizwl9zonaqaww_7su8vayei.png


Важно: это новое правило переместите вниз в списке правил. Таким образом, у него понизится приоритет и оно будет срабатывать только если не выполнилось правило для user.*

z5k1e6mvhxdvmvponwh3j2uthmk.png


Отлично, теперь можно звонить: отправляете боту @siptg целевой номер телефона, он показывает вам интерфейс звонка, нажимаете зеленую трубку и звонок уходит на указанный мобильный/городской номер.

Вывод


Интеграция телеграма с облачной телефонией может быть удобна бизнесу, ведь это еще один способ «дотянуться» до клиентов — читай, omnichannel. Также это можно применить и внутри компании, если телеграм — ваш корпоративный мессенджер. Пожалуй, для личных нужд это тоже может быть востребовано. Возможность делать звонки из телеграма актуальна в любом случае, когда вы используете этот мессенджер, а тот, кому вы хотите позвонить — не использует. В итоге и вам не надо менять среду для общения — звонок идет прямо из мессенджера, и для вашего собеседника ничего не меняется, он получит звонок на свой софтфон/телефон.

© Habrahabr.ru