Есть новенький Астериск 16.10.0
Минималистично настроен для опытов: два номера 110 и 111
sip.conf
[Показать] Спойлер:
- Код: выделить все
[template-test-phone](!)
type=friend
context=outgoing
host=dynamic
qualify=10000
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw
allow=gsm
allow=g726
usecallerid=yes
hidecallerid=no
callgroup=1
...
[110](template-test-phone)
defaultuser=110
secret=password
nat=force_rport,comedia
[111](template-test-phone)
defaultuser=111
secret=password
nat=force_rport,comedia
Простенький план звонков:
- Код: выделить все
[outgoing]
exten => 5555,1,noop(Test 5555)
exten => 111,1,noop(Test 111) ; добавил для проверки - не входит сюда
exten => _XXX,1,noop(Вызов на номер ${EXTEN})
same => n,dial(SIP/${EXTEN})
exten => h,1,noop(Вызов окончен)
Так вот, звонки со 110 на 111 идут в оба направления, софтфоны PhonerLite звонят.
Но!
В консоли никаких событий по этому поводу нет, вообще ноль, ни одной строчки. В логе тоже.
При этом если звонить на другие номера:
- Код: выделить все
5555
222
112
то всё отображается и в консоли, и в логе.
Позвонить на эти номера не может(номеров таких нет). Но всё исправно выводит в консоль и в лог, включая noop!!!
Но если звонить на номера 110 или 111 - звонок идёт напрямую и ничего не отображается в консоли.
Даже в специальное правило для 111 не заходит - просто звонит на 111-й телефон!
И ещё.
Если телефон 111 сделать недоступным (закрыть софтфон), то тоже начинает заходить в правило диалплана (в которое при включенном софтфоне не заходил!):
[Показать] Спойлер:
- Код: выделить все
== Using SIP RTP CoS mark 5
> 0x7f4ab80069f0 -- Strict RTP learning after remote address set to: 192.168.1.201:56231
-- Executing [111@outgoing:1] NoOp("SIP/110-00000000", "Test 111") in new stack
-- Executing [111@outgoing:2] Dial("SIP/110-00000000", "SIP/111") in new stack
[2020-05-28 20:43:16] WARNING[29254][C-00000001]: app_dial.c:2576 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
-- No devices or endpoints to dial (technology/resource)
-- Auto fallthrough, channel 'SIP/110-00000000' status is 'CHANUNAVAIL'
-- Executing [h@outgoing:1] NoOp("SIP/110-00000000", "Вызов окончен") in new stack
Как так вообще? Такого же не бывает?
Почему когда аппараты включены, то звонки идут напрямую минуя диалплан.
Я даже пробовал переименовать контекст (типа нет контекста outgoing) - звонки всё-равно идут напрямую без каких-либо событий в Астериске.
CLI> dialplan show:
[Показать] Спойлер:
- Код: выделить все
[ Context '__func_periodic_hook_context__' created by 'func_periodic_hook' ]
'beep' (CID match '') => 1. Answer() [func_periodic_hook]
2. Playback(beep) [func_periodic_hook]
'hook' (CID match '') => 1. Set(EncodedChannel=${CUT(HOOK_CHANNEL,-,1-2)}) [func_periodic_hook]
2. Set(GROUP_NAME=${EncodedChannel}${HOOK_ID}) [func_periodic_hook]
3. Set(GROUP(periodic-hook)=${GROUP_NAME}) [func_periodic_hook]
4. ExecIf($[${GROUP_COUNT(${GROUP_NAME}@periodic-hook)} > 1]?Hangup()) [func_periodic_hook]
5. Set(ChannelToSpy=${URIDECODE(${EncodedChannel})}) [func_periodic_hook]
6. ChanSpy(${ChannelToSpy},qEB) [func_periodic_hook]
[ Context 'outgoing' created by 'pbx_config' ]
'111' => 1. noop(Test 111) [extensions.conf:3]
'5555' => 1. noop(Test 5555) [extensions.conf:2]
'h' => 1. noop(Вызов окончен) [extensions.conf:8]
'_XXX' => 1. noop(Вызов на номер ${EXTEN}) [extensions.conf:5]
2. dial(SIP/${EXTEN}) [extensions.conf:6]
CLI> dialplan show 111@outgoing
[Показать] Спойлер:
- Код: выделить все
[ Context 'outgoing' created by 'pbx_config' ]
'111' => 1. noop(Test 111) [extensions.conf:3]
'_XXX' => 1. noop(Вызов на номер ${EXTEN}) [extensions.conf:5]
2. dial(SIP/${EXTEN})
logger.conf:
[Показать] Спойлер:
- Код: выделить все
[logfiles]
console => notice,warning,error,dtmf
;console => notice,warning,error,dtmf,verbose(7) - не помогает даже так
messages_full_log => notice,warning,error,debug,verbose(7),dtmf,fax
messages => notice,security
warning_log => warning
error_log => error
debug_log => debug
verbose_log => verbose(10)
dtmf_log => dtmf
...