Asterisk, pjsip звонок на все контакты аккаунта.

Pjsip позволяет держать несколько регистраций на одном аккаунте. В этой заметке узнаем как легко и просто на них позвонить. Для этого требуется указать следующие настройки в AOR:

[max]
type=endpoint
context=2voip.ru
...

[auth_max]
type=auth
....

[max]
type=aor
max_contacts=5
remove_existing=no
remove_unavailable=yes

P.s. “лишние” настройки endpoint и auth скрыл, чтоб не мешали.

Далее регистрируемся с нескольких sip-телефонов/софтфонов. В данном случае их два.

asterisk*CLI> pjsip show contacts

  Contact:  <Aor/ContactUri..............................> <Hash....> <Status> <RTT(ms)..>
================================================================================

  Contact:  fanvil_001/sip:fanvil_001@192.168.88.147:5899  f48acd7be4 NonQual         nan
  Contact:  kamailio/sip:192.168.88.50:55060               8a281e7bd9 NonQual         nan
  Contact:  max/sip:04673589@192.168.88.250:42538          db92fd0fe6 NonQual         nan
  Contact:  max/sip:max@192.168.88.250:5060                ced0b0816b NonQual         nan

В /etc/asterisk/extensions.conf для соответствующего номера делаем следующий план набора:

[2voip.ru]

exten => 102,1,NoOp()
 same => n,Dial(${PJSIP_DIAL_CONTACTS(max)})
 same => n,Hangup()

Делаем проверочный вызов:

    -- Executing [102@2voip.ru:1] NoOp("PJSIP/fanvil_001-00000000", "") in new stack
    -- Executing [102@2voip.ru:2] Dial("PJSIP/fanvil_001-00000000", "PJSIP/max/sip:max@192.168.88.250:5060&PJSIP/max/sip:04673589@192.168.88.250:42538") in new stack
    -- Called PJSIP/max/sip:max@192.168.88.250:5060
    -- Called PJSIP/max/sip:04673589@192.168.88.250:42538
    -- PJSIP/max-00000002 connected line has changed. Saving it until answer for PJSIP/fanvil_001-00000000
    -- PJSIP/max-00000001 connected line has changed. Saving it until answer for PJSIP/fanvil_001-00000000
    -- PJSIP/max-00000002 is ringing
    -- PJSIP/max-00000001 is ringing
    -- PJSIP/max-00000002 answered PJSIP/fanvil_001-00000000
    -- Channel PJSIP/max-00000002 joined 'simple_bridge' basic-bridge <66c2a6a6-937c-40f1-9d7e-7b0691c97328>
    -- Channel PJSIP/fanvil_001-00000000 joined 'simple_bridge' basic-bridge <66c2a6a6-937c-40f1-9d7e-7b0691c97328>
    -- Channel PJSIP/fanvil_001-00000000 left 'simple_bridge' basic-bridge <66c2a6a6-937c-40f1-9d7e-7b0691c97328>
    -- Channel PJSIP/max-00000002 left 'simple_bridge' basic-bridge <66c2a6a6-937c-40f1-9d7e-7b0691c97328>
  == Spawn extension (2voip.ru, 102, 2) exited non-zero on 'PJSIP/fanvil_001-00000000'

Как видим, у нас в приложении Dial() оказалась следующая конструкция:

PJSIP/max/sip:max@192.168.88.250:5060&PJSIP/max/sip:04673589@192.168.88.250:42538

Вызов отправился на оба контакта.

    -- Called PJSIP/max/sip:max@192.168.88.250:5060
    -- Called PJSIP/max/sip:04673589@192.168.88.250:42538