AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

приоритеты в очередях

Asterisk IP PBX 6 сообщений 14.10.2010 12:53 - 18.10.2010 10:37
#1 14.10.2010 12:53

приоритеты в очередях

Добрый день.
Поставлен trixbox 2.6.2, на его основе настроен небольшой колл-центр: менюшка и три очереди. Однако появилась необходимость для нескольких важных клиентосов поставить высокий приоритет в очереди. Нашла вот такую заметку http://mysyslog.ru/posts/196
Судя из нее номера клиентов надо как-то запихать в базу astdb в vipclients. Подскажите, пожалуйста, как это сделать.
#2 14.10.2010 13:04
заметка твоя не открывается, почитай эту:
http://asteriskpbx.ru/wiki/CallQueues
Приоритет звонка попадающего в очередь определяется специальной переменной QUEUE_PRIO. Большие значения её, означают больший приоритет. Не определяя данную переменную, приоритет устанавливается на нулевой, по умолчанию (FIFO).
ловите звонок с нужным CallerID, присваиваете ему приоритет и отправляете в очередь.
#3 14.10.2010 14:30
вот та заметка

Приоритет в очередях звонков Asterisk

Asterisk обрабатывает звонки в очередях по принципу FIFO, т.е. звонки будут обрабатываться один за одним по мере их поступления в очередь. Но если вы хотите каким-то клиентам предоставить приоритетное обслуживание? Для таких целей приложение Queue имеет опцию приоритета при постановке звонка в очередь.


Теперь разобьем общую задачу на более мелкие:
1) Первым делом нужно определить, нужно ли звонку выставить более высокий приоритет
2) Выставить приоритет
3) Поставить звонок в очередь

Все эти задачи реализованы в контексте:
[queue]
exten => s,1,GotoIf(${DB_EXISTS(vipclients/${CALLERID(num)})}?setprior)
exten => s,n,Set(QUEUE_PRIO=5)
exten => s,n(gotoqueue),Queue(manager-queue)
exten => s,n,Hungup()
exten => s,n(setprior),Set(QUEUE_PRIO=10)
exten => s,n,Goto(gotoqueue)

exten => h,1,Hangup()
exten => i,1,Hangup()

В первой строчке проверяется база astdb на наличие номера в семействе vipclients (в это семейство будут помещаться номера с повышенным приоритетом). Если номер есть в базе, то звонок перекидывается к метке setprior, где выставляется более высокий приоритет, после чего звонок перекидывается в очередь (gotoqueue).


Added after 54 minutes:
terminal писал(а):заметка твоя не открывается, почитай эту:
http://asteriskpbx.ru/wiki/CallQueues

чет не совсем из статьи поняла. вот там написано
; Важные клиенты
exten => 111,1,Playback(welcome)
exten => 111,2,SetVar(QUEUE_PRIO=10)
exten => 111,3,Queue(support)

; Менее важные клиенты
exten => 112,1,Playback(welcome)
exten => 112,2,SetVar(QUEUE_PRIO=5)
exten => 112,3,Queue(support)

здесь 111 - CallerID клиента?
а если у меня маршрут прописан
exten=>5050,1,Goto(ivr-5,s,1)
как в таком случае поступать? я не могу конкретно указать очередь, ее должен выбрать клиент.

еще не понятно из статьи, если 111 - номер клиента, то какой номер набирает сам клиент, чтобы попасть в очередь.
у меня две атс: авая и астериск, авая связана с городом по е1, с астериском по н.323. на авае прописано, все звонки на номер 46хххх отправлять на 5050.
#4 15.10.2010 09:40
пошла от обратного, нашла http://asterisk.ru/knowledgebase/Asteri ... sions.conf следующее:

Другой вариант выбора екстеншена основывается на номере вызывающего абонента, "логика параноика". По этой логике мы определяем набранный екстеншен, в зависимости от того, откуда поступил вызов, основываясь на caller-ID звонящего. Например:

exten => 123/100,1,Answer()
exten => 123/100,2,Playback(tt-weasels)
exten => 123/100,3,Voicemail(123)
exten => 123/100,4,Hangup()

Эта запись соответствует екстеншену 123 и эти команды будут выполнены, ТОЛЬКО ЕСЛИ Caller-ID вызывающего абонента - 100.

Дальше делаю для пробы
exten => 5050/2037,1,Playback(welcome)
exten => 5050/2037,2,SetVar(QUEUE_PRIO=10)
exten => 5040/2035,3,Goto(ivr-5,s,1)
exten => 5040,1,Goto(ivr-5,s,1)

Звоню с любого номера, попадаю в ivr, звоню с номера 2037, мне проигрывает сообщение и кладет трубку, спотыкаясь на команде SetVar(QUEUE_PRIO=10)

в консоли пишет следующее:
-- Executing [5050@default:1] Playback("H323/ip$10.х.х.х:12391/23466", "welcome") in new stack
-- Playing 'welcome' (language 'en')
== Spawn extension (default, 5040, 2) exited non-zero on 'H323/ip$10.x.x.x:12391/23466'
-- Executing [h@default:1] Hangup("H323/ip$10.x.x.x:12391/23466", "") in new stack
== Spawn extension (default, h, 1) exited non-zero on 'H323/ip$10.x.x.x:12391/23466'


подскажи плз, что не понравилось???? очень-очень надо
#5 16.10.2010 22:03
exten => 5050/2037,2,SetVar(QUEUE_PRIO=10)
exten => 5040/2035,3,Goto(ivr-5,s,1)
exten => 5040,1,Goto(ivr-5,s,1)

Также можно попробовать поставить модуль Queue Priorities для FreePBX и уже в него рулить важных клиентов.
#6 18.10.2010 10:37
Все получилось. вместо
exten => 5050/2037,2,SetVar(QUEUE_PRIO=10)
написала
exten => 5050/2037,2,Set(QUEUE_PRIO=10)
и все сразу заработало =)))