ИМХО это так не разрулится.
Сначала находится неверный пир (ниже должен быть 3038 вместо 3037).
Канал создается раньше, чем пойдет обработка диалплана.
[2019-01-30 17:20:35] VERBOSE[2944][C-00001fb7] chan_sip.c: Found peer '3037' for '106' from 10.10.1.7:5060
А уже потом
[2019-01-30 17:20:35] VERBOSE[2944][C-00001fb7] chan_sip.c: Looking for 109 in from-fxo (domain 10.10.1.5)
Здесь from-fxo аналог from-gsm от ded`а, DID - 109 и ему соответствует peer 3038, т.е. второй пир на шлюзе.
Вижу проблему в следующем (верно для FreePBX и, скорее всего и для Эластикса, раз там "под кожей" FreePBX).
Если линии используются только на вход или только на выход - ее не видно.
Проявляет себя нечасто в виде вопля оператора:
"А почему я слышу "Все линии заняты, если у нас только два входящих, а линий на шлюзе четыре?"
GSM-шлюз (к примеру мой GOIP, каждая линия - отдельный транк)
Пиры
3001 - принял звонок в канал SIP/3004-ххххххх
3002 - принял звонок в канал SIP/3003-ххххххх
3003 - звонков нет
3004 - звонков нет
Исходящая маршрутизация в том-же порядке, т.е 3001-3002-3003-3004
Оператор пытается совершить исходящий звонок
Система начинает перебирать транки.
Но она определяет занятость транка в макросе macro-dialout-trunk через
exten => s,n,GotoIf($[ ${GROUP_COUNT(OUT_${DIAL_TRUNK})} >= ${OUTMAXCHANS_${DIAL_TRUNK}} ]?chanfull)
Т.е. получает количество уже существующих каналов для транка и сравнивает с максимальным количеством исходящих, заданных для транка (наверно стоит у всех единица).
Для транка с каналом выглядит так
Executing [s@macro-dialout-trunk:7] GotoIf("SIP/198-00003b15", "0?nomax") in new stack
Executing [s@macro-dialout-trunk:8] GotoIf("SIP/198-00003b15", "1?chanfull") in new stack
Goto (macro-dialout-trunk,s,33)
Executing [s@macro-dialout-trunk:33] NoOp("SIP/198-00003b15", "max channels used up") in new stack
После чего идет переход к следующему транку
Получается
3001 - есть звонок, но канал создан для другого контекста и система считает его свободным.
При обращении к пиру идет отлуп 503 "Service Unavalaible"
3002 - есть звонок, но канал создан для другого контекста и система считает его свободным.
При обращении к пиру идет отлуп 503 "Service Unavalaible"
3003 - звонка нет, но есть канал SIP/3003-xxxx, и система считает его занятым
3004 - звонка нет, но есть канал SIP/3004-xxxx, и система считает его занятым
На выходе: "Все линии заняты, попробуйте позвонить позже".
Конкретно с GOIP проблема решаема через Use Remote Party ID и trustrpid=yes (замечательно работает).
Сейчас пытаюсь победить DVG-6004S. Не получается.