• Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Да, вот целиком привожу замысел

    [outbound-restricted-routes]
    include => outbound-restricted-routes-custom
    ;--== INCLUDE ==--;
    exten => _[+0-9]!,1,Noop(======================================================)
    exten => _[+0-9]!,n,Noop(========= Context OUTBOUND-RESTRICTED-routes =========)
    exten => _[+0-9]!,n,Noop(== Destination: ${EXTEN} , CID: ${CALLERID(number)} ==)
    exten => _[+0-9]!,n,Noop(======================================================)
    
    exten => _[+0-9]!,n,AGI(trunk_hook.php,${EXTEN},${CALLERID(number)})
    
    exten => _[+0-9]!,n,Set(var_trunk_outrt=${trunk_outrt})
    exten => _[+0-9]!,n,GotoIf($["${var_trunk_outrt}" = "pusto"]?pusto:gonext)
    exten => _[+0-9]!,n(gonext),Goto(${var_trunk_outrt},${EXTEN},1)
    exten => _[+0-9]!,n(pusto),Noop(== PUSTO QUIT CUSTOMIZATION ==)
    ;--== INCLUDE ==--;
    
    exten => _[+0-9]!,n,Macro(user-callerid,LIMIT)
    exten => _[+0-9]!,n,Set(ROUTEUSER=${IF($["${EXTTOCALL}"!=""]?${EXTTOCALL}:${AMPUSER})})
    exten => _[+0-9]!,n,Set(ROUTEUSER=${IF($["${DB_EXISTS(AMPUSER/${ROUTEUSER}/cidnum)}"="1"]?${ROUTEUSER}:${NODEST})})
    exten => _[+0-9]!,n,GotoIf($["${BLINDTRANSFER}" == ""]?notblind)
    exten => _[+0-9]!,n,Set(ENDPOINT=${CUT(BLINDTRANSFER,-,1)})
    exten => _[+0-9]!,n,Set(ROUTEUSER=${CUT(ENDPOINT,/,2)})
    exten => _[+0-9]!,n(notblind),GotoIf($[${LEN(${ROUTEUSER})}>0 & ${DB_EXISTS(AMPUSER/${ROUTEUSER}/outroute_hash)}]?${DB(AMPUSER/${ROUTEUSER}/outroute_hash)},${EXTEN},2:outbound-allroutes,${EXTEN},2)
    
    exten => h,1,Hangup
    
    ;--== end of [outbound-restricted-routes] ==--;


    ${trunk_outrt} = тут из AGI он возвращает либо номер маршрута outrt-Х , либо pusto , следовательно если если outrt-Х известен то посылаем в
    exten => _[+0-9]!,n(gonext),Goto(${var_trunk_outrt},${EXTEN},1)

    Или если pusto то выходим из кастомизации и идем стандартным путем...
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Ой ,а вроде все и работает! Проверяю!
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Дак как же мне направить в нужную группу то ? только в транк? и в транк надо писать OUT_X ?
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Спасибо! Так и сделал но похоже где то далее все же перескакиваетна другую группу..

    https://pastebin.com/FfjA32nA

    Сделал так
    [outbound-restricted-routes]
    include => outbound-restricted-routes-custom

    ;--== INCLUDE ==--;
    exten => _[+0-9]!,1,Noop(======================================================)
    exten => _[+0-9]!,n,Noop(========= Context OUTBOUND-RESTRICTED-routes =========)
    exten => _[+0-9]!,n,Noop(== Destination: ${EXTEN} , CID: ${CALLERID(number)} ==)
    exten => _[+0-9]!,n,Noop(======================================================)
    
    exten => _[+0-9]!,n,Goto(outrt-13,${EXTEN},1)
    ;--== INCLUDE ==--;
    
    exten => _[+0-9]!,n,Macro(user-callerid,LIMIT)
    exten => _[+0-9]!,n,Set(ROUTEUSER=${IF($["${EXTTOCALL}"!=""]?${EXTTOCALL}:${AMPUSER})})
    exten => _[+0-9]!,n,Set(ROUTEUSER=${IF($["${DB_EXISTS(AMPUSER/${ROUTEUSER}/cidnum)}"="1"]?${ROUTEUSER}:${NODEST})})
    exten => _[+0-9]!,n,GotoIf($["${BLINDTRANSFER}" == ""]?notblind)
    exten => _[+0-9]!,n,Set(ENDPOINT=${CUT(BLINDTRANSFER,-,1)})
    exten => _[+0-9]!,n,Set(ROUTEUSER=${CUT(ENDPOINT,/,2)})
    exten => _[+0-9]!,n(notblind),GotoIf($[${LEN(${ROUTEUSER})}>0 & ${DB_EXISTS(AMPUSER/${ROUTEUSER}/outroute_hash)}]?${DB(AMPUSER/${ROUTEUSER}/outroute_hash)},${EXTEN},2:outbound-allroutes,${EXTEN},2)
    
    exten => h,1,Hangup
    
    ;--== end of [outbound-restricted-routes] ==--;


    Тоесть насильно направил его на
    exten => _[+0-9]!,n,Goto(outrt-13,${EXTEN},1)

    13 маршрут, но потом он все же перескачил на 10 я так понял

    -- Executing [+79066357070@outrt-13:11] Macro("PJSIP/703-00002009", "dialout-trunk,10,+79066357070,,off") in new stack
        -- Executing [s@macro-dialout-trunk:1] Set("PJSIP/703-00002009", "DIAL_TRUNK=10") in new stack
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, У меня есть тестовый стенд на другом севере, правда без рабочих транков но они там заведены..
    Там нет платного модуля и там в вывод попало из кастома
    -- Executing [+79066358080@from-internal:1] NoOp("PJSIP/703-00000000", "======================================================") in new stack
        -- Executing [+79066358080@from-internal:2] NoOp("PJSIP/703-00000000", "========== Context OUTBOUND-ALLROUTES-custom =========") in new stack
        -- Executing [+79066358080@from-internal:3] NoOp("PJSIP/703-00000000", "== Destination: +79066358080 , CID: 703 ==") in new stack
        -- Executing [+79066358080@from-internal:4] NoOp("PJSIP/703-00000000", "======================================================") in new stack
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Да,конечно, в GUI делаю submit и apply что тоже самое..
    К сожалению не _+Х не _., не увидел в консоли, вот полный выхлоп при звонке

    https://pastebin.com/A9cSN7Qe
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Запрещенные маршруты это я так понял в настройках групп на последней вкладке можно запрещать кому разрещен доступ а кому нет, наасколько я помню это фишка платного модуля System Admin
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Очень признателен Вам за помощь!

    dialplan show outbound-restricted-routes
    spoiler
    [ Context 'outbound-restricted-routes' created by 'pbx_config' ]
    'h' => 1. Hangup() [pbx_config]
    '_[+0-9]!' => 1. Macro(user-callerid,LIMIT) [pbx_config]
    2. Set(ROUTEUSER=${IF($["${EXTTOCALL}"!=""]?${EXTTOCALL}:${AMPUSER})}) [pbx_config]
    3. Set(ROUTEUSER=${IF($["${DB_EXISTS(AMPUSER/${ROUTEUSER}/cidnum)}"="1"]?${ROUTEUSER}:${NODEST})}) [pbx_config]
    4. GotoIf($["${BLINDTRANSFER}" == ""]?notblind) [pbx_config]
    5. Set(ENDPOINT=${CUT(BLINDTRANSFER,-,1)}) [pbx_config]
    6. Set(ROUTEUSER=${CUT(ENDPOINT,/,2)}) [pbx_config]
    [notblind] 7. GotoIf($[${LEN(${ROUTEUSER})}>0 & ${DB_EXISTS(AMPUSER/${ROUTEUSER}/outroute_hash)}]?${DB(AMPUSER/${ROUTEUSER}/outroute_hash)},${EXTEN},2:outbound-allroutes,${EXTEN},2) [pbx_config]
    Include => 'outbound-restricted-routes-custom' [pbx_config]

    -= 2 extensions (8 priorities) in 1 context. =-
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill,
    dialplan show from-internal-additional
    spoiler
    [ Context 'from-internal-additional' created by 'pbx_config' ]
    'h' => 1. Hangup() [pbx_config]
    Include => 'from-internal-additional-custom' [pbx_config]
    Include => 'app-cf-toggle' [pbx_config]
    Include => 'app-cf-busy-prompting-on' [pbx_config]
    Include => 'app-cf-busy-on' [pbx_config]
    Include => 'app-cf-busy-off-any' [pbx_config]
    Include => 'app-cf-busy-off' [pbx_config]
    Include => 'app-cf-off' [pbx_config]
    Include => 'app-cf-off-any' [pbx_config]
    Include => 'app-cf-unavailable-prompt-on' [pbx_config]
    Include => 'app-cf-unavailable-on' [pbx_config]
    Include => 'app-cf-unavailable-off' [pbx_config]
    Include => 'app-cf-on' [pbx_config]
    Include => 'app-cf-prompting-on' [pbx_config]
    Include => 'ext-cf-hints' [pbx_config]
    Include => 'app-callwaiting-cwoff' [pbx_config]
    Include => 'app-callwaiting-cwon' [pbx_config]
    Include => 'ext-meetme' [pbx_config]
    Include => 'app-dictate-record' [pbx_config]
    Include => 'app-dictate-send' [pbx_config]
    Include => 'app-dnd-off' [pbx_config]
    Include => 'app-dnd-on' [pbx_config]
    Include => 'app-dnd-toggle' [pbx_config]
    Include => 'ext-dnd-hints' [pbx_config]
    Include => 'app-fax' [pbx_config]
    Include => 'app-fmf-toggle' [pbx_config]
    Include => 'ext-findmefollow' [pbx_config]
    Include => 'fmgrps' [pbx_config]
    Include => 'app-hotelwakeup' [pbx_config]
    Include => 'app-calltrace' [pbx_config]
    Include => 'app-echo-test' [pbx_config]
    Include => 'app-speakextennum' [pbx_config]
    Include => 'app-speakingclock' [pbx_config]
    Include => 'app-miscapps' [pbx_config]
    Include => 'ext-intercom-users' [pbx_config]
    Include => 'park-hints' [pbx_config]
    Include => 'app-parking' [pbx_config]
    Include => 'app-pbdirectory' [pbx_config]
    Include => 'ext-queues' [pbx_config]
    Include => 'app-queue-toggle' [pbx_config]
    Include => 'app-queue-caller-count' [pbx_config]
    Include => 'app-recordings' [pbx_config]
    Include => 'ext-group' [pbx_config]
    Include => 'grps' [pbx_config]
    Include => 'app-speeddial' [pbx_config]
    Include => 'timeconditions-toggles' [pbx_config]
    Include => 'vmblast-grp' [pbx_config]
    Include => 'app-dialvm' [pbx_config]
    Include => 'app-vmmain' [pbx_config]
    Include => 'app-blacklist' [pbx_config]
    Include => 'app-contactmanager-sd' [pbx_config]
    Include => 'ext-local-confirm' [pbx_config]
    Include => 'findmefollow-ringallv2' [pbx_config]
    Include => 'app-pickup' [pbx_config]
    Include => 'app-chanspy' [pbx_config]
    Include => 'ext-test' [pbx_config]
    Include => 'ext-local' [pbx_config]
    Include => 'outbound-restricted-routes' [pbx_config]
    Include => 'outbound-allroutes' [pbx_config]

    -= 1 extension (1 priority) in 1 context. =-


    dialplan show outbound-allroutes
    spoiler
    [ Context 'outbound-allroutes' created by 'pbx_config' ]
    'foo' => 1. Noop(bar) [pbx_config]
    Include => 'outbound-allroutes-custom' [pbx_config]
    Include => 'outrt-9' [pbx_config]
    Include => 'outrt-16' [pbx_config]
    Include => 'outrt-8' [pbx_config]
    Include => 'outrt-5' [pbx_config]
    Include => 'outrt-11' [pbx_config]
    Include => 'outrt-10' [pbx_config]
    Include => 'outrt-12' [pbx_config]
    Include => 'outrt-13' [pbx_config]
    Include => 'outrt-17' [pbx_config]

    -= 1 extension (1 priority) in 1 context. =-
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Спасибо за ответ!

    dialplan show +79066358080@from-internal
    dialplan show +79066358080@from-internal
    [ Included context 'outbound-restricted-routes' created by 'pbx_config' ]
      '_[+0-9]!' =>     1. Macro(user-callerid,LIMIT)                 [pbx_config]
                        2. Set(ROUTEUSER=${IF($["${EXTTOCALL}"!=""]?${EXTTOCALL}:${AMPUSER})}) [pbx_config]
                        3. Set(ROUTEUSER=${IF($["${DB_EXISTS(AMPUSER/${ROUTEUSER}/cidnum)}"="1"]?${ROUTEUSER}:${NODEST})}) [pbx_config]
                        4. GotoIf($["${BLINDTRANSFER}" == ""]?notblind) [pbx_config]
                        5. Set(ENDPOINT=${CUT(BLINDTRANSFER,-,1)})    [pbx_config]
                        6. Set(ROUTEUSER=${CUT(ENDPOINT,/,2)})        [pbx_config]
         [notblind]     7. GotoIf($[${LEN(${ROUTEUSER})}>0 & ${DB_EXISTS(AMPUSER/${ROUTEUSER}/outroute_hash)}]?${DB(AMPUSER/${ROUTEUSER}/outroute_hash)},${EXTEN},2:outbound-allroutes,${EXTEN},2) [pbx_config]
    
    [ Included context 'outrt-5' created by 'pbx_config' ]
      '_.' =>           1. Macro(user-callerid,LIMIT,EXTERNAL,)       [pbx_config]
                        2. Gosub(sub-record-check,s,1(out,${EXTEN},yes)) [pbx_config]
                        3. ExecIf($[ "${CALLEE_ACCOUNCODE}" != "" ] ?Set(CDR(accountcode)=${CALLEE_ACCOUNCODE})) [pbx_config]
                        4. Set(_ROUTEID=5)                            [pbx_config]
                        5. Set(_ROUTENAME=GERMAN ALL)                 [pbx_config]
                        6. Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) [pbx_config]
                        7. Set(_CALLERIDNAMEINTERNAL=${CALLERID(name)}) [pbx_config]
                        8. Set(_CALLERIDNUMINTERNAL=${CALLERID(num)}) [pbx_config]
                        9. Set(_EMAILNOTIFICATION=FALSE)              [pbx_config]
                        10. Set(_NODEST=)                             [pbx_config]
                        11. Macro(dialout-trunk,10,${EXTEN},,off)     [pbx_config]
                        12. Macro(dialout-trunk,9,${EXTEN},,off)      [pbx_config]
                        13. Macro(dialout-trunk,2,${EXTEN},,off)      [pbx_config]
                        14. Macro(outisbusy,)                         [pbx_config]
    
    [ Included context 'outrt-10' created by 'pbx_config' ]
      '_+790663[1-9]XXXX' => 1. Macro(user-callerid,LIMIT,EXTERNAL,)       [pbx_config]
                        2. Gosub(sub-record-check,s,1(out,${EXTEN},yes)) [pbx_config]
                        3. ExecIf($[ "${CALLEE_ACCOUNCODE}" != "" ] ?Set(CDR(accountcode)=${CALLEE_ACCOUNCODE})) [pbx_config]
                        4. Set(_ROUTEID=10)                           [pbx_config]
                        5. Set(_ROUTENAME=BEELINE)                    [pbx_config]
                        6. Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) [pbx_config]
                        7. Set(_CALLERIDNAMEINTERNAL=${CALLERID(name)}) [pbx_config]
                        8. Set(_CALLERIDNUMINTERNAL=${CALLERID(num)}) [pbx_config]
                        9. Set(_EMAILNOTIFICATION=FALSE)              [pbx_config]
                        10. Set(_NODEST=)                             [pbx_config]
                        11. Macro(dialout-trunk,10,${EXTEN},,off)     [pbx_config]
                        12. Macro(dialout-trunk,9,${EXTEN},,off)      [pbx_config]
                        13. Macro(dialout-trunk,2,${EXTEN},,off)      [pbx_config]
                        14. Macro(dialout-trunk,8,${EXTEN},,off)      [pbx_config]
                        15. Macro(outisbusy,)                         [pbx_config]
    
    [ Included context 'outrt-13' created by 'pbx_config' ]
      '_.' =>           1. Macro(user-callerid,LIMIT,EXTERNAL,)       [pbx_config]
                        2. Gosub(sub-record-check,s,1(out,${EXTEN},yes)) [pbx_config]
                        3. ExecIf($[ "${CALLEE_ACCOUNCODE}" != "" ] ?Set(CDR(accountcode)=${CALLEE_ACCOUNCODE})) [pbx_config]
                        4. Set(_ROUTEID=13)                           [pbx_config]
                        5. Set(_ROUTENAME=ALL)                        [pbx_config]
                        6. Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) [pbx_config]
                        7. Set(_CALLERIDNAMEINTERNAL=${CALLERID(name)}) [pbx_config]
                        8. Set(_CALLERIDNUMINTERNAL=${CALLERID(num)}) [pbx_config]
                        9. Set(_EMAILNOTIFICATION=FALSE)              [pbx_config]
                        10. Set(_NODEST=)                             [pbx_config]
                        11. Macro(dialout-trunk,10,${EXTEN},,off)     [pbx_config]
                        12. Macro(dialout-trunk,9,${EXTEN},,off)      [pbx_config]
                        13. Macro(dialout-trunk,2,${EXTEN},,off)      [pbx_config]
                        14. Macro(dialout-trunk,8,${EXTEN},,off)      [pbx_config]
                        15. Macro(outisbusy,)                         [pbx_config]
    
    [ Included context 'outrt-17' created by 'pbx_config' ]
      '_.' =>           1. Macro(user-callerid,LIMIT,EXTERNAL,)       [pbx_config]
                        2. Gosub(sub-record-check,s,1(out,${EXTEN},yes)) [pbx_config]
                        3. ExecIf($[ "${CALLEE_ACCOUNCODE}" != "" ] ?Set(CDR(accountcode)=${CALLEE_ACCOUNCODE})) [pbx_config]
                        4. Set(_ROUTEID=17)                           [pbx_config]
                        5. Set(_ROUTENAME=DEV)                        [pbx_config]
                        6. Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) [pbx_config]
                        7. Set(_CALLERIDNAMEINTERNAL=${CALLERID(name)}) [pbx_config]
                        8. Set(_CALLERIDNUMINTERNAL=${CALLERID(num)}) [pbx_config]
                        9. Set(_EMAILNOTIFICATION=FALSE)              [pbx_config]
                        10. Set(_NODEST=)                             [pbx_config]
                        11. Macro(dialout-trunk,120,${EXTEN},,off)    [pbx_config]
                        12. Macro(dialout-trunk,121,${EXTEN},,off)    [pbx_config]
                        13. Macro(outisbusy,)                         [pbx_config]
    
    -= 5 extensions (64 priorities) in 5 contexts. =-
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Да,касательно входящих Вы правы, я спутал с исходящим уходящим на другую АТС, но это не про то..
    Совершаю звонок на +7ХХХХХХХХХХ
    Я решил попробовать так сделать в extensions_custom.conf

    [from-internal-custom]
    exten => _.,1,Noop(ASR-ASR-ASR)
    exten => _.,n,Noop(${EXTEN})
    exten => _.,n,Goto(${outrt-13},${EXTEN},1)

    Но у меня все это впадает в цикл =(

    UDP
    Если использую [outbound-allroutes-custom] то не попадаю никуда ,в консолинет noop
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Понял почему небыло в консоли ничего про это , когда использую exten => _.,1, то все есть ,когда же exten => _X.,1, то ничего нет, но насколько знаю безопаснее и правильнее испольхховать именно exten => _X.,1, что бы избежать попадания всяких h и.т.д..
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Так и стоит, в лог попадают входящие звонкит при этом но исходящие нет...
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, К сожалению в консоли нет ничего при исходящем звонке =(
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Почему то не выходит, попадает но не мой исходящий звонок туда , может примерно покажете как мне построить диалплан ?
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Drill, Сделал как Вы сказали для погнимания что сюда заходит звонок
    [outbound-allroutes-custom]
    exten => s,1,Verbose(0, -----ASR-ASR-ASR-ASR-ASR-ASR-ASR )

    К консоли чисто при звонке, что не так сделал?
  • Asterisk\FreePBX действие до совершения исходящего вызова?

    @SteepNET Автор вопроса
    Спасибо за ответ! Вам доводилось такое реализовывать?
  • Asterisk исходящая маршрутизация\хук?

    @SteepNET Автор вопроса
    Спасибо за ответ!
    На случай падения стороннего сервера будет работать система шаблонов которая уже работает, но там не учитываються номера MNP, поэтому и появился такой замысел, динамического переключения в зависимости от провадера.
    Как сообщилось выше я могу поапробовать это реализовать в [macro-dialout-trunk-predial-hook] в /etc/asterisk/extensions_override_freepbx.conf ,но я немного замешкался в самой реализации ..
    Допустим я отправляю запрос диалплане перед совершением звонка и получаю ответ
    "operator":"Билайн", далее делаю Goto(dial_vimpelcom,${EXTEN},1) где dial_vimpelcom это название транка в FreePBX ?
    Вообще если не сложно можно ли как то примрно изобразить как бы это могло выглядеть если не сложно?
    Спасибо!
  • Update в BD если есть несколько значений?

    @SteepNET Автор вопроса
    Slava Rozhnev, Подскажите поджалуйста а как мне этот параметр (set @q = -1;) передать через php ? делаю это все через php скрипт
  • Update в BD если есть несколько значений?

    @SteepNET Автор вопроса
    Slava Rozhnev, Вы просто золото,это работает!
    Жаль бы еще можно было посталь кого поставить первым а кого вторым и.т.д, но это как шикарное дополнение было бы...