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

  • Tutorial

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

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


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

  1. Зайдите в ваш аккаунт https://manage.voximplant.com/.
  2. Перейдите в раздел «Приложения» и создайте приложение с именем sip.
  3. Находясь внутри приложения, перейдите на вкладку «Пользователи» и создайте пользователя usertelegram. Не забудьте про пароль, он скоро понадобится:

  4. Здесь же создайте пользователя userbob (он нам пригодится чуть позже).

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

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


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


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

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


Для этого необходимо на стороне 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 с такими настройками (обратите внимание на маску):


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


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


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


Сценарий и правило – те же самые, ничего нового создавать не нужно.
Единственный нюанс я уже упоминал выше – имена пользователей Voximplant должны быть написаны в нижнем регистре. Если же имя пользователя будет userBob, то когда вы укажете его, бот @siptg в итоге преобразует его в userbob, а такого пользователя в вашем приложении Voximplant попросту нет. Как итог – ошибка дозвона.
Откройте бота @siptg, отправьте ему сообщение userbob и увидите якобы входящий звонок от бота (контринтуитивно, но уж как есть).


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


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


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

  • еще один сценарий и правило;
  • валидный номер телефона для коллбэка (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, маску можно оставить по умолчанию:


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


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

Вывод


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

Комментарии 2

    +3
    Спасибо за упоминание нашей платформы! Хочу уточнить: в чём важность регистрозависимой политики в отношении имени пользователя? Это очень редкий случай, когда регистр оказался важен (ведь ни в почте, ни в самом Telegram регистр в адресе/имени значения не имеет).
      +1
      Регистрозависимые имена у нас реализованы как еще одна степень гибкости – разработчик при желании может пользоваться camelCase'ом, чтобы длинные имена были более читаемые, в том числе в логах.

      Подозреваю, что Voximplant – не единственная платформа, у кого имена юзеров регистрозависимы, однако вы же не были обязаны проверять, у каких платформ это реализовано, а у каких – нет. Если захотите, то внесете изменения, мы же в статье просто рассказали об этом нюансе. В любом случае, это не критичный момент. Ваш коннектор работает исправно – это главное.

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

    Самое читаемое