Страница 2 из 5

Re: FreePBX соntext

Добавлено: 22 авг 2012, 18:09
ded
Можно почитать об этом очень подробно в книгах по Астериск.
Не надо рассчитывать на индивидуальных раъяснителей.

Re: FreePBX соntext

Добавлено: 23 авг 2012, 21:55
zoleg
Возникла необходимость заделать для себя подобие саппорта. При чем походу попробовать freeBPX для создания диалплана через веб интерфейс.
Скажу я вам эта наука неподъемная. После чистого астериска невозможно понять логики или алгоритма создания диалплана. Какой то непонятный "черный ящик" в который непонятно что входит и непонятно что выходит. Все мануалы рассказывают как вводить то или иное, но ни в одном мане не написано как через вебинтерфейс делать простые вещи - маршруты. Какие то DID для привязки или чего. Вообще что это такое и как оно все связано.
Мля, за день так и не разобрался с элементарным Goto куда надо.
Есть ли возможность с помощью freePBX накатать чего либо похожее на это? Или не стоит даже заморачиваться?

Код: Выделить всё

[incoming-gsm]
include => incoming-gsm-sms
include => incominng-gsm-ussd

exten => s,1,NoOp(CALLERID = ${CALLERID(num)})
exten => s,n(lbl_incoming-gsm_0),Set(GLOBAL(CID)=${CALLERID(num):-10})
exten => s,n,Set(_CALLERID(num)=${CALLERID(num):-10})
exten => s,n,Verbose(10,!! Printing channel ${CHANNEL} !!)
exten => s,n,AGI(/usr/share/call/call,acr,${CID},${CALLERID(name)},${CHANNEL})
exten => s,n,AGI(/usr/share/call/call,chblm,${CID},${CALLERID(name)})
exten => s,n,GotoIf($["${CALLBACKGSM}" = "OFF"]?:lbl_incoming-gsm_1)
exten => s,n,GotoIf($["${CBGSMOTHER}" = "OFF"]?:lbl_incoming-gsm_3)
exten => s,n(lbl_incoming-gsm_2),AGI(/usr/share/call/call,gin,${CID},${CALLERID(name)})
exten => s,n,Verbose(10,Client of company ${dbname} count rows ${idscount})
exten => s,n,Set(errorscript=OK)
exten => s,n,AGI(/usr/share/call/who-is-who,${CID},${idsdb},${idsname})
exten => s,n,Verbose(10,Result is content ${tocontext}, extension ${toextension})
exten => s,n,GotoIf($[${errorscript} = 1]?:lbl_incoming-gsm_4)
exten => s,n,Goto(incedental-incoming-calls,s,1)
exten => s,n(lbl_incoming-gsm_4),Goto(${tocontext},${toextension},1)
exten => s,n(lbl_incoming-gsm_3),AGI(/usr/share/call/call,ops,${CID})
exten => s,n,Verbose(10,Call from OPSOS - ${OPSOS} voice -${opsosvoice})
exten => s,n,GotoIf($["${OPERTYPE}" = "GSM"]?:lbl_incoming-gsm_1)
exten => s,n,Goto(lbl_incoming-gsm_2)
exten => s,n(lbl_incoming-gsm_1),Goto(callback,s,1)
exten => fcb,1,NoOp(DIALEDID = ${DIALEDID})
exten => fcb,n,Set(CALLERID(num)=${DIALEDID:-10})
exten => fcb,n,Goto(s,lbl_incoming-gsm_0)
[first-registration-city]
exten => s,1,NoOp(Called from channel = ${CHANNEL} CID=${CID} dbname =${idsdb} idsname={idsname} idscityen=${idscityen} idsid =${idsid} device=${device})
exten => s,n,Verbose(10,Add to dial plan params device =${device}  idsid=${idsid} idscityen = ${idscityen}  idsdb= ${idsdb} idsname = ${idsname})
exten => s,n,Playback(taxi/${idsname}/${DEFAULTLANGUAGE}/hallow)
exten => s,n,GotoIf($["${PLAYBACKSTATUS}" = "SUCCESS"]?:lbl_first-registration-city_0)
exten => s,n(lbl_first-registration-city_0),Playback(taxi/${idsname}/firtst-call-noreg)
exten => s,n,GotoIf($["${PLAYBACKSTATUS}" = "SUCCESS"]?:lbl_first-registration-city_1)
exten => s,n(lbl_first-registration-city_1),Set(TIMEOUT(digit)=120)
exten => s,n,Background(${idsname}/first-call-ivr-checknum&${idsname}/first-call-ivr-checknum2&${idsname}/info-nodtmf)
exten => s,n,Wait(0.1)
exten => s,n,Set(GLOBAL(I)=MATH(${I}+1))
exten => s,n,Verbose(10,Set I=${I})
exten => s,n,GotoIf($["${I}" >= "2"]?:lbl_first-registration-city_1)
exten => s,n,AGI(/usr/share/call/call,acb,${CID},1,${idscityen},${idsdb},${idsname})
exten => s,n(lbl_first-registration-city_2),GotoIf($["${WORKINGTIME}" = "OFF"]?:lbl_first-registration-city_4)
exten => s,n(lbl_first-registration-city_3),Goto(first-registration-city-nodtmf,day,1)
exten => s,n(lbl_first-registration-city_4),GotoIfTime(01:00-7:30,*,*,*?lbl_first-registration-city_3)
exten => s,n,Goto(first-registration-city-nodtmf,day,1)
exten => *,1(lbl_first-registration-city_5),Wait(1)
exten => *,n,AGI(/usr/share/call/call,acb,${CID},7,${idscityen},${idsdb},${idsname})
exten => *,n,AGI(/usr/share/call/call,ops,${CID})
exten => *,n,Playback(general/first-call-thks-reg)
exten => *,n,GotoIf($["${PLAYBACKSTATUS}" = "SUCCESS"]?:lbl_first-registration-city_6)
exten => *,n(lbl_first-registration-city_6),Playback(general/chan-${opsosvoice})
exten => *,n,GotoIf($["${PLAYBACKSTATUS}" = "SUCCESS"]?:s,lbl_first-registration-city_2)
exten => *,n,Goto(s,lbl_first-registration-city_2)
exten => #,1,Goto(*,lbl_first-registration-city_5)
exten => 1,1,Goto(*,lbl_first-registration-city_5)
exten => 2,1,Goto(*,lbl_first-registration-city_5)
exten => 3,1,Goto(*,lbl_first-registration-city_5)
exten => 4,1,Goto(*,lbl_first-registration-city_5)
exten => 5,1,Goto(*,lbl_first-registration-city_5)
exten => 6,1,Goto(*,lbl_first-registration-city_5)
exten => 7,1,Goto(*,lbl_first-registration-city_5)
exten => 8,1,Goto(*,lbl_first-registration-city_5)
exten => 9,1,Goto(*,lbl_first-registration-city_5)
exten => zagl,1,System(/var/lib/asterisk/agi-bin/callback_city.sh "${CID} ${OPSOS} ${CALLERID(num)} ${idsid} ${idscityen} ${idsdb} ${idsname}")
exten => zagl,n,GotoIf($["${SYSTEMSTATUS}" = "FAILURE"]?lbl_first-registration-city_7:)
exten => zagl,n,GotoIf($["${SYSTEMSTATUS}" = "APPERROR"]?lbl_first-registration-city_8:)
exten => zagl,n,Busy(4)
exten => zagl,n(lbl_first-registration-city_7),Verbose(ERROR IN first-registration-city with callback.sh FAILURE)
exten => zagl,n,Log(ERROR,APLICATION FAILURE in first-registration-city with  script calladmin.sh )
exten => zagl,n(lbl_first-registration-city_9),Goto(incidental-incoming-call,frcity,1)
exten => zagl,n(lbl_first-registration-city_8),Verbose(ERROR IN in first-registration-city with callbask_city.sh APLICATION ERROR)
exten => zagl,n,Log(ERROR,APLICATION ERROR in first-registration-city with  script calladmin.sh )
exten => zagl,n,Goto(lbl_first-registration-city_9)


Поясните пожалуйста как направить на Announcement с кличкой hallow потом на iftime - разделитель ночь/день
надеюсь хоть так пойму логику связей freePBX
Все куски повводил без проблем, а вот ну никак не могу понять что за хрень получается
Диалплан (который кастомс)
[incoming-cdma]
exten => s,1,Set(CALLERID(all)=${CALLERID(num)})
exten => s,n,Set(CALLERID(num)=${CALLERID(num):3})
exten => s,n,goto(from-trunk,${CDMARUIM},1)
Откуда берется вся эта ненужная мне фигня, которую я не просил, как с ней бороться, как и на что направлять вызов юзая вебинтерфейс.

Код: Выделить всё

Executing [352215047554116@from-trunk:1] Set("Cdma/lenzks0-0100000001", "__FROM_DID=352215047554116") in new stack
    -- Executing [352215047554116@from-trunk:2] NoOp("Cdma/lenzks0-0100000001", "Received an unknown call with DID set to 352215047554116") in new stack
    -- Executing [352215047554116@from-trunk:3] Goto("Cdma/lenzks0-0100000001", "s,a2") in new stack
    -- Goto (from-trunk,s,2)
    -- Executing [s@from-trunk:2] Answer("Cdma/lenzks0-0100000001", "") in new stack
    -- Executing [s@from-trunk:3] Wait("Cdma/lenzks0-0100000001", "2") in new stack
    -- Executing [s@from-trunk:4] Playback("Cdma/lenzks0-0100000001", "ss-noservice") in new stack
    -- <Cdma/lenzks0-0100000001> Playing 'ss-noservice.gsm' (language 'en')
    -- Executing [s@from-trunk:5] SayAlpha("Cdma/lenzks0-0100000001", "352215047554116") in new stack
    -- <Cdma/lenzks0-0100000001> Playing 'digits/3.gsm' (language 'en')
    -- <Cdma/lenzks0-0100000001> Playing 'digits/5.gsm' (language 'en')
    -- <Cdma/lenzks0-0100000001> Playing 'digits/2.gsm' (language 'en')
    -- <Cdma/lenzks0-0100000001> Playing 'digits/2.gsm' (language 'en')
  == Spawn extension (from-trunk, s, 5) exited non-zero on 'Cdma/lenzks0-0100000001'
    -- Executing [h@from-trunk:1] Hangup("Cdma/lenzks0-0100000001", "") in new stack
Кто такой "from-trunk" и че он себе позволяет делать без спроса? Как его приручить чтоб он делал то что мне нужно? Где его содержимое вообще? Почему (по примерам) в качестве еxtension нужно ему передавать то, что вводиться в поле Outbound CallerID это же разные вещи (или одинаковые - мля, уже запутался)?

Или может просто забить на freePBX как на страшный сон?

Re: FreePBX соntext

Добавлено: 23 авг 2012, 23:12
ded
Кто консультирует консультантов?
zoleg, вопросы такого уровня, что впору Вам стирать в подписи
- Диспетчерская такси без диспетчеров.
- CDMA модем ZTE AC7810/AC5710+либа к chan_dongle+Астериск = канал ГТС.
- Бесшумные АТС и серверы (1U-3U 19" 12 Вольт, 35 Ват) разработанные специально для диспетчерских служб такси.
записываться на курсы по Астериск или обращаться в платный суппорт.

Re: FreePBX соntext

Добавлено: 23 авг 2012, 23:44
zoleg
Ded, не подкалывай :D
Я в самом деле, лет пять назад или более видел вебинтерфейс (даже не помню от кого), но не работал с ним никогда. Это для меня новинка возможностей которой я не знаю и с чем ее едят не представляю ;)

Если все "извраты" нужно делать через кастомз, то тогда я еще лет пять смотреть на это не буду.

Re: FreePBX соntext

Добавлено: 24 авг 2012, 08:13
Vlad1983
каждый раз натягивая FreePBX сразу вспоминаю все предыдущие инсталляции, заказчики которых после нескольких месяцев юзания узнают, что у астериска оказывается есть ещё куча нужных ему возможностей.
и понеслась...
в итоге FreePBX используется только для заведения юзверей, и иногда для построения простых IVR самим заказчиком.
все остальное в самописных кастомах.

Re: FreePBX соntext

Добавлено: 24 авг 2012, 08:56
zoleg
в итоге FreePBX используется только для заведения юзверей, и иногда для построения простых IVR самим заказчиком.
Спасибо за ответ.
Было на это подозрение :) , но не было подтверждения этому от практиков.
Наверно не буду я заморачиваться с FreePBX если нижеописываемое подтверждается.

Подтвердите или опровергните пожалуйста:
1. не стоит тратить время на его изучение ради того чтоб один раз в полгода внести "косметические" изменения в диалплан через web FreePBX?
2. создание диалплана "чуть сложнее "простого"" требует большего времени при работе через web FreePBX.

Re: FreePBX соntext

Добавлено: 24 авг 2012, 09:11
Vlad1983
и 1 и 2 верно

Re: FreePBX соntext

Добавлено: 24 авг 2012, 10:29
ded
1. Не верно
2. Не верно.

Логика построения стандартных сценариев есть, её заложили Создатели. Если её не вижно, это не значит, что её там нет.
Был бы семинар какой - пальцем поводить и показать как
- внешний транк, будь то SIP провайдер, или GSM шлюз, или порты Е1 - заводятся во внешнюю среду freePBX просто указывая им контекст from-pstn, и тогда
- работает секция входящей маршрутизации, используя DID & CID
- направляя из которой звонок не напрямую, а на правило по времени, а оттуда на другое правило по времени (типа exclude), а оттуда на приветствие, IVR, а оттуда на другую IVR, из которой DISA если надо;
.. в общем - как бусы нанизывать.
Описывать буквами это долго.

Re: FreePBX соntext

Добавлено: 24 авг 2012, 11:45
zoleg
Описывать буквами это долго
.
Ткните носом/ссылочкой пожалуйста если помните где есть описание принципа построения или какой степ бай степ.

И хотя уже все нарисовано за два часа и залито на сервер, попытаюсь понять FreePBX и забадяжить аналог на с его помощью.

Re: FreePBX соntext

Добавлено: 24 авг 2012, 12:22
zoleg
Нашел
http://www.freepbx.org/support/document ... dial-rules
И еще там оказалось много вкусного.