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

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

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

Модератор: april22

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

Сообщение skynetyar » 01 ноя 2021, 16:48

Добрый день!
Задумка определять группу вызова Outbound Routes до совершения вызова.
В каком макросе,файле нужно внедриться что бы совершить действие ДО начала звонка?
Пробую в extensions_additional.conf при помощи макроса [macro-dialout-trunk-predial-hook] но почему то там звонок уже с определенным транком исходящим!
но в него уже прилетает вызов уже с определенным транком =(

Подскажите пожалуйста где могу внедриться и послать звнок куда надо
same => n,Goto(${outrt-11},${OUTNUM},1)
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 430
Зарегистрирован: 18 авг 2016, 14:25

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

Сообщение Zavr2008 » 01 ноя 2021, 19:12

"определяет маршрут" тот паттерн, по которому матчинг совпадает маршрута. Также есть маршруты с условиями, например по календарю.
"вклиниваться" в predial hook - бесполезно.

Опишите более подробно что Вы пытаетесь создать, наверное стоит подумать о другом механизме.
Российские шлюзы E1 Alvis-GW. Voip-Модернизация УПАТС, FreePBX, CRM. Продолжаем работать, импортозамещаем!
Аватар пользователя
Zavr2008
 
Сообщений: 1970
Зарегистрирован: 27 янв 2011, 01:35

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

Сообщение skynetyar » 01 ноя 2021, 19:31

Задумака через AGI в стороннем сервисе я определяю принадлежность номера к провайдеру, МТС\Мегафон,Билайн, в зависмости от провайдера я хочу совершать вызов через нжную мне (Outbound Routes) группу вызова в которой уже по приоритетам размещены транки. Для этого я считал что могу возвращать эти данные из AGI в [macro-dialout-trunk-predial-hook] но тут как оказалось уже определен ${DIAL_TRUNK}в вызове и совершить same => n,Goto(${outrt-11},${OUTNUM},1) такой переход уже не могу

Своял чтио т отипа такого
Код: выделить все
;[macro-dialout-trunk-predial-hook]
;exten => s,1,Verbose(0, -----ASR-ASR-ASR-ASR-ASR---------)
;same => n,Noop(${DIAL_TRUNK},${OUTNUM},${CALLERID(number)})
;same => n,AGI(trunk_hook.php,${OUTNUM},${CALLERID(number)})
;same => n,Set(var_trunk_operator=${trunk_operator})
;same => n,Set(var_trunk_region=${trunk_region})
;same => n,Set(var_trunk_operatorID=${trunk_operatorID})
;same => n,Set(var_trunk_outrt=${trunk_outrt})

;same => n,GotoIf($["${trunk_outrt}" = "pusto"]?pusto:gonext)
;same => n(pusto),MacroExit()

;same => n(gonext),Noop(${var_trunk_operator},${var_trunk_region},${var_trunk_operatorID},${var_trunk_outrt},${OUTNUM})
;same => n,Goto(${var_trunk_outrt},${OUTNUM},1) ; тут совершаю звонок по нужному мне из AGI outrt-x машруту
;same => n,MacroExit()


Вот ${CALLERID(number)} тот саймый уже определенный транк через который пойдет вызов а не тот который я захотел в Goto
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 430
Зарегистрирован: 18 авг 2016, 14:25

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

Сообщение Zavr2008 » 01 ноя 2021, 19:37

Обычно решают "в лоб задачу" многие - просто вторая виртуалка, астер без FreePBX, там уже и разруливать.
Ну а между астерами лишь один транк постоянный.

Можно пойти и другим путем:

You can use an agi or in the dialplan like this:

Add in extensions_custom.conf

[distribute-pstn-trunks]
;pstn trunk are number 2 and 3
exten => _0XXXXXXXXX,1,Set(COUNT=${DB(test/count)})
;increment
exten => _0XXXXXXXXX,n,SetVar(COUNT=$[${COUNT} + 1])
exten => _0XXXXXXXXX,n,SetVar(COUNT=${IF($[ ${COUNT} = 4]?2:${COUNT})})
exten => _0XXXXXXXXX,n,Set(DB(test/count)=${COUNT})
exten => _0XXXXXXXXX,n,NoOp(Number dialed is ${EXTEN} by trunk pstn ${COUNT})
exten => _0XXXXXXXXX,n,Macro(dialout-trunk,${COUNT},${EXTEN},,)
exten => _0XXXXXXXXX,n,Macro(outisbusy,)

Adapt it to your config.

Then create a custom trunk : Local/$OUTNUM$@distribute-pstn-trunks

Use the custom trunk in your outbound routes…
Done.


Поменять логику балансировки в примере на нужную через запрос по AGI.

https://community.freepbx.org/t/is-it-possible-alternate-trunks-pstn/4035
Российские шлюзы E1 Alvis-GW. Voip-Модернизация УПАТС, FreePBX, CRM. Продолжаем работать, импортозамещаем!
Аватар пользователя
Zavr2008
 
Сообщений: 1970
Зарегистрирован: 27 янв 2011, 01:35

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

Сообщение ded » 01 ноя 2021, 22:28

Обрабатывать именно в macro-dialout-trunk-predial-hook
Вы не обратили внимания, что он у вас был пустой, в нём только
's' => 1. MacroExit()

Предполагается, что вы напишете там предобработку, с передачей в него аргумента - набираемый номер, а возвращать он будет в макрос macro-dialout-trunk значение BYPASS
и уход на метку
'bypass' => 1. Noop(TRUNK: ${OUT_${DIAL_TRUNK}} BYPASSING because dialout-trunk-predial-hook)
и подставлять значение транка ${outrt-11} не будет.
Но вот использовать свои переменные там конечно можно, но лучше бы придерживаться существующих, чтобы не множить сущности.
Не сооружать кастомные Goto(${var_trunk_outrt},${OUTNUM},1)

А передавать на метку gocall в основной макрос macro-dialout-trunk, где
Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM}${OUT_${DIAL_TRUNK}_SUFFIX},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS})
будут наполнены заданными в macro-dialout-trunk-predial-hook переменными.
skynetyar писал(а):Вот ${CALLERID(number)} тот саймый уже определенный транк через который пойдет вызов
При чём тут CALLERID?
CALLERID - это кто звонит, а ${OUTNUM} - куда звоним, ${OUT_${DIAL_TRUNK}} - через какой транк.
ded
 
Сообщений: 15312
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение skynetyar » 02 ноя 2021, 14:56

Спасибо за ответы!
Тоесть могу оперировать только ${DIAL_TRUNK} не смогу использовать исхзодящие группы ?
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 430
Зарегистрирован: 18 авг 2016, 14:25

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

Сообщение ded » 02 ноя 2021, 16:48

Как вы представляете себе исходящую группу?

Допустим вам надо звонить на номер +79012345678 и макрос возвращает вам три транка для выполнения этого вызова.
Вы инициируете вызов стразу пот трём? Или последовательно по каждому?
ded
 
Сообщений: 15312
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение skynetyar » 02 ноя 2021, 18:07

Судя по данному контексту
Код: выделить все
[outbound-allroutes]
include => outbound-allroutes-custom
include => outrt-9 ;
include => outrt-16 ;
include => outrt-8 ;
include => outrt-5 ;
include => outrt-11 ;
include => outrt-10 ;
include => outrt-12 ;
include => outrt-13 ;
include => outrt-17 ;
exten => foo,1,Noop(bar)


Я предпологал что могу запулить вызов в нужный outrt-X путем
same => n,Goto(outrt-9,${OUTNUM},1) к примеру
Неужели нельзя найти проще метод кастомизировать вызов?
На одном из форумов http://asterisk-support.ru/forum/topics/5650/?page=1
Вы подсказали такой метод
Код: выделить все
[from-internal-custom]
exten _X.,1,Macro(dialout-trunk-custom,outbound-allroutes,${EXTEN})


Тут не прокатит так?
Простите, возможно в этих дебрях множества направлений я запутался =\
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 430
Зарегистрирован: 18 авг 2016, 14:25

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

Сообщение ded » 02 ноя 2021, 18:42

Так тоже пойдёт. Можно запулить
same => n,Goto(outrt-9,${OUTNUM},1) если перед этим из predial-hook запросом в AGI например получен ответ outrt-9.

Тогда строка в диал-плане должна выглядить так
same => n,Goto(${DIAL_TRUNK},${OUTNUM},1) предполагая, что переменная ${DIAL_TRUNK} принимает значение outrt-9 из вашего AGI или ещё какое то.

Неверный термин выбрали говоря о группах.
Что такое [outbound-allroutes] ? Это таблица маршрутизации из FreePBX, описанная в OUtbound routes.
По маске шаблона номера она пробивается сверху вниз. Пример
Код: выделить все
[from-internal-custom]
exten _X.,1,Macro(dialout-trunk-custom,outbound-allroutes,${EXTEN})
некорректный, это обход всех правил внутреннего диал-плана
from-internal сразу на выход, кастомная оригинация в мир.

Если вы знаете через какой транк кинуть вызов, то нет смысла пробивать всю таблицу типа
same => n,Goto(outbound-allroutes,${OUTNUM},1) в поиске подходящего под шаблон транка, а пулить прямо в этот транк
same => n,Goto(outrt-9,${OUTNUM},1)
ded
 
Сообщений: 15312
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение skynetyar » 02 ноя 2021, 20:00

Спасибо за ответ! Да именно так я в таком случае и дулал..
В extensions_override_freepbx.conf оверрайдил через [macro-dialout-trunk-predial-hook] как во втором моем сообщении из AGI брал направление и присваивал его переменной, получлось именно так
Код: выделить все
В AGI $trunk_outrt=outrt-9

same => n,Set(var_trunk_outrt=${trunk_outrt})
same => n,Goto(${var_trunk_outrt},${OUTNUM},1)


В итоге в диалплане в [macro-dialout-trunk-predial-hook] это выглядело так
Код: выделить все
same => n,Goto(${outrt-9 ,79066358080,1)


В AGI я логировал все переменные и
Код: выделить все
same => n,AGI(trunk_hook.php,${OUTNUM},${CALLERID(number)})

${CALLERID(number)} у меня оказывался при некоторых звонках CID исходящего транка
И вся моя схема не работала несмотря на то что я указывал исходящую группу...

Иногда в консоли такое выплывало и звонок не проходил вовсе
Код: выделить все
WARNING[21747][C-00027834]: pbx.c:4467 __ast_pbx_run: Channel 'PJSIP/703-00042a78' sent to invalid extension but no invalid handler: context,exten,priority=outrt-10,79066358080,2



Либо я все же что то не въехал =\
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 430
Зарегистрирован: 18 авг 2016, 14:25

След.

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

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

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

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