LINUX.ORG.RU
решено ФорумAdmin

Asterisk 1.8.32.3 - Пропуск занятых операторов, как ? (все операторы заняты)

 


0

1

Система простая и настроена просто.
Принцип работы такой:
Когда звонок поступает на наш сервак, то играет ГОЛОСОВОЕ МЕНЮ
В меню есть выбор от 0 до 9.
Если нажать на 0 - то перебрасывает на строку, которая звонит сразу всем ОПЕРАТОРАМ.
И один и тот же оператор может видеть звонящего на своей линии, даже когда он уже с кем-то говорит.

Как сделать так, чтоб если оператор занят, то к нему не звонило , а пробовало следующего оператора, свободного
А уж если все операторы заняты, то пусть скажет ОБ ЭТОМ голосом
Можно как-то не сильно сложно это сделать, потому как я только начал познавать астериск ???.
----------------------

[incoming]
; Поднимаем трубку, проговариваем меню выбора, ждем 10 секунд, пока выберут, иначе кладем трубку.
exten => 380777777717,1,Answer()
exten => 380777777717,n,Background(/usr/local/share/asterisk/sounds/en/001-menu_new5)
exten => 380777777717,n, WaitExten(10)
exten => 380777777717,n,Hangup()




; Если выбрали  "0", то звоним на всех операторов 1007,1004,1002,1003,1001 в течении 20 секунд.
; если за 20 секунд никто трубку не взял, то проигрываем сообщение - ВСЕ ЗАНЯТЫ !!!, потом кладем трубку.
exten => 0,1,Dial(SIP/1007&SIP/1004&SIP/1002&SIP/1003&SIP/1001, 20,m)
exten => 0,n,Playback(vm-nobodyavail)
exten => 0,n,Hangup()


; тут мы на каждый выбор из меню  проигрываем голосовое сообщение. (такие как 001, 002....)
exten => 1,1,Playback(001)
exten => 1,n,Hangup()

exten => 2,1,Playback(002)
exten => 2,n,Hangup()
; и т.д............................


; эта строка заворачивает нас по кругу, чтоб меню еще раз слушать (я так думаю...)
exten => i,1,Goto(incoming, 380777777717,1)
exten => t,1,Playback(vm-nobodyavail)
exten => t,n,Hangup()

Ответ на: комментарий от kernelpanic

Почитал об очереди, но как-то скудно там : 1- перебирает все операторов по очереди 2- звонит на того, кто дольше всех не отвечал на звонки 3- наугад 4- тому, кто меньше всех наговорил за сегодня по времени

больше пока не вижу описания

jester7 ()

ВСЕ ЗАНЯТЫ !!!, потом кладем трубку.

Музычку для ожидания освобождения\очереди не практикуете?

PPP328 ★★★★ ()
Ответ на: комментарий от kernelpanic

Вот еще нашел, но тут не совсем понятно, как именно ведет себя программа

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

ringall: вызываются все доступные участники до тех пор, пока кто-то из них не ответит на вызов (по умолчанию).

roundrobin: циклически вызывается каждый из доступных участников. (Устарело в версии 1.4, используйте: rrmemory)

leastrecent: Вызывается первый свободный участник, который меньше всего вызывался из этой очереди.

fewestcalls: Вызывается первый свободный участник, который обработал наименьшее количество вызовов из данной очереди.

random: случайным образом вызывается не занятый участник, обрабатывающий очередь.

rrmemory: циклическое распределение с памятью, запоминается последний участник, ответивший на вызов.

jester7 ()
Ответ на: комментарий от kernelpanic

В файле sip.conf добавил для каждого оператора строку:

call-limit=1

Перебутнул и проверил - ПАШЕТ )))) Теперь когда один звонок висит на операторе, то второму звонку выдается вот такое сообщение:

update_call_counter: Call to peer '1001' rejected due to usage limit of 1

Тоесть второй человек мне на линию не может повиснуть и в программе PHONERLITE я не увижу, что мне кто-то звонит.

А исходя из конфига моего, если все заняты, то звонившему выдается сообщение - ВСЕ ОПЕРАТОРЫ ЗАНЯТЫ.

Спасибо всем за помощь - ЗАРАБОТАЛО!!!!!

jester7 ()
Ответ на: комментарий от jester7

Теперь в файле sip.conf Каждая учетная запись выглядит вот так:

[1007] ; внутренний номер
type=friend
username=1007
secret=password7
host=dynamic
transport=udp
encryption=no
context=outgoing
disallow=all
allow=ulaw
allow=alaw
call-limit=1
jester7 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.