астерисковые спецы есть? Вопрос нубский.
5269
1
Подскажите, не дайте мозгу взорваться плз.
Есть астериск, на него приходят звонки как с GoIP шлюза, так и с ISDN. ISDN приходит на внутреннюю плату.
при звонке на GoIP CallerID отдается 7ХХХХХХХХХХ, при звонке на ISDN - ХХХХХХХХХХ-Х(Х). Код страны злой ISDN съедает, зато дописывает в конце какую-то дополнительную цифирь.

Лог из * при звонке на ISDN
Показать спойлер
[May 14 23:13:52] VERBOSE[4698][C-00000007] sig_pri.c: -- Going to extension s|1 because of Complete received

[May 14 23:13:52] VERBOSE[4698][C-00000007] sig_pri.c: -- Accepting call from 'ХХХХХХХХХХ' to 's' on channel 0/1, span 4

[May 14 23:13:52] VERBOSE[5047][C-00000007] pbx.c: -- Executing [s@from-dahdi:1] NoOp("DAHDI/i4/ХХХХХХХХХХ-5", "Entering from-dahdi with DID == ") in new stack

[May 14 23:13:52] VERBOSE[5047][C-00000007] pbx.c: -- Executing [s@from-dahdi:2] Ringing("DAHDI/i4/ХХХХХХХХХХ-5", "") in new stack

[May 14 23:13:52] VERBOSE[5047][C-00000007] pbx.c: -- Executing [s@from-dahdi:3] Set("DAHDI/i4/ХХХХХХХХХХ-5", "DID=s") in new stack

[May 14 23:13:52] VERBOSE[5047][C-00000007] pbx.c: -- Executing [s@from-dahdi:4] NoOp("DAHDI/i4/ХХХХХХХХХХ-5", "DID is now s") in new stack

[May 14 23:13:52] VERBOSE[5047][C-00000007] pbx.c: -- Executing [s@from-dahdi:5] GotoIf("DAHDI/i4/ХХХХХХХХХХ-5", "1?dahdiok:checkzap") in new stack
Показать спойлер

В chan_dahdi.conf -
[channels]
context=from-dahdi

В dahdi-channels.conf спаны на карте указаны как "context=from-dahdi"

Нарыл вот такой костыль, дабы откусить лишнее и приделать недостающее.
Показать спойлер
в extensions_custom.conf добавил
[from-dahdi]
exten => _.,1,Set(CALLERID(all)=7${CALLERID(num):-10:10}) ; :-10 означает что отчет начинам с десятого символа слева, :10 означает что берем с места отчета последующие 10 символов, и 7 означает что ко всему полученному номеру добавляем слева 7.
exten => _.,2,Set(CALLERID(ANI-all)=${CALLERID(num)}) ; подставляем измененный cid для статистики cdr
exten => _.,3,Goto(from-dahdi,${EXTEN},1) ; направляем измененные данные во from-trunk для последующей обработки
Показать спойлер

Влепил оный костыль, куда положено... ИИИИИ!!!
Показать спойлер
[May 15 11:38:18] VERBOSE[4698][C-00000009] sig_pri.c: -- Going to extension s|1 because of Complete received

[May 15 11:38:18] VERBOSE[4698][C-00000009] sig_pri.c: -- Accepting call from 'ХХХХХХХХХХ' to 's' on channel 0/1, span 4

[May 15 11:38:18] VERBOSE[6899][C-00000009] pbx.c: -- Executing [s@from-dahdi:1] NoOp("DAHDI/i4/ХХХХХХХХХХ-7", "Entering from-dahdi with DID == ") in new stack

[May 15 11:38:18] VERBOSE[6899][C-00000009] pbx.c: -- Executing [s@from-dahdi:2] Ringing("DAHDI/i4/ХХХХХХХХХХ-7", "") in new stack

[May 15 11:38:18] VERBOSE[6899][C-00000009] pbx.c: -- Executing [s@from-dahdi:3] Set("DAHDI/i4/ХХХХХХХХХХ-7", "DID=s") in new stack

[May 15 11:38:18] VERBOSE[6899][C-00000009] pbx.c: -- Executing [s@from-dahdi:4] NoOp("DAHDI/i4/ХХХХХХХХХХ-7", "DID is now s") in new stack
Показать спойлер

как нетрудно убедиться - нихренасеньки не вышло. ЧЯДНТ?
Злыдь
Лучше все-таки X писать в шаблонах.

exten => _X.,1,Set(CALLERID(all)=7${CALLERID(num):-10:10}) ;

если не сработает всегда можно прямое правило прописать

exten => s,1,Set(CALLERID(all)=7${CALLERID(num):-10:10}) ;