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

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

спросил Apr 8 '14

akam Gravatar akam
11 1 2

обновил Apr 8 '14

Comments

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

zzuz (Apr 8 '14)edit

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

akam (Apr 8 '14)edit

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

meral (Apr 8 '14)edit

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

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

akam (Apr 8 '14)edit

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

meral (Apr 8 '14)edit

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

akam (Apr 8 '14)edit

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

meral (Apr 8 '14)edit

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

meral (Apr 8 '14)edit

сделал через аги, может кому-нибудь пригодиться.. правда ошибка "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 (Apr 9 '14)edit

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

meral (Apr 9 '14)edit

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

akam (Apr 10 '14)edit

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

meral (Apr 10 '14)edit

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)

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

ответил Apr 8 '14

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

обновил Apr 8 '14

Ваш ответ

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 ленту новостей

Статистика

Задан: Apr 8 '14

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

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

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

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