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

realtime queue+penalty не работает

0

Здравствуйте,

пробую организовать такую схему: при звонке в очередь звонят все телефоны операторов с самым маленьким пенальти, по проществии 15 секунд, если никто не взял трубку - звонок должен направляться на пенальти выше. Но почему то продолжает звонить у первого оператора :(

penaltychange вроде как не изменяется после 15 секунд... подскажите пожалуйста в где у меня ошибка?

данные:

asterisk 11.8.1

mysql> select * from queue_table\G               
*************************** 1. row ***************************
                  name: managers
           musiconhold: NULL
              announce: NULL
               context: NULL
               timeout: 15
          monitor_join: NULL
        monitor_format: NULL
      queue_youarenext: NULL
        queue_thereare: NULL
    queue_callswaiting: NULL
        queue_holdtime: NULL
         queue_minutes: NULL
         queue_seconds: NULL
        queue_lessthan: NULL
        queue_thankyou: NULL
      queue_reporthold: NULL
    announce_frequency: NULL
announce_round_seconds: NULL
     announce_holdtime: NULL
                 retry: 3
            wrapuptime: NULL
                maxlen: NULL
          servicelevel: NULL
              strategy: rrmemory
             joinempty: NULL
        leavewhenempty: NULL
     eventmemberstatus: NULL
       eventwhencalled: NULL
        reportholdtime: NULL
           memberdelay: NULL
                weight: NULL
        timeoutrestart: NULL
             ringinuse: NULL
       setinterfacevar: NULL
1 row in set (0.00 sec)

mysql> select * from queue_member_table;
+----------+----------------------+------------+-----------+---------+--------+
| uniqueid | membername           | queue_name | interface | penalty | paused |
+----------+----------------------+------------+-----------+---------+--------+
|        1 | user1                | managers   | SIP/1144  |     745 |      0 |
|        2 | user2                | managers   | SIP/1143  |      45 |      0 |
+----------+----------------------+------------+-----------+---------+--------+
2 rows in set (0.00 sec)

# [root@ats1 asterisk]# cat queuerules.conf 
[myrule] penaltychange => 15,1000,1
удалить закрыть спам изменить тег редактировать

спросил 2014-04-08 11:09:26 +0400

akam Gravatar akam
11 1 2

обновил 2014-04-08 13:30:38 +0400

Comments

Не многоваты ли значения пенальти?

zzuz ( 2014-04-08 11:51:05 +0400 )редактировать

оно как то лимитировано? я его хочу просто использовать как приоритет..

akam ( 2014-04-08 12:04:57 +0400 )редактировать

там вроде как обычный инт. нет, просто правило ничего критично не меняет.

meral ( 2014-04-08 14:46:11 +0400 )редактировать

Спасибо за ответ, http://asteriskdocs.org/en/3rdEdition/asterisk-book-html-chunk/ACDid288932.html я читал

то есть политику изменить нельзя? на следующий пенальти звонок перейдет только если все заняты и никак иначе?

akam ( 2014-04-08 15:09:30 +0400 )редактировать

ну плоъхо читали. политику изменить можно. но предложеное вами правило не меняет QUEUE_MIN_PENALTY

meral ( 2014-04-08 15:21:00 +0400 )редактировать

вы наверное имеете ввиду менять как мах так и мin пенальти в queuerules.conf ? к сожалению в моем случае это невозможно, потому что я не знаю какие пенальти будут у агентов и какие/сколько вообще будут агенты. эта таблица каждые 10 минут изменяется, а значение пенальти ставиться - сколько у оператора открытых заявок и у кого меньше заявок - тем должны приходить первые вызовы

akam ( 2014-04-08 15:38:09 +0400 )редактировать

ну а что от community вы хотите то? вы не знаете, мы не знаем. читайте, считайте, пишите скрипты. или наймите человека который за вас это сделает. то как у вас работает сейчас это нормально. так и должно быть. это не баг. 100% не баг. и несвязано с realtime. вообще никак.

meral ( 2014-04-08 16:46:11 +0400 )редактировать

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

meral ( 2014-04-08 16:47:27 +0400 )редактировать

сделал через аги, может кому-нибудь пригодиться.. правда ошибка "ast_carefulwrite: write() returned error: Broken pipe" вылезает в логах, но это уже другая истороия...

#!/usr/local/rvm/rubies/ruby-1.9.3-p545/bin/ruby
# encoding: UTF-8

require 'mysql'
agents = Hash.new
@last_agents = Array.new
con = Mysql.new('host', 'asterisk', 'pass', 'asterisk')
query = "select penalty,interface from queue_member_table order by penalty"
rs = con.query(query)
rs.each_hash do |h|
  agents[h['penalty']] = Array.new if agents[h['penalty']].nil?
  agents[h['penalty']].push h['interface']
end
# Проходимся по хэшу агентов
agents.each do |penalty,agent|
  agent.map! {|a| "SIP/#{a}" }
  # Преобразуем массив агентов в строку
  # и добавляем агентов с прошлых итераций
  @last_agents.push agent
  agent = @last_agents.join("&")
  puts "EXEC Dial \"#{agent},10,mtgk\""
end
puts 'EXEC Hangup'
akam ( 2014-04-09 11:55:54 +0400 )редактировать

жесть. вы хоть проверьте а не ответил ли предыдущий человек!!! пипец какойто.

meral ( 2014-04-09 22:48:15 +0400 )редактировать

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

akam ( 2014-04-10 08:11:20 +0400 )редактировать

если в вашем скрипте ктото из called ответит, потом поговорит и положит трубку, скрипт дальше звонить будет.

meral ( 2014-04-10 12:16:32 +0400 )редактировать

1 Ответ

0

пенальти не зависят от реалтайм.

вы уверены, что вы правильно поняли значение пенальти?

вот это читали?

http://asteriskdocs.org/en/3rdEdition/asterisk-book-html-chunk/ACDid288932.html

ваше правило стоит читать так

After 15 seconds, adjust QUEUE_MAX_PENALTY to 1000 and adjust QUEUE_MIN_PENALTY to 1

после чего очередь ведет себя точно также как и до этого, а именно звонит первому агенту(penalty 45 >=1) если он не занят. если занят, звонит второму(745<1000)

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

ответил 2014-04-08 14:43:50 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

обновил 2014-04-08 14:46:47 +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)!
[скрыть предварительный просмотр]

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

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

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

Статистика

Задан: 2014-04-08 11:09:26 +0400

Просмотрен: 522 раз

Обновлен: Apr 08 '14

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

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