VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Входящая маршрутизация на основе порта в FXO PCI-плате

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

pstudiopuh
Сообщения: 14
Зарегистрирован: 01 апр 2013, 13:26

Входящая маршрутизация на основе порта в FXO PCI-плате

Сообщение pstudiopuh »

Доброго всем дня
столкнулся с такой проблемой
есть сконфигурированный Эластикс в который приходит 2 сип транка и в который установлена замечательная китайская PCI плата с 4мя FXO портами, в которую в свою очередь воткнуто 4 аналоговые местные линии
с исходящей маршрутизацией разобрался
со входящей пока осилил только пункт any cid/any did
что заворачивает все входящие вызовы по всем номерам секретарю (в кол группу секретарей)

собсно вопрос - как сделать так чтобы при звонке на определенную (например на 4 дырку в этой плате) аналоговую линию звонок шел в другую группу (например боссу и повару марьиванне)
сразу предупреждаю что у меня проблемы с ручным конфигурирование и я все делаю через вебморду
буду безумно благодарен за помощь
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Входящая маршрутизация на основе порта в FXO PCI-плате

Сообщение ded »

Connectivity => ZAP channel DIDs
Дальше цитирую оттуда:
Добавить канал Zap

Прямые номера DID на каналах Zap дают возможность назначить DID на каждый конкретный канал Zap. Также можно назначить один номер DID на несколько каналов Zap. Это будет наиболее общим сценарием для всех, если имеется несколько линий ТФОП, которые необходимо объединить в транк группу для серийного поиска от вашего провайдера. Обязательно указывать контекст from-zaptel для получения нужного результата. Это дополнительная строка

context = from-zaptel

в вашем файле zapata.conf, определяющем конфигурацию каналов. После того, как указаны соответствующие номера DID можно использовать стандартные сценарии для них в секции Входящая маршрутизация.
К сожалению много лет тянется старое наследие именования канала - то что тут называется zapata.conf сейчас называется chan_dahdi.conf
Остальное верно.
pstudiopuh
Сообщения: 14
Зарегистрирован: 01 апр 2013, 13:26

Re: Входящая маршрутизация на основе порта в FXO PCI-плате

Сообщение pstudiopuh »

зашел во вкладку Zap Chanel DIDs.
там 3 поля - канал , описание и собственно ДИД
в каналы вписал
1,2,3,4 (не знаю почему так, альтернатив что туда писать - в голову не пришло, вроде как вписал эти цифры в соответствии с номерами дырок на плате FXO. тоесть номер канала 1 реально соответствует дырке 1 в плате и реально соответствует номеру телефона который висит на этой паре меди, тоесть более логичного решения мне в голову не пришло)
в дескрипшане толком ничего ценного не писал так как размер моей системы не предполагает забывание ху изи ху, в полях дид прописал соответственно внешние городские номера которые мне выдает ростелеком в формате
74832123456 - код страны,код города Брянск, 6 тизначный телефонный номер

далее настраиваю в вкладке входящей маршрутизации
(там уже есть правило ани сид/ани дид)

делаю новое правило -
пишу ДИД
74832123456
пишу назаначение - внутренний номер 111

при звонке снаружи на номер указанный в поле дид получаю следующую отбивку в консоли и звонок уходит по правилу ани сид/ани дид
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
-- Starting simple switch on 'DAHDI/2-1'
-- Executing [s@from-pstn:1] Set("DAHDI/2-1", "__FROM_DID=s") in new stack
-- Executing [s@from-pstn:2] Gosub("DAHDI/2-1", "app-blacklist-check,s,1") in new stack
-- Executing [s@app-blacklist-check:1] GotoIf("DAHDI/2-1", "0?blacklisted") in new stack
-- Executing [s@app-blacklist-check:2] Set("DAHDI/2-1", "CALLED_BLACKLIST=1") in new stack
-- Executing [s@app-blacklist-check:3] Return("DAHDI/2-1", "") in new stack
-- Executing [s@from-pstn:3] ExecIf("DAHDI/2-1", "1 ?Set(CALLERID(name)=)") in new stack
-- Executing [s@from-pstn:4] Set("DAHDI/2-1", "__CALLINGPRES_SV=allowed_not_screened") in new stack
-- Executing [s@from-pstn:5] Set("DAHDI/2-1", "CALLERPRES()=allowed_not_screened") in new stack
-- Executing [s@from-pstn:6] Goto("DAHDI/2-1", "ext-group,601,1") in new stack
-- Goto (ext-group,601,1)
-- Executing [601@ext-group:1] Macro("DAHDI/2-1", "user-callerid,") in new stack
-- Executing [s@macro-user-callerid:1] Set("DAHDI/2-1", "AMPUSER=") in new stack
-- Executing [s@macro-user-callerid:2] GotoIf("DAHDI/2-1", "0?report") in new stack
-- Executing [s@macro-user-callerid:3] ExecIf("DAHDI/2-1", "1?Set(REALCALLERIDNUM=)") in new stack
-- Executing [s@macro-user-callerid:4] Set("DAHDI/2-1", "AMPUSER=") in new stack
-- Executing [s@macro-user-callerid:5] Set("DAHDI/2-1", "AMPUSERCIDNAME=") in new stack
-- Executing [s@macro-user-callerid:6] GotoIf("DAHDI/2-1", "1?report") in new stack
-- Goto (macro-user-callerid,s,10)
-- Executing [s@macro-user-callerid:10] GotoIf("DAHDI/2-1", "0?continue") in new stack
-- Executing [s@macro-user-callerid:11] Set("DAHDI/2-1", "__TTL=64") in new stack
-- Executing [s@macro-user-callerid:12] GotoIf("DAHDI/2-1", "1?continue") in new stack
-- Goto (macro-user-callerid,s,19)
-- Executing [s@macro-user-callerid:19] Set("DAHDI/2-1", "CALLERID(number)=") in new stack
-- Executing [s@macro-user-callerid:20] Set("DAHDI/2-1", "CALLERID(name)=") in new stack
-- Executing [s@macro-user-callerid:21] NoOp("DAHDI/2-1", "Using CallerID "" <>") in new stack
-- Executing [601@ext-group:2] GotoIf("DAHDI/2-1", "1?skipdb") in new stack
-- Goto (ext-group,601,4)
-- Executing [601@ext-group:4] Set("DAHDI/2-1", "__NODEST=") in new stack
-- Executing [601@ext-group:5] Set("DAHDI/2-1", "__BLKVM_OVERRIDE=BLKVM/601/DAHDI/2-1") in new stack
-- Executing [601@ext-group:6] Set("DAHDI/2-1", "__BLKVM_BASE=601") in new stack
-- Executing [601@ext-group:7] Set("DAHDI/2-1", "DB(BLKVM/601/DAHDI/2-1)=TRUE") in new stack
-- Executing [601@ext-group:8] Set("DAHDI/2-1", "RRNODEST=") in new stack
-- Executing [601@ext-group:9] Set("DAHDI/2-1", "__NODEST=601") in new stack
-- Executing [601@ext-group:10] GosubIf("DAHDI/2-1", "0?sub-rgsetcid,s,1") in new stack
-- Executing [601@ext-group:11] Set("DAHDI/2-1", "RecordMethod=Group") in new stack
-- Executing [601@ext-group:12] Macro("DAHDI/2-1", "record-enable,105-106-107,Group") in new stack
-- Executing [s@macro-record-enable:1] GotoIf("DAHDI/2-1", "1?check") in new stack
-- Goto (macro-record-enable,s,4)
-- Executing [s@macro-record-enable:4] ExecIf("DAHDI/2-1", "0?MacroExit()") in new stack
-- Executing [s@macro-record-enable:5] GotoIf("DAHDI/2-1", "1?Group:OUT") in new stack
-- Goto (macro-record-enable,s,6)
-- Executing [s@macro-record-enable:6] Set("DAHDI/2-1", "LOOPCNT=3") in new stack
-- Executing [s@macro-record-enable:7] Set("DAHDI/2-1", "ITER=1") in new stack
-- Executing [s@macro-record-enable:8] GotoIf("DAHDI/2-1", "0?continue") in new stack
-- Executing [s@macro-record-enable:9] Set("DAHDI/2-1", "TEXTEN=105") in new stack
-- Executing [s@macro-record-enable:10] NoOp("DAHDI/2-1", "Recording enable for 105") in new stack
-- Executing [s@macro-record-enable:11] Set("DAHDI/2-1", "CALLFILENAME=g105-20140115-120501-1389773096.294") in new stack
-- Executing [s@macro-record-enable:12] Goto("DAHDI/2-1", "record") in new stack
-- Goto (macro-record-enable,s,23)
-- Executing [s@macro-record-enable:23] MixMonitor("DAHDI/2-1", "g105-20140115-120501-1389773096.294.wav,,") in new stack
-- Executing [s@macro-record-enable:24] Set("DAHDI/2-1", "CDR(userfield)=audio:g105-20140115-120501-1389773096.294.wav") in new stack
-- Executing [s@macro-record-enable:25] MacroExit("DAHDI/2-1", "") in new stack
-- Executing [601@ext-group:13] Set("DAHDI/2-1", "RingGroupMethod=ringall") in new stack
-- Executing [601@ext-group:14] Macro("DAHDI/2-1", "dial,20,tr,105-106-107") in new stack
-- Executing [s@macro-dial:1] GotoIf("DAHDI/2-1", "1?dial") in new stack
-- Goto (macro-dial,s,3)
-- Executing [s@macro-dial:3] AGI("DAHDI/2-1", "dialparties.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/dialparties.agi
== Begin MixMonitor Recording DAHDI/2-1
dialparties.agi: Starting New Dialparties.agi
dialparties.agi: Caller ID name is 'unknown' number is 'unknown'
> dialparties.agi: USE_CONFIRMATION: 'FALSE'
> dialparties.agi: RINGGROUP_INDEX: ''
dialparties.agi: Methodology of ring is 'ringall'
-- dialparties.agi: Added extension 105 to extension map
-- dialparties.agi: Added extension 106 to extension map
-- dialparties.agi: Added extension 107 to extension map
-- dialparties.agi: Extension 105 cf is disabled
-- dialparties.agi: Extension 106 cf is disabled
-- dialparties.agi: Extension 107 cf is disabled
-- dialparties.agi: Extension 105 do not disturb is disabled
-- dialparties.agi: Extension 106 do not disturb is disabled
-- dialparties.agi: Extension 107 do not disturb is disabled
> dialparties.agi: extnum 105 has: cw: 0; hascfb: 0 [] hascfu: 0 []
dialparties.agi: EXTENSION_STATE: 4 (UNAVAILABLE)
dialparties.agi: Extension 105 has ExtensionState: 4
-- dialparties.agi: Checking CW and CFB status for extension 105
-- dialparties.agi: DbDel CALLTRACE/105 - Caller ID is not defined
> dialparties.agi: extnum 106 has: cw: 0; hascfb: 0 [] hascfu: 0 []
dialparties.agi: EXTENSION_STATE: 0 (NOT_INUSE)
dialparties.agi: Extension 106 has ExtensionState: 0
-- dialparties.agi: Checking CW and CFB status for extension 106
-- dialparties.agi: DbDel CALLTRACE/106 - Caller ID is not defined
> dialparties.agi: extnum 107 has: cw: 0; hascfb: 0 [] hascfu: 0 []
dialparties.agi: EXTENSION_STATE: 0 (NOT_INUSE)
dialparties.agi: Extension 107 has ExtensionState: 0
-- dialparties.agi: Checking CW and CFB status for extension 107
-- dialparties.agi: DbDel CALLTRACE/107 - Caller ID is not defined
-- dialparties.agi: Filtered ARG3: 105-106-107
> dialparties.agi: NODEST: 601 adding M(auto-blkvm) to dialopts: trM(auto-blkvm)
> dialparties.agi: NODEST: 601 blkvm enabled macro already in dialopts: trM(auto-blkvm)
-- <DAHDI/2-1>AGI Script dialparties.agi completed, returning 0
-- Executing [s@macro-dial:7] Dial("DAHDI/2-1", "SIP/105&SIP/106&SIP/107,20,trM(auto-blkvm)") in new stack
[2014-01-15 12:05:01] WARNING[10074]: app_dial.c:2345 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
[2014-01-15 12:05:01] WARNING[10074]: app_dial.c:2345 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/106
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/107
-- SIP/106-000000e5 connected line has changed. Saving it until answer for DAHDI/2-1
-- SIP/107-000000e6 connected line has changed. Saving it until answer for DAHDI/2-1
-- SIP/106-000000e5 is ringing
-- SIP/107-000000e6 is ringing
-- Remote UNIX connection
-- Remote UNIX connection disconnected
== Spawn extension (macro-dial, s, 7) exited non-zero on 'DAHDI/2-1' in macro 'dial'
== Spawn extension (ext-group, 601, 14) exited non-zero on 'DAHDI/2-1'
-- Executing [h@ext-group:1] Macro("DAHDI/2-1", "hangupcall,") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("DAHDI/2-1", "0?endmixmoncheck") in new stack
-- Executing [s@macro-hangupcall:2] Set("DAHDI/2-1", "MIXMON_CALLFILENAME=/var/spool/asterisk/monitor/g105-20140115-120501-1389773096.294.wav") in new stack
-- Executing [s@macro-hangupcall:3] GotoIf("DAHDI/2-1", "1?defaultmixmondir") in new stack
-- Goto (macro-hangupcall,s,5)
-- Executing [s@macro-hangupcall:5] System("DAHDI/2-1", "test -e /var/spool/asterisk/monitor/g105-20140115-120501-1389773096.294.wav") in new stack
-- Executing [s@macro-hangupcall:6] NoOp("DAHDI/2-1", "SYSTEMSTATUS = SUCCESS") in new stack
-- Executing [s@macro-hangupcall:7] GotoIf("DAHDI/2-1", "1?endmixmoncheck") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] NoOp("DAHDI/2-1", "End of MIXMON check") in new stack
-- Executing [s@macro-hangupcall:10] GotoIf("DAHDI/2-1", "1?nomeetmemon") in new stack
-- Goto (macro-hangupcall,s,28)
-- Executing [s@macro-hangupcall:28] NoOp("DAHDI/2-1", "End of MEETME check") in new stack
-- Executing [s@macro-hangupcall:29] GotoIf("DAHDI/2-1", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,34)
-- Executing [s@macro-hangupcall:34] NoOp("DAHDI/2-1", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:35] GotoIf("DAHDI/2-1", "1?noautomon2") in new stack
-- Goto (macro-hangupcall,s,41)
-- Executing [s@macro-hangupcall:41] NoOp("DAHDI/2-1", "MONITOR_FILENAME=") in new stack
-- Executing [s@macro-hangupcall:42] GotoIf("DAHDI/2-1", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,45)
-- Executing [s@macro-hangupcall:45] GotoIf("DAHDI/2-1", "0?skipblkvm") in new stack
-- Executing [s@macro-hangupcall:46] NoOp("DAHDI/2-1", "Cleaning Up Block VM Flag: BLKVM/601/DAHDI/2-1") in new stack
-- Executing [s@macro-hangupcall:47] NoOp("DAHDI/2-1", "Deleting: BLKVM/601/DAHDI/2-1 TRUE") in new stack
-- Executing [s@macro-hangupcall:48] GotoIf("DAHDI/2-1", "1?theend") in new stack
-- Goto (macro-hangupcall,s,50)
-- Executing [s@macro-hangupcall:50] AGI("DAHDI/2-1", "hangup.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/hangup.agi
-- <DAHDI/2-1>AGI Script hangup.agi completed, returning 0
-- Executing [s@macro-hangupcall:51] Hangup("DAHDI/2-1", "") in new stack
== Spawn extension (macro-hangupcall, s, 51) exited non-zero on 'DAHDI/2-1' in macro 'hangupcall'
== Spawn extension (ext-group, h, 1) exited non-zero on 'DAHDI/2-1'
-- Hanging up on 'DAHDI/2-1'
-- Hungup 'DAHDI/2-1'
== MixMonitor close filestream
== End MixMonitor Recording DAHDI/2-1
> doing dnsmgr_lookup for 'sip.zadarma.com'
> ast_get_srv: SRV lookup for '_sip._udp.sip.zadarma.com' mapped to host sip0.zadarma.com, port 5060
> doing dnsmgr_lookup for 'sip.zadarma.com'
> ast_get_srv: SRV lookup for '_sip._udp.sip.zadarma.com' mapped to host sip0.zadarma.com, port 5060



если убрать правило ани сид/ани дид и позвонить - приятным голосом говорят что номер который вызывается не доступен (астериск говорит)
вот лог консоли
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
-- Starting simple switch on 'DAHDI/2-1'
-- Executing [s@from-pstn:1] NoOp("DAHDI/2-1", "No DID or CID Match") in new stack
-- Executing [s@from-pstn:2] Answer("DAHDI/2-1", "") in new stack
-- Executing [s@from-pstn:3] Wait("DAHDI/2-1", "2") in new stack
-- Executing [s@from-pstn:4] Playback("DAHDI/2-1", "ss-noservice") in new stack
-- <DAHDI/2-1> Playing 'ss-noservice.gsm' (language 'en')
-- Executing [s@from-pstn:5] SayAlpha("DAHDI/2-1", "") in new stack
-- Executing [s@from-pstn:6] Hangup("DAHDI/2-1", "") in new stack
== Spawn extension (from-pstn, s, 6) exited non-zero on 'DAHDI/2-1'
-- Executing [h@from-pstn:1] Macro("DAHDI/2-1", "hangupcall,") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("DAHDI/2-1", "1?endmixmoncheck") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] NoOp("DAHDI/2-1", "End of MIXMON check") in new stack
-- Executing [s@macro-hangupcall:10] GotoIf("DAHDI/2-1", "1?nomeetmemon") in new stack
-- Goto (macro-hangupcall,s,28)
-- Executing [s@macro-hangupcall:28] NoOp("DAHDI/2-1", "End of MEETME check") in new stack
-- Executing [s@macro-hangupcall:29] GotoIf("DAHDI/2-1", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,34)
-- Executing [s@macro-hangupcall:34] NoOp("DAHDI/2-1", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:35] GotoIf("DAHDI/2-1", "1?noautomon2") in new stack
-- Goto (macro-hangupcall,s,41)
-- Executing [s@macro-hangupcall:41] NoOp("DAHDI/2-1", "MONITOR_FILENAME=") in new stack
-- Executing [s@macro-hangupcall:42] GotoIf("DAHDI/2-1", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,45)
-- Executing [s@macro-hangupcall:45] GotoIf("DAHDI/2-1", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,48)
-- Executing [s@macro-hangupcall:48] GotoIf("DAHDI/2-1", "1?theend") in new stack
-- Goto (macro-hangupcall,s,50)
-- Executing [s@macro-hangupcall:50] AGI("DAHDI/2-1", "hangup.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/hangup.agi
-- <DAHDI/2-1>AGI Script hangup.agi completed, returning 0
-- Executing [s@macro-hangupcall:51] Hangup("DAHDI/2-1", "") in new stack
== Spawn extension (macro-hangupcall, s, 51) exited non-zero on 'DAHDI/2-1' in macro 'hangupcall'
== Spawn extension (from-pstn, h, 1) exited non-zero on 'DAHDI/2-1'
-- Hanging up on 'DAHDI/2-1'
-- Hungup 'DAHDI/2-1'
-- Remote UNIX connection
-- Remote UNIX connection disconnected

чувствую что гдето что то не сделал
ибо не работает )
ну и на самом деле я на 99 процентов уверен что неправильно сделал в первом пункте, но не понимаю как там сделать по другому / правильно
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Входящая маршрутизация на основе порта в FXO PCI-плате

Сообщение ded »

Ещё раз читаем вместе по слогам -
Обязательно указывать контекст from-zaptel для получения нужного результата.
context = from-zaptel
А у вас исполняется в контексте from-pstn
[s@from-pstn:1]
pstudiopuh писал(а):в каналы вписал
1,2,3,4 (не знаю почему так, альтернатив что туда писать - в голову не пришло, вроде как вписал эти цифры в соответствии с номерами дырок на плате FXO. тоесть номер канала 1 реально соответствует дырке 1 в плате и реально соответствует номеру телефона который висит на этой паре меди, тоесть более логичного решения мне в голову не пришло)
с этим пунктом всё правильно. И скоро, совсем скоро, будет понятней то что сыпется в консоли - DAHDI/2 это не просто буквы цифры, а именно вторая дырочка принимает звонок.
pstudiopuh
Сообщения: 14
Зарегистрирован: 01 апр 2013, 13:26

Re: Входящая маршрутизация на основе порта в FXO PCI-плате

Сообщение pstudiopuh »

Спасибо большое
поправил фаилы
dahdi-channels.conf - поменял контекст с ptsn на zaptel во всех номерах каналов (4)
chan_dahdi.conf - поменял глобальную переменную с ptsn на zaptel

на всякий случай сделал тоже самое в фаиле
chan_dahdi.conf.template - хз чо за фаил. у меня эластикс - он там есть

все заработало

спасибо огромное
pstudiopuh
Сообщения: 14
Зарегистрирован: 01 апр 2013, 13:26

Re: Входящая маршрутизация на основе порта в FXO PCI-плате

Сообщение pstudiopuh »

теперь столкнулся с такой проблемой
фаил dahdi-channels.conf в котором я прописал контекст zaptel вместо ptsn после перезагрузки (не reload) восстанавливается в исходное значение
тоесть контекст становится опять ptsn ну и группы линий для исходящего вызова становятся все 0 а не те что я присвоил
эластикс
april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

Re: Входящая маршрутизация на основе порта в FXO PCI-плате

Сообщение april22 »

custom_context
их правильно править ;-)
Своими вопросами , вы загоняете меня в ГУГЛЬ.
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Входящая маршрутизация на основе порта в FXO PCI-плате

Сообщение ded »

Нет.
Правильно всё сделать в chan_dahdi.conf и этого хватит.
Если совсем уж правильно - есть модуль DAHDI conf в составе freePBX, там всё из вэбки можно сделать по той же логике.
pstudiopuh
Сообщения: 14
Зарегистрирован: 01 апр 2013, 13:26

Re: Входящая маршрутизация на основе порта в FXO PCI-плате

Сообщение pstudiopuh »

а где его найти? в фаил менеджере самого эластикса нет такого фаила
custom_context

в chan_dahdi.conf
какраз таки ничего не меняется, но ни смотря на то что там указано про zaptel , в лог сыпется ptsn и не работает вызов.
если поменять непосредственно dahdi-channels.conf (который сам меняется) то все работает как надо
в нем самом сверху англиским по белому написано что он самогенерируемый и все что я поменял при перезагрузке потеряется, и что инфу он берет из /usr/sbin/dahdi_genconf
но там ничего что указывало бы на ptsn-zaptel я не увидел
вот текст dahdi-chanels.conf
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
; Autogenerated by /usr/sbin/dahdi_genconf on Wed Jan 29 14:16:43 2014
; If you edit this file and execute /usr/sbin/dahdi_genconf again,
; your manual changes will be LOST.
; Dahdi Channels Configurations (chan_dahdi.conf)
;
; This is not intended to be a complete chan_dahdi.conf. Rather, it is intended
; to be #include-d by /etc/chan_dahdi.conf that will include the global settings
;

; Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER)
;;; line="1 WCTDM/0/0 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-zaptel
channel => 1
callerid=
group=
context=default

;;; line="2 WCTDM/0/1 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=1
context=from-zaptel
channel => 2
callerid=
group=
context=default

;;; line="3 WCTDM/0/2 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=1
context=from-zaptel
channel => 3
callerid=
group=
context=default

;;; line="4 WCTDM/0/3 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=1
context=from-zaptel
channel => 4
callerid=
group=
context=default
а вот /usr/sbin/dahdi_genconf
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
[! /usr/bin/perl -w
#
# Written by Oron Peled <oron@actcom.co.il>
# Copyright (C) 2007, Xorcom
# This program is free software; you can redistribute and/or
# modify it under the same terms as Perl itself.
#
# $Id: dahdi_genconf 10194 2011-09-09 10:59:39Z tzafrir $
#
use strict;
use File::Basename;
BEGIN { my $dir = dirname($0); unshift(@INC, "$dir", "$dir/perl_modules"); }

use Getopt::Std;
use Dahdi;
use Dahdi::Xpp;
use Dahdi::Config::Gen;
use Dahdi::Config::Params;

my $version = '1'; # Functionality version (integer)
my $revision = '$Revision: 10194 $';

my %opts;

sub set_defaults {
my $default_file = $ENV{GENCONF_PARAMETERS} || "/etc/dahdi/genconf_parameters";
my $params = Dahdi::Config::Params->new($default_file);
#$params->dump;
if($opts{v}) {
print "Default parameters from ", $params->{GENCONF_FILE}, "\n";
}
my $gconfig = Dahdi::Config::Gen->new($params);
#$gconfig->dump;
return $gconfig;
}

sub spans_prep($@) {
my $gconfig = shift || die;
my @spans = @_;
foreach my $span (@spans) {
if($span->is_pri || $span->is_bri) {
$span->pri_set_fromconfig($gconfig);
}
}
}

sub generator_list($) {
my $gconfig = shift || die;
my @genlist;
my @genlist;

if (@ARGV) {
for my $gen (@ARGV) {
push @genlist, $gen;
}
} else {
# No files given. Use the defaults.
@genlist = ('system', 'chandahdi');
if($gconfig->{'gsm_type'} eq 'yes') {
push @genlist, 'chanextra';
}
if($gconfig->{'pri_connection_type'} eq 'R2') {
push @genlist, 'unicall';
}
}
return @genlist;
}

sub parse_genopts($) {
my $optstr = shift;
my %genopts;

$optstr = '' unless defined $optstr;
foreach my $o (split(/,/, $optstr)) {
my ($k, $v) = split(/=/, $o, 2);
$v = 1 unless defined $v and $v;
$genopts{$k} = $v;
}
return %genopts;
}

sub generate_files($@) {
my $gconfig = shift || die;
my @spans = @_;
my @generators = generator_list($gconfig);

for my $gen (@generators) {
my ($name, $optstr) = split(/=/, $gen, 2);
die "Illegal name '$name'\n" unless $name =~ /^\w+$/;
$name =~ s/(.)(.*)/\u$1\L$2/;
my %genopts = parse_genopts($optstr);
$genopts{'freepbx'} = 'yes' if $opts{'F'};
if(defined $opts{'v'}) {
$genopts{'verbose'} = $opts{v};
}
$gconfig->run_generator($name, \%genopts, @spans);
}
}


getopts('vVF', \%opts) || die "$0: Bad option\n";
if($opts{'V'}) {
my $revstr = $revision;
$revstr =~ s/[^$]*\$[^:]+:\s*//;
$revstr =~ s/\s*\$.*//;
print "$0: version=$version revision=$revstr\n";
exit 0;
}

my $gconfig = set_defaults;
my @spans = Dahdi::spans();
spans_prep($gconfig, @spans);
generate_files($gconfig, @spans);

__END__

=head1 NAME

dahdi_genconf - Generate configuration for Dahdi channels.

=head1 SYNOPSIS

dahdi_genconf [options] [generator...]

=head1 DESCRIPTION

This script generate configuration files for Dahdi hardware.
It uses two information sources:

=over 4

=item Hardware

The actual Dahdi hardware is automatically detected on the host.

=item /etc/dahdi/genconf_parameters

A configuration file that supplements the hardware information.
Its location may be overridden via the C<GENCONF_PARAMETERS> environment
variable.

=back

The dahdi_genconf script can generate various kinds of configuration files
as specified by the generator arguments. Each generator is a perl class
in Dahdi::Config::Gen namespace. The generator names on the command line
are the class names in lowercase. The following generators are currently implemented: system, chandahdi, unicall, users.
For further documentation on each, please user perldoc on the relevant
class. E.g: C<perldoc Dahdi::Config::Gen::Chandahdi>

Each generator on the command line may be passed custom options by assigning
a comma separated list of options to the generator name. E.g:

dahdi_genconf system chandahdi=verbose unicall

=head2 Global options:

=over 4

=item -V

Version -- print version string and exit.

=item -v

Verbose -- sets the C<'verbose'> option for all generators.

=item -F

Freepbx -- sets the C<'freepbx'> option for all generators.
Currently, chandahdi is affected.


=back

=head2 Implementation notes:

=over 4

=item *

F<genconf_parameters> parsing is done via C<Dahdi::Config::Params>.
An object representing the parsed data is instantiated by:
C<Dahdi::Config::Params-E<gt>new()>.
The C<item()> method of this object contains all the hard coded
defaults of the configuration directives.

=item *

A configuration object is instantiated by C<Dahdi::Config::Gen-E<gt>new($params)>.
The mapping of configuration directives into semantic configuration is
done in the constructor.

=item *

A single generator is run via the the C<run_generator()> method of the
configuration object.

=back

[spoiler]
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
; Autogenerated by /usr/sbin/dahdi_genconf on Wed Jan 29 14:16:43 2014
; If you edit this file and execute /usr/sbin/dahdi_genconf again,
; your manual changes will be LOST.
; Dahdi Channels Configurations (chan_dahdi.conf)
;
; This is not intended to be a complete chan_dahdi.conf. Rather, it is intended
; to be #include-d by /etc/chan_dahdi.conf that will include the global settings
;

; Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER)
;;; line="1 WCTDM/0/0 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-zaptel
channel => 1
callerid=
group=
context=default

;;; line="2 WCTDM/0/1 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=1
context=from-zaptel
channel => 2
callerid=
group=
context=default

;;; line="3 WCTDM/0/2 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=1
context=from-zaptel
channel => 3
callerid=
group=
context=default

;;; line="4 WCTDM/0/3 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=1
context=from-zaptel
channel => 4
callerid=
group=
context=default


на сколько я понял это кусок кода на перле, но вот вьехать откуда он берет переменные для значения контекстов уже выше моих сил
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Входящая маршрутизация на основе порта в FXO PCI-плате

Сообщение ded »

Вот такой вопрос возник?
В платном суппорте подскажут.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH