VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Маршрутизация вызовов. (очереди)

Проблемы Asterisk без вэб-оболочек и их решения

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

aleksashechka
Сообщения: 30
Зарегистрирован: 31 авг 2015, 10:30

Маршрутизация вызовов. (очереди)

Сообщение aleksashechka »

Добрый день.

Подскажите, есть ли возможность настроить маршрутизацию звонка в очередь по входящему номеру телефона (по целому списку)?
Во FreePBX можно настроить маршрутизацию по CID, но прописывать 150 маршрутов для 150 номеров не самый удобный вариант.

п.с. маршрутизация по cidname как одно из решений не подходит, очень хотелось бы именно по cid.
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Маршрутизация вызовов. (очереди)

Сообщение ded »

Надо делать такую фичу - cidlookup
заготовки для неё во FreePBX есть, и надо её только чуть подрихтовать по условию: входящий обрабатыватся стандартно через cidlookup, и если есть в списке - кидает куда надо, а если нет - кидает куда не надо.
aleksashechka
Сообщения: 30
Зарегистрирован: 31 авг 2015, 10:30

Re: Маршрутизация вызовов. (очереди)

Сообщение aleksashechka »

У меня cidlookup настроен, определение имени по номеру из asterisk phonebook.
Весь вопрос в том как заставить asterisk смотреть какой то другой список номеров, который к примеру я храню в файлике, а уже потом согласно правилу перенаправлять по разным очередям.
gland
Сообщения: 115
Зарегистрирован: 25 янв 2012, 11:07

Re: Маршрутизация вызовов. (очереди)

Сообщение gland »

Как вариант, хранить в mysql, запрашивать через agi. У меня в одном из сервисов так проверяется принадлежность номера к тому или иному оператору (слито с россвязи) + проверка на уход из "мобильного рабства". Уход от оператора проверяется раз в сутки скриптом, парсящим детализацию в кабинете. Некоторых операторов пока не осилил, забиваю руками, детализация только файлом, руки пока не дошли.
aleksashechka
Сообщения: 30
Зарегистрирован: 31 авг 2015, 10:30

Re: Маршрутизация вызовов. (очереди)

Сообщение aleksashechka »

Вариант хранения в mysql как то мне не очень нравится, т.е. при каждом входящем звонке будет производится соединение(каждый звонок новое) с базой. А если к примеру писать информацию в astdb "/queuenumber/1234 номер телефона" и в случае совпадения номера телефона маршрутизировать вызов в нужную очередь. Вот только я не догоняю как бы мне прописать такой макрос чтоб выполнял проверку.
gland
Сообщения: 115
Зарегистрирован: 25 янв 2012, 11:07

Re: Маршрутизация вызовов. (очереди)

Сообщение gland »

А чем вам не нравится mysql в качестве источника данных? Переживаете за его производительность? У вас астериск первее ляжет, чем mysql
Хотя чего я, хозяин-барин
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Маршрутизация вызовов. (очереди)

Сообщение ded »

aleksashechka писал(а):Вариант хранения в mysql как то мне не очень нравится, т.е. при каждом входящем звонке будет производится соединение(каждый звонок новое) с базой. А если к примеру писать информацию в astdb "/queuenumber/1234 номер телефона" и в случае совпадения номера телефона маршрутизировать вызов в нужную очередь.
А тот факт, что при каждом входящем звонке уже производится соединение (каждый звонок новое) с базой CDR MySQL Вас не настораживает?
А тот факт, что писать информацию в astdb - это тоже соединение с базой, только не MySQL, а другой, Вас не удивляет?
aleksashechka
Сообщения: 30
Зарегистрирован: 31 авг 2015, 10:30

Re: Маршрутизация вызовов. (очереди)

Сообщение aleksashechka »

Как то я мыслю видать не додумал, пардон. Буду думать дальше.
aleksashechka
Сообщения: 30
Зарегистрирован: 31 авг 2015, 10:30

Re: Маршрутизация вызовов. (очереди)

Сообщение aleksashechka »

Вот я тут сделал простое решение проблемы.

1) Создал таблицу в MySql в бд asteriskcdrdb (создал именно в этой бд т.к. астериск всегда держит с ней коннект)
CREATE TABLE IF NOT EXISTS `route` (
`incnum` varchar(80) NOT NULL,
`distnum` varchar(80) NOT NULL
);

2) В файле /etc/asterisk/func_odbc.conf создал функцию (у меня FreePBX. данного конфига не было, создал ручками)
[GET_ROUTE] ;
dsn=asteriskcdrdb;
readsql=SELECT distnum FROM route WHERE incnum='${ARG1}' ;

3) поправил входящий транк (он у меня один, настроен через шлюз quintum)
exten => _.,1,Gosub(cidlookup,cidlookup_2,1)
exten => _.,n,Set(GROUP()=OUT_2)
exten => _.,n,Set(DNUMB=${ODBC_GET_ROUTE(${CALLERID(num)})})
exten => _.,n,Gotoif($["${EXTEN}"="номер колл-центра"]?(from-trunk-sip-Tenor,999))
exten => _.,n,Goto(from-trunk,${EXTEN},1)

exten => _.,999,ExecIf($["${DNUMB}" !=""]?Goto(from-internal,${DNUMB},1))
exten => _.,n,ExecIf($["${DNUMB}" = ""]?Goto(from-internal,номер дефолтной очереди,1))

Хотел узнать ваше мнение по данному вопросу, схема работает. Вот только на сколько это правильно не знаю.
По сути я могу рулить маршрутизацией по очередям меня данные в mysql таблице.
gland
Сообщения: 115
Зарегистрирован: 25 янв 2012, 11:07

Re: Маршрутизация вызовов. (очереди)

Сообщение gland »

Это почти ничем, кроме нативности, абсолютно ничем, кроме производительности и абсолютно всем,кроме применимости извне отличается от mysql
PS Яне к тому, что это плохо. просто это малопереносимо. отсудо ноги поста
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH