Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Поставить лимит на исходящие звонки

0

Добрый день Мне нужно написать экстеншн, который поставит на месяц лимитку на звонки на междугородний и мобильный выход. Допустим на номер 400000 дать 100 минут на месяц и.т.д Я читала книжки про то как пишутся диалпланы и кажется у меня получилось написать диалплан который ставит лимит на один звонок, а как сделать на целый месяц?

exten=>+77XXXXXXXXX,n,GotoIf($["${DB(limit/${CALLERID(number)})}"="1"]?:unlimited)
exten => +77XXXXXXXXX,n,Set(TRUNK_OPTIONS=${TRUNK_OPTIONS}L(420000[:30000][:15000]))
exten => +77XXXXXXXXX,n,Set(LIMIT_WARNING_FILE=beep)
exten => +77XXXXXXXXX,n,Set(LIMIT_TIMEOUT_FILE=timeout)
exten => +77XXXXXXXXX,n,Set(LIMIT_PLAYAUDIO_CALLEE=yes)
exten => +77XXXXXXXXX,n,Set(LIMIT_PLAYAUDIO_CALLER=yes)
exten => +77XXXXXXXXX,n(unlimited),Goto(outbound-allroutes,${EXTEN},1)

Есть ли такая возможность? Я знаю есть такая функция gotoiftime() который может ограничить по времени, но можно ли так сделать на каждый месяц и поставить лимитку? Есть ли какая-та функция, я не знаю с помощью которого можно выбрать промежуток времени допустим с первого января до первого февраля 100 минут, и сделать так на каждый месяц? Но что то с gotoiftime() у меня не идет, читала про все возможные функций что может помочь мне справится с задачей, ничего не нашла( может я не там копаю, логику построения не понимаю. я понимаю когда идет один звонок и ставится лимит, как в моем случае на 7 минут, после истечения звонок автоматический прерывается, но как сделать по времени?

Я похожий вопрос читала, там не нашла ответа, мне не нужен биллинг, мне не нужен модуль, мне нужно диалплан написать(

удалить закрыть спам изменить тег редактировать

спросил 2014-01-21 17:32:10 +0400

Diana92 Gravatar Diana92
11 8 1 6

обновил 2014-01-21 17:44:02 +0400

Comments

самый простой вариант использовать функцию DB. раз в месяце обнулять. но вообще похоже вам надо когото нанять.

meral ( 2014-01-21 20:07:46 +0400 )редактировать

кого-то нанять)))) я не в состояний кого-то там нанимать)))) а вообще я для себя

Diana92 ( 2014-01-22 16:09:36 +0400 )редактировать

1 Ответ

1

Биллинг Вам нужен, биллинг. Пусть простой, но биллинг. В общем случае алгоритм такой:

  1. Извлечь из БД уже имеющееся количество минут
  2. Запомнить в переменной
  3. Если не превышен лимит, позволить позвонить
  4. После звонка в экстене h количество billsec сложить с переменной
  5. Полученное значение поместить в бд
ссылка удалить спам редактировать

ответил 2014-01-21 18:32:44 +0400

switch Gravatar switch
8334 11 7 92
http://lynks.ru/

Comments

так не будет работать. логическая ошибка. надо после 3 - заново перечитать переменную. а лучше в бд делать сразу update с + а не четкое занчение.

meral ( 2014-01-21 20:06:38 +0400 )редактировать

Самое интересное - это динамическое назначение L() в Dial .

zzuz ( 2014-01-22 03:43:08 +0400 )редактировать

Я записала CDR в MySQL базу. Алгоритм насколько я поняла 1.Взять текущий месяц приравнять его переменной(month) 2.Подключится к базе найти billsec приравнять его в другую переменную(time) 3.Сравнить calldate из базы с текущем месяцем (month) 4.time сравнить с нужным лимитом , допусти если 100 минут проверяем с 6000 секундами, и если не превышен делать dial(). 4.Если превышен то поставить какой нибудь коллбэк типа лимит превышен. Я все правильно поняла?

Diana92 ( 2014-01-22 09:34:40 +0400 )редактировать

лучше в бд делать сразу update с + а не четкое занчение.

meral, не совсем поняла вас)

Diana92 ( 2014-01-22 09:50:53 +0400 )редактировать

у вас курс многопоточного программирования был? когда все это кодируете надо учитывать что выполнятся будет в несколько потоков и могут быть коллизии. вообще посмотриет какойто биллинг там уже все сделано. тот же код a2billing например. реализация через "каждый раз ищем в базе все billsec" положит ваш сервер намертво уже при 50000 звонков в месяц.

meral ( 2014-01-22 13:32:33 +0400 )редактировать

Да мне не для пользования, мне просто нужно написать. Будут они пользоваться или нет их проблема, мне просто надо реализовать и показать. Если им нужен a2billing я им поставлю и настрою. )))

Мне просто нужно узнать по тому алгоритму возможно же реализовать? Я даже начала писать, только у меня что-то это не работает(

Diana92 ( 2014-01-22 14:32:08 +0400 )редактировать

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

meral ( 2014-01-22 21:28:43 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2014-01-21 17:32:10 +0400

Просмотрен: 1,263 раз

Обновлен: Jan 21 '14

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.