Денис Здесенко
23.04.2020
8951

PJSUA. Установка и использование.

В своей практике для успешной диагностики различных проблем VoIP-инженеру необходим временами довольно широкий инструментарий, включающий в себя в том числе и обширное количество софтфонов. В данной статье речь пойдет о довольно интересном и весьма удобном решении – о PJSUA. Немного о продукте Что же это такое? PJSUA – это сиповый юзер агент с открытым кодом […]

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

Немного о продукте

Что же это такое? PJSUA – это сиповый юзер агент с открытым кодом реализованный под командную строку linux, и, как заявлено разработчиками, написанный для использования в качестве эталонной реализации PJSIP, но на практике позволяющий успешно траблшутить и обычный SIP, поскольку работает со всеми сиповыми сообщениями (отправленными или полученными).

Хотелось бы также отметить, что помимо всех фишек PJSIP, Приложением поддерживаются такие вещи как:

  • Множественные аккаунты с различными друг от друга параметрами регистрации
  • Множественные SIP-звонки (с конференциями или без них)
  • PIDF и X-PIDF
  • Перевод звонков
  • Конференции
  • DTMF в стандарте RFC 2833
  • Адаптивный джиттер
  • Протоколы STUN, ICE
  • Кодеки Speex, iLBC, GSM, G.711, L16
  • Статистика качества при работе с RTCP

Пользовательский интерфейс у этого приложения выглядит следующим образом:

Pjsua пользовательский интерфейс
Pjsua пользовательский интерфейс

Теперь стоит перейти непосредственно к установке этого чуда.

Установка

На самом деле установка приложения довольно проста. Первым делом с помощью менеджера пакетов устанавливаем зависимости (в моем случае делается все на CentOS 7, так что и в качестве менеджера пакетов будет yum):

# yum install -y python-dev gcc make gcc binutils build-essential

Установка зависимостей
Установка зависимостей

Далее стягиваем с помощью wget архив и распаковываем его:

# wget https://github.com/pjsip/pjproject/archive/2.6.tar.gz

Загрузка архива
Загрузка архива

# tar -zxvf 2.6.tar.gz

Вывод команды распаковки архива
Вывод команды распаковки архива

Полученные исходники компилируем командами:

#./configure

#make dep && make && make install

А вот скриншот с возможными ошибками в процессе:

Проблемы с lib-yuv
Проблемы с lib-yuv

Информер: Если возникли подобные проблемы в процессе компиляции, то стоит выполнить команду ./configure с ключом —disable-libyuv.

После того как все исходники были скомпилированы и ошибок не возникло, можно проверить корректность установки просто вызвав проверку версии приложения командой:

#pjsua –version

Вывод команды pjsua –version
Вывод команды pjsua –version

Установку на этом можно считать завершенной, далее приступим непосредственно к использованию.

Функционал и использование

Функционал у этого приложения довольно обширный и стоит пробежаться как минимум по основным функциям, но перед этим распишем ключи с которыми работает pjsua (это же консольное приложенире, как никак).

Общие:

  • —help – вызов справки
  • —version – выводит информацию о версии (на скриншоте выше мы использовали его для проверки корректности установки)
  • —config-file=[имя файла] – считать параметры из файла

Для логгирования:

  • —log-file=[имя файла] – писать логи в указаный файл
  • —log-level=[0-6] – уровень логгирования от 0 до 6, где 0 – это показывать только фатальные ошибки, а 6 – это полная детализация (по умолчанию использует 5)
  • —app-log-level=[0-6] – уровень логгирования для консоли (по умолчанию — 4)

Для управления SIP-аккаунтом:

  • —id=[URL] – задается SIP URL учетной записи (например, sip:[email protected])
  • —registrar=[URL] – задается URL сервера регистрации
  • —proxy=[URL] – задается URL прокси-сервера
  • —reg-timeout=[Секунды] – задается необязательный таймаут для регистрации в секундах (по умолчанию – 55 секунд)
  • —publish – отправка PUBLISH запросов, для публикации присутствия
  • —use-srtp=[0-1-2] – использование srtp (0 – отключено, 1 — необязательное расположение для SRTP в SDP, 2 – использовать для всех вызовов для текущей учетной записи)
  • —srtp-secure=[0-1-2] – использование защищенной srtp-сигнализации (0 – отключено, 1 – используется защищенный транспорт до следующего перехода, 2 – используется защищенный сквозной транспорт)

Для аутентификации SIP-аккаунта:

  • —realm=[строка] – задается область аутентификации
  • —username=[строка] – идентификатор пользователя
  • —password=[строка] – очевидно, пароль

Транспорт:

  • —local-port=[порт] – задает локальный порт для SIP транспорта
  • —ip-addr=[ip-адрес] – задает определенный ip для транспорта
  • —no-tcp – отключает tcp
  • —no-udp – отключает udp
  • —outbound=[URL] – задает URL для исходящего прокси

Хотелось бы сказать, что параметров там предостаточно, и чтобы подробнее их изучить можно ознакомиться с официальным мануалом. К сожалению, на русском языке нет, а тот что на официальном сайте проекта — на английском, но он довольно подробный.

И вот мы потихоньку добрались до использования софтфона. Начинать будем с малого, заведем новую учетную запись и зарегистрируем ее на сервере телефонии, развернутом на виртуальной машине. Для этого используем команды, описанные в меню pjsua:

Создание аккаунта
Создание аккаунта

Если все сделано верно, мы увидим множество SIP-сообщений в консоли:

Успешная регистрация
Успешная регистрация

Проверим что пир зарегистрировался на виртуалке с сервером телефонии выполнив sip show peers:

Вывод команды sip show peers
Вывод команды sip show peers

Как видно из скриншотов, регистрация прошла успешно. Теперь создадим еще один аккаунт на АТС и попробуем выполнить звонок из pjsua на него, запустив при этом sngrep, для попутной диагностики:

Скриншот: Screenshot_9.png Совершаем вызов на 201 используя команду m

Совершаем вызов на 201 используя команду m
Совершаем вызов на 201 используя команду m
 Вызов пришел на 201
Вызов пришел на 201
 SIP-диалог вызова
SIP-диалог вызова

Как видно из скриншотов звонок совершен успешно, сообщения летят в обе стороны, как и голос. В процессе звонка в консоли также выводились SIP-сообщения, как и в sngrep’e, что говорит о том, что pjsua отличный инструмент для траблшутинга. Ну и думаю для завершения стать стоит сделать входящий звонок. Наберем с 201 на 101:

 Вызов пришел на 101
Вызов пришел на 101

Информер: При ответе командой а, требуется указать с каким кодом отвечать. В моем случае это был код 200 (200ОК)

Повесили трубку с помощью команды h
Повесили трубку с помощью команды h
SIP-диалог
SIP-диалог

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

Телефонная книга CallMetrix
Корпоративный телефонный справочник для удобной связи между сотрудниками организации
Скачать описание CallMetrix
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

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

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.