AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

[РЕШЕНО] FreePBX и аналоговые линии DAHDI (как настроить входящую маршрутизацию)

Newbies/FAQ Forum 5 сообщений 25.08.2011 18:50 - 31.08.2011 14:13
#1 25.08.2011 18:50

На всякий случай тем кто идет по этому пути. Все крайне просто.

Допустим у вас есть пачка аналоговых (FXO) каналов приходящих через DAHDI.
По умолчанию все приходящие с них звонки приходят как ноунейм, то есть никакой логики построить нельзя.

Что бы логика была, надо зайти в меню Zap Channels DIDs и там просто прописать DIDы соответственно вашим каналам. Потом зайти в DAHDI Confg (модуль FreePBXа) и для нужных каналов прописать контекст from-dahdi. И все.
А дальше уже имея хоть какие то идентификационные данные можно рулить входящими вызовами.

P.S.
гыыы, решение пришло когда уже почти дописал свои диалпланы реализующие эту функциональность BigGrin3)))))))
глупо конечно, но никто ведь не говорил что будет легко Wink Как правило именно на глупых моментах мы и спотыкаемся.

Added after 15 minutes:

Да, еще
после установки модуля DAHDI config в FreePBX, у вас будут переписаны все конфиги касающиеся каналов. Изначально у меня был включаемый файл dahdi_channels.conf, который включался в chan_dahdi.conf. Так вот, эта зараза все покорежила и поменял как ей удобно.

что бы все заработало как было, я добавил это файл в chan_dahdi_channels_custom.conf, но ВАЖНО!!! добавить надо только описание каналов, никаких строк типа [channels] быть не должно! а так же все что касается общего описания работы всех каналов надо прописать в файл chan_dahdi_general_custom.conf, тоже без [general] и т.п. Эти файлы включаются в chan_dahdi.conf в нужные места и там уже есть все необходимые объявления секторов конфигурации.
#2 30.08.2011 06:52

Здравствуйте! А не могли бы Вы объяснить на конфиг вайлах без веб морды. Как раз пытаюсь разрулить данную проблему
#3 30.08.2011 07:47

не не могу, к сожалению я сразу поставил freepbx и она внесла в основные конфиги свою логику.
Могу лишь подсказать главную мысль куда смотреть.
Но вообще то я так понял в объявлении канала уже есть свое имя для каждого. Макросы freebpx работают именно с ними, в зависимости от имени канала они передают управление дальше. Там в общем то все просто, вы поиграйтесь с переменными, и поглядите что консоль астериска выводит, там все вполне понятно. Может чуть позже выложу пример макроса который разруливает каналы.
#4 30.08.2011 08:15

спасибо! Если не сложно, то выложите. Попробую разобраться
#5 31.08.2011 14:13

Вот как стандарный скрипт разбирает звонки с устройств DAHDI:

[from-dahdi]
include => from-dahdi-custom
exten => _X.,1,Set(DID=${EXTEN})
exten => _X.,n,Goto(s,1)
exten => s,1,Noop(Entering from-dahdi with DID == ${DID})
exten => s,n,Ringing()
exten => s,n,Set(DID=${IF($["${DID}"= ""]?s:${DID})})
exten => s,n,Noop(DID is now ${DID})
exten => s,n,GotoIf($["${CHANNEL:0:5}"="DAHDI"]?dahdiok:checkzap)
exten => s,n(checkzap),GotoIf($["${CHANNEL:0:3}"="Zap"]?zapok:neither)
exten => s,n(neither),Goto(from-pstn,${DID},1)
exten => s,n,Macro(Hangupcall,dummy)
exten => s,n(dahdiok),Noop(Is a DAHDi Channel)
exten => s,n,Set(CHAN=${CHANNEL:6})
exten => s,n,Set(CHAN=${CUT(CHAN,-,1)})
exten => s,n,Macro(from-dahdi-${CHAN},${DID},1)
exten => s,n,Noop(Returned from Macro from-dahdi-${CHAN})
exten => s,n,Goto(from-pstn,${DID},1)
exten => s,n(zapok),Noop(Is a Zaptel Channel)
exten => s,n,Set(CHAN=${CHANNEL:4})
exten => s,n,Set(CHAN=${CUT(CHAN,-,1)})
exten => s,n,Macro(from-dahdi-${CHAN},${DID},1)
exten => s,n,Noop(Returned from Macro from-dahdi-${CHAN})
exten => s,n,Goto(from-pstn,${DID},1)


Макро в котором устанавливается DID канала в 15 строке, в данном примере звонок пришел на 5 DAHDI канал, соответственно выбирается макро для него:

[macro-from-dahdi-5]
include => macro-from-dahdi-5-custom
exten => s,1,Noop(Entering macro-from-dahdi-5 with DID = ${DID} and setting to: 901)
exten => s,n,Set(__FROM_DID=901)
exten => s,n,Goto(from-trunk,901,1)