Страница 1 из 1

Динамическое определение шаблона - как сделать?

Добавлено: 28 авг 2013, 11:48
vaskodegama
хочу хранить диалпланы в базе
попадание в диалплан по шаблону ао логике астериска -> набор действий из БД

сиюминутно в голову пришло дописывать в extension.conf как-то так

exten => _555.,1,System(/scripts/fetch_dialplan.pl _555.); #вернуть действие
extent => _555.,n,Goto(действие);

в идеале хотелось бы так
exten => _X.,1,System(/scripts/fetch_dialplan.pl ${EXTEN}); #вернуть действие
extent => _X.,n,Goto(действие);

но разбирать астерисковую логику попадания в шаблон внутри скрипта - как?

как сделать умнее? )))

Re: Динамическое определение шаблона - как сделать?

Добавлено: 28 авг 2013, 12:06
ded
vaskodegama, не хотите почитать про Realtime в Астериске?
exten => _555.,1,System(/scripts/fetch_dialplan.pl _555.); #вернуть действие
ужас!

Re: Динамическое определение шаблона - как сделать?

Добавлено: 28 авг 2013, 12:28
vaskodegama
хочу хранить диалпланы в базе, не описывая каждый в extension.conf

например в бд две таблицы

таблица extension

ext_id ext_template

1 _7812.
2 78122128506

таблица actions

action_id ext_id action timeout
1 1 Dial 20
2 1 Voicemail
3 1 Hangup()
4 2 Playback()
5 2 Hangup()

нужно определить что extension 78122128506 попадает в ext_id = 2 с приоритетом большим, чем ext_id=1, строго как в астериске
в общем видимо решение с realtime хотя бы на этапе вхождения в диалплан в соответствии с шаблоном а потом уже пляски от него - лучше, чем прогонять ${EXTEN } по всем шаблонам из базы

Re: Динамическое определение шаблона - как сделать?

Добавлено: 28 авг 2013, 13:51
Samael28
Откройте для себя AGI. И делайте на PHP/Perl/Bash/C.... что хотите и как хотите :)

Re: Динамическое определение шаблона - как сделать?

Добавлено: 28 авг 2013, 14:00
ded
... и/или ael...

Re: Динамическое определение шаблона - как сделать?

Добавлено: 28 авг 2013, 19:04
vaskodegama
я наверное плохой объяснятель.
мне нужно, чтобы звонок прилетевший в соответствующий шаблон сопоставить с нужным правилом которое хранится в БД
если делать все скриптами, то нужен разбор шаблона по правилам астериска

в общем пока ничего лучше не придумал чем запихивать первую строку диалплана в realtime extension которая дальше передает управление скрипту

типо так:
extent => _555., AGI(script, параметры)
и все последующие действия производить через agi в скрипте

а в идеале хотелось сначала в extension.conf оставить всего одну строчку

exten => _X.,1,AGI(скрипт, параметры)

Re: Динамическое определение шаблона - как сделать?

Добавлено: 28 авг 2013, 19:37
Samael28
Какая-то у Вас архитектура загадочная..... Может Вы просто объясните, что хотите в конце получить, пому как путь отдает кривизной.

Re: Динамическое определение шаблона - как сделать?

Добавлено: 28 авг 2013, 21:20
vaskodegama
нормальная архитектура. ))) просто хотел всю логику свалить на AGI и БД не используя extensions.conf
в итоге понял, что получится свой Realtime только с особенностями. в частности сразу встал вопрос как разбирать экстеншены на предмет вхождения в шаблоны. думал может какая-то системная функция сопоставления есть (выдрать шаблоны из базы, проверить на соотвествие экстеншену)
в итоге делаю связку Realtime+AGI, вопрос уже по сути отпал


кстати, кто-нибудь может кинуться полным описанием полей таблицы sippeers? а то я чую сейчас велосипедов наизабретаю. не могу никак найти. даже в sql-дампе из дистрибутива не было поля canreinvite, сегодня столкнулся что в реалтайм-реализации через мультифон не бегает голос. добавил вручную поле выставил 'no', заработало