Не буду писать о том, что такое PJSIP и почему он теперь есть. И без меня писателей хватает, поэтому быстренько пробежимся по настройкам, и основным моментам для тех, кто использовал chan_sip.
Главная проблема при переходе заключается в том, что в PJSIP добавили гибкости, причем в таких количествах, что ей подавиться не сложно. Для каждого пира (теперь он называется endpoint) нужно сделать несколько секций (входящая и исходящая авторизация, регистрация, сам endpoint и еще несколько). Но, через какое-то время передумали и добавили модуль pjsip wizard, который, при загрузке сам сделает что нужно. На него-то и будем рассчитывать. В ubuntu-server 18.04 LTS Asterisk версии 13, древненько но пусть будет.
Первое, что нужно чтобы перейти на PJSIP – это отключить старый chan_sip, чтобы не мешался. Отключать будем весь модуль, строкой
noload => chan_sip.so |
в modules.conf единственная настройка в конфиге pjsip.conf, которая понадобится – это настройка транспорта.
[udp-transport] protocol=udp bind=0.0.0.0 |
Тут все должно быть понятно. Эндпойнты настроем через pjsip_wizard.conf
Во-первых, для простоты писания создаем шаблон:
[office-template](!) type=wizard transport=udp-transport accepts_auth=yes accepts_registrations = yes aor/qualify_frequency=300 aor/max_contacts=1 inbound_auth/auth_type=userpass endpoint/disallow=all endpoint/allow=alaw,ulaw endpoint/dtmf_mode = rfc4733 endpoint/context = office endpoint/direct_media=no |
и начинаем создавать эндпойнты:
[office11](office-template) inbound_auth/username=office11 inbound_auth/password=123435 [office12](office-template) inbound_auth/username=office12 inbound_auth/password=12345 |
Конфиг каждого визарда состоит из «глобальной части» и настроек разных секций. В зависимости от accepts_auth или send_registration wizard сам генерирует нужные секции и свяжет их, а все настройки вида section/* — попадут прямо в указанную секцию. Тут кроется небольшой подводный камень: если конфиг написан не корректно (например, в какой-то секции указан не существующий параметр) при загрузке визард проверять этого не будет, но астериск не позволит создать косячную секцию и разрешит наделать остальные. Поэтому вполне может оказаться, что wizard создаст aor, auth, registration, но не сделает endpoint. Тут нужно внимательно читать логи — в них мелким шрифтом будет указано, что не нравится.
Перезагрузка настройка выполняется командой pjsip reload. А вот удобного аналога sip show peers нам не завезли (или я плохо искал), кто сейчас в онлайне посмотреть можно через pjsip show endpoints или pjsip show aors, но вместо удобной таблички там каша.
И не забываем, в диалплане использовать канал PJSIP:
exten => _1x,1,Dial(PJSIP/office${EXTEN},,t) |
Ну и напоследок, волшебник для zadarma:
[zadarma] type=wizard sends_registrations=yes sends_auth=yes remote_hosts=sip.zadarma.com transport=udp-transport aor/qualify_frequency=1000 aor/max_contacts=3 outbound_auth/auth_type=userpass endpoint/disallow=all endpoint/allow=alaw,ulaw endpoint/dtmf_mode=rfc4733 endpoint/context=incoming-zadarma endpoint/direct_media=no endpoint/from_user=1234 endpoint/from_domain=sip.zadarma.com outbound_auth/username=1234 outbound_auth/password=secret registration/retry_interval=60 registration/expiration=120 |
Таким же образом настраиваются 90% VoIP провайдеров