ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Оптимизация dialplan'а

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

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

Re: Оптимизация dialplan'а

Сообщение diman321 » 08 июн 2020, 18:28

Ну так не честно, хотелось ничего не делать и что бы всё само случилось, а тут Иммануил Кант внезапно :)

Разобрался как чего, работает. Остался один вопрос. Сейчас диалплан выглядит так:
[Показать] Спойлер:
Код: выделить все
[ 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 'from-cisco' created by 'pbx_config' ]
  '_XXXXX' =>       1. Dial(SIP/${EXTEN})                         [extensions.conf:21]

[ Context 'call-out' created by 'pbx_config' ]
  '_XXXXX' =>       1. ChanIsAvail(SIP/${EXTEN}&SIP/CISCO_GW/${EXTEN}) [extensions.conf:11]
                    2. NoOp(TEST: ${AVAILCHAN})                   [extensions.conf:12]
                    3. Set(theChannel=${CUT(AVAILCHAN,,1)})       [extensions.conf:14]
                    4. NoOp(TEST: ${theChannel})                  [extensions.conf:15]
                    5. Dial(${theChannel}/${EXTEN},,t)            [extensions.conf:16]
  Include =>        'handup-sip'                                  [pbx_config]

[ Context 'handup-sip' created by 'pbx_config' ]
  '_X!' =>          1. HangUp()                                   [extensions.conf:8]

[ Context 'default' created by 'pbx_config' ]

-= 5 extensions (15 priorities) in 5 contexts. =-


Когда строкой Set(theChannel=${CUT(AVAILCHAN,,1)}) я убираю идентификатор сессии, то в случае с уходом на АТС я получаю SIP/CISCO_GW, а в случае с внутренним абонентом получаю SIP/НОМЕР. Первый случай в Dial выглядит правильно (SIP/CISCO_GW/НОМЕР), а второй не очень правильно (SIP/НОМЕР/НОМЕР), оно в принципе работает, звонок проходит. На сколько это критично?
diman321
 
Сообщений: 8
Зарегистрирован: 28 май 2020, 13:01

Re: Оптимизация dialplan'а

Сообщение ded » 08 июн 2020, 20:59

Не критично, но можно пригладить:
Dial(${theChannel:5}${EXTEN},,t)

Или для красоты можно бы использовать
ExecIf(${AVAILCHAN} = допишите сами)Dial(SIP/CISCO_GW/${EXTEN},,t)
ExecIf(${AVAILCHAN} != допишите сами)Dial(SIP/${EXTEN},,t)

и в конце
exten => h,1,Hangup()
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: Оптимизация dialplan'а

Сообщение diman321 » 16 июн 2020, 15:16

Почитал на досуге документацию, нашел там про SIPPEER, переделал на него, получилось короче:

Код: выделить все
[ Context 'call-out' created by 'pbx_config' ]
   '_XXXXX' =>      1. NoOp(TEST: ${SIPPEER(${EXTEN},status)})    [extensions.conf:18]
                    2. ExecIf($["${SIPPEER(${EXTEN},status)}" = ""]?Dial(SIP/CISCO_GW/${EXTEN})) [extensions.conf:19]
                    3. ExecIf($["${SIPPEER(${EXTEN},status):0:2}" = "OK"]?Dial(SIP/${EXTEN})) [extensions.conf:20]
  Include =>        'handup-sip'                                  [pbx_config]

[ Context 'handup-sip' created by 'pbx_config' ]
  '_X!' =>          1. HangUp()                                   [extensions.conf:8]


Затея, такая: если пира нет (внешний абонент), то сиппир вернет пустоту, в этом случае звоним через циску, если сиппир возвращает ОК, то звоним через внутренний сип. Какие подводные камни у такого решения?
diman321
 
Сообщений: 8
Зарегистрирован: 28 май 2020, 13:01

Re: Оптимизация dialplan'а

Сообщение ded » 16 июн 2020, 17:10

Подводные камни - галька, надводные - ракушечник, кораллы тож.
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: Оптимизация dialplan'а

Сообщение diman321 » 16 июн 2020, 19:20

ded писал(а):Подводные камни - галька, надводные - ракушечник, кораллы тож.


Не знал, что кораллы надводные, дела... :)

Буду считать, что всё норм. Спасибо за помощь!
diman321
 
Сообщений: 8
Зарегистрирован: 28 май 2020, 13:01

Пред.

Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

cron
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH