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

"Интересное" ограничение исходящих вызовов

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

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

fecyt
Сообщения: 148
Зарегистрирован: 17 янв 2017, 17:51

Re: "Интересное" ограничение исходящих вызовов

Сообщение fecyt »

А можно было просто сделать свой контекст для этих сотрудников, и было бы три строки а не 92 шаблона...
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: "Интересное" ограничение исходящих вызовов

Сообщение chardisdze »

ну по сути я и сделал для данных ext отдельный контекст с шаблонами.
Если не трудно, поясните пожалуйста, каким образом данный функционал запихать в три строки?
fecyt
Сообщения: 148
Зарегистрирован: 17 янв 2017, 17:51

Re: "Интересное" ограничение исходящих вызовов

Сообщение fecyt »

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

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

exten => _XXX,1,Goto(from-internal,${EXTEN},1)
exten => _XXXXXX,1,Goto(from-internal,${EXTEN},1)
exten => _X.,1,Hangup()
Ну и для некорректного ввода, если в этом есть необходимость.
fecyt
Сообщения: 148
Зарегистрирован: 17 янв 2017, 17:51

Re: "Интересное" ограничение исходящих вызовов

Сообщение fecyt »

Или под шаблоном в 92 правила Вы подразумеваете 92 варианта ввода номера?
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: "Интересное" ограничение исходящих вызовов

Сообщение chardisdze »

почти. DEF-лист операторов сотовой связи содержит данные по всем телефонным пулам. Например номер 9999999699 это номер Приморского края, а 9999999700 номер уже Нижегородской области, но одного оператора. И для того чтобы разрешить звонить на номера только Нижегородской области и приходиться работать с шаблонами, коих вагон. Если интересно, могу выкинуть что получилось.
А из опыта старожил, есть способы интереснее и правильнее (как они считают). Но судить не имею права, т.к. еще только двигаюсь к познанию новых методов и способов, а у них опыта больше ;)
fecyt
Сообщения: 148
Зарегистрирован: 17 янв 2017, 17:51

Re: "Интересное" ограничение исходящих вызовов

Сообщение fecyt »

Ну, тут Вам уже ответили, завести все это в БД и чекать оттуда.
shader
Сообщения: 117
Зарегистрирован: 09 авг 2013, 10:33

Re: "Интересное" ограничение исходящих вызовов

Сообщение shader »

Вполне простая задача.... Решается (как выше верно упомянули) правильней всего AGI и БД.
У меня так сделано: есть в БД таблица направлений. В ней я указываю шаблон дозвона, уровень доступа (cor - class of restriction. Тэрмин честно стырил у Авайи :)))), статус направления. (всего около 802 записи).
К этой таблице соотношением один ко многим привязана другая таблица, где прописаны доступные исходящие операторы и их цены (на каждое конкретное направление). Есть таблица cor - в ней я создал градации уровня доступа (всего получилось около 20 шт: только экстренные службы, только город, только область, Россия, СНГ, ближнее зарубежье ну и др). таблица пересечений cor: с каких на какие можно звонить.

В начале каждого звонка:
-проверятся право абонента звонить на конкретный номер
- выбирается наиболее недорогой провайдер для этого направления
а диалплан выглядит почти так :

exten => _X.,1,AGI(do-some-cool-magic.pl)
same => n,Dial(SIP/${provider}/${to_exten},60,${dial_opts})

Начать, в общем то не так сложно (если есть базовые навыки программмирования.
Для парсинга и манипуляции с данными телефонии хорошо подходит perl. И не надо устанавливать. Уже встроен в любой linux.

Начинаем так: Берем класс: http://search.cpan.org/~jamesgol/asteri ... isk/AGI.pm
прикручиваем к системе: cpan install Asterisk::AGI

Хотим ходить в БД? Не вопрос: http://search.cpan.org/~timb/DBI-1.640/DBI.pm
cpan install DBI (+DBD::Pg для postgres, для других хз. Читать доку.)

Хотим отправлять в процессе звонка сообщения? к примеру, в Jabber, пфф, легко:
http://search.cpan.org/~dapatrick/Net-X ... et/XMPP.pm

Хотим стильно, модно, молодежно? Не вопрос! Telegram:
http://search.cpan.org/~robertof/WWW-Te ... /BotAPI.pm

Хотим не говнокодить и вынести нужные вещи в аккуратный конфиг? ОК:
http://search.cpan.org/~sherzodr/Config ... /Simple.pm

Ну и конечно, думаю бессысленно напоминать про всю мощь регулярных выражений в Perl ;)


test.pl:

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

...
use strict;
...
use Asterisk::AGI;
...
my $AGI             = new Asterisk::AGI; # создаем экземпляр класса
my $exten           = $AGI->get_variable('EXTEN') # Читаем из диалплана переменную EXTEN;
my $callerid        = $AGI->get_variable('CALLERID(num)'); # Читаем из диалплана номер звонящего
...
# Читаем миллион других переменных
# Творим с этими переменными что-то невероятное
my $dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=$host","$username","$password", {PrintError => 0});
# Подключились к БД. Запросы и прочее см. Доку (ссылка выше)
# Идем в БД 

# И пишем обратно в диалплан:
$AGI->set_variable('new_caiilng_num',$callerid);
...
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: "Интересное" ограничение исходящих вызовов

Сообщение ded »

выбирается наиболее недорогой провайдер для этого направления
Механизм уже многократно отработанный в софтсвичах - Least Cost Routing (LCR), реализован во FreeSWITCH например как модуль - mod_lcr
https://freeswitch.org/confluence/displ ... CH/mod_lcr
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH