Всё нижепечисленное происходило на FreeBSD 7.2, asterisk 1.4.25.
1) Введение.
Первым делом нужна поддержка звука. Если у вас она есть, значит пропускаем этот пункт. Если нет, тогда читаем. Добавить поддержку звука можно 2-мя способами: вкомпиллить в ядро или загрузить модулем. Какой вам больше нравиться, тот и выбираем, я же опишу оба.
– загрузка модулем.
Грузим модуль snd_driver (этим мы загрузим все модули для всех звуклвых карт, если вы знаете точно какая именно у вас, значит грузите только тот; все модули можно посмотреть командой ls /boot/kernel/snd_*):
#cd /boot/kernel && kldload snd_driver && kldstat
Id Refs Address Size Name
1 35 0xc0400000 97fa60 kernel
2 1 0xc0d80000 6a45c acpi.ko
3 1 0xc37ff000 4000 nullfs.ko
4 1 0xc3832000 4000 fdescfs.ko
5 1 0xc5667000 2000 snd_driver.ko
6 1 0xc57d7000 5000 snd_vibes.ko
7 34 0xc6014000 3f000 sound.ko
8 1 0xc56b9000 4000 snd_via82c686.ko
9 1 0xc5bae000 7000 snd_via8233.ko
10 1 0xc5ba6000 5000 snd_t4dwave.ko
11 3 0xc56c2000 3000 snd_spicds.ko
12 1 0xc5bce000 5000 snd_solo.ko
13 4 0xc57b3000 4000 snd_sbc.ko
14 1 0xc5a7c000 4000 snd_sb8.ko
15 1 0xc5b44000 4000 snd_sb16.ko
16 1 0xc5d2b000 11000 snd_neomagic.ko
17 2 0xc5bd3000 a000 snd_mss.ko
18 1 0xc5bee000 9000 snd_maestro3.ko
19 1 0xc5d1d000 8000 snd_maestro.ko
20 1 0xc5d0c000 6000 snd_ich.ko
21 1 0xc5f1b000 19000 snd_hda.ko
22 1 0xc5b89000 4000 snd_fm801.ko
23 1 0xc5c3b000 5000 snd_ess.ko
24 1 0xc5d42000 8000 snd_es137x.ko
25 1 0xc5dde000 7000 snd_envy24ht.ko
26 1 0xc5dea000 8000 snd_envy24.ko
27 1 0xc5df4000 12000 snd_emu10kx.ko
28 1 0xc5e4f000 b000 snd_ds1.ko
29 2 0xc5e5d000 7000 snd_csa.ko
30 1 0xc5d3c000 5000 snd_cs4281.ko
31 1 0xc5d4a000 5000 snd_cmi.ko
32 1 0xc5d73000 6000 snd_atiixp.ko
33 1 0xc5d82000 5000 snd_als4000.ko
34 1 0xc5bf7000 4000 snd_ad1816.ko
Как видим, модули успешно подгрузились. Что бы после ребута заново не подгружать, пропишем такую строку в /boot/loader.conf:
snd_driver_load="YES"
– пересборка ядра.
Добавляем в файл конфигурации ядра такую строку
#sound support
device sound
пересобираем ядро и перегружаем машину.
2) Установка asterisk.
На данный момент существует 3 ветки: 1.2, 1.4, 1.6. Какую же версию выбрать? 1.2 – уже устаревает, 1.6 ещё сыровата, а вот 1.4 как раз в самый раз. Идём в порты и ставим:
#cd /usr/ports/net/asterisk && make install clean
Я выбрал такое:
[X] POSTGRES Enable PostgreSQL support
[X] SNMP Enable SNMP support
[X] H323 Enable H.323 support
[X] CODEC_PATCH Apply codec negotiation patch
[X] MISC_PATCHES Apply additional patches
Если у вас есть плата zaptel/dahdi, то выбрать нужно ещё
[X] ZAPTEL Enable Zaptel support
3)Настройка asterisk’a.
После установки идём в каталог /usr/local/etc/asterisk. Опишу минимальные настройки, необходимые для функционирования, в конфигах каждого файла, будут описания, что и зачем. Вот краткое описание, какие файлы для чего предназначены:
– agents.conf: описание агентов
– extensions.conf: описание диалплана (кто куда может звонить)
– queues.conf: описание очередей (какие агенты какой очереди принадлежат)
– sip.conf: описание sip-аккаунтов (аккаунты телефонных аппаратов, софтфонов, …)
#cat agents.conf
persistentagents=yes
agent => 1001,1001,user1 ;Здесь описываем агентов
agent => 1002,1002,user2 ;Формат такой: логин,пароль,описание
#cat extensions.conf
static=yes
writeprotect=yes
autofallthrough=yes
clearglobalvars=no
priorityjumping=no
exten => _20[012],1,Dial(SIP/${EXTEN},40)
exten => _20[012],n,Hangup
;agent login
exten => 1100,1,AgentCallbackLogin(,s,${CALLERID(num)})
exten => 1100,n,HangUp
;agent logout
exten => 1199,1,AgentCallbackLogin(,s,)
exten => 1199,n,HangUp
;call to queue
exten => 555,1,Queue(ccqueue|tThH)
#cat queues.conf
persistentmembers = yes
autofill = yes
monitor-type = MixMonitor
; имя очереди, которая потом используется в extensions.conf
strategy = roundrobin ; тип обзвона агентов
member => Agent/1001 ;Вот они наши агенты
member => Agent/1002 ;
#cat sip.conf
; Enable DNS SRV lookups on outbound calls
context=default ; Default context for incoming calls
allowoverlap=no ; Disable overlap dialing support. (Default is yes)
bindport=5060 ; UDP Port to bind to (SIP standard port is 5060)
; bindport is the local UDP port that Asterisk will listen on
bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all)
srvlookup=yes
[200]
type=friend
host=dynamic
username=200
secret=123
nat=no
canreinvite=no
context=default
callerid=Office <200>
allow=gsm
allow=ulaw
allow=alaw
[201]
type=friend
host=dynamic
username=201
secret=123
nat=no
canreinvite=no
context=default
callerid=Office <201>
allow=gsm
allow=ulaw
allow=alaw
[202]
type=friend
host=dynamic
username=202
secret=123
nat=no
canreinvite=no
context=default
callerid=Office <202>
allow=gsm
allow=ulaw
allow=alaw
4) Описание работы.
Что же мы теперь имеем? У нас есть 3 sip-аккаунта (200,201,202) на которые можно звонить, есть 2 агента 1001, 1002, которые принадлежат одной и той же очереди (ccqueue). Для того, что бы залогиниться под нужным агентом, звоним на номер 1100 и дальше можно слушать сообщение и следовать ему, а можно просто набрать:
НОМЕР_АГЕНТА#ПАРОЛЬ_АГЕНТА#
Например,
1001#1001#
Что бы позвонить и попасть в очередь набираем 555. Очередь настроена следующим образом:roundrobin, то есть по кругу. Сначала звонок приходит на первого агента, потом на второго, потом снова на первого и т.д. Что бы выбрать другой метод – меняем параметр strategy в queue.conf.
5) Что бы завести нового агента, нужно добавить его в agents.conf, queue.conf, после этого зайти в консоль asterisk’a (asterisk -vvvvvr) и выполнить команду:
reload chan_agent.so
Примечание: при изменени настроек в файле queue.conf нужно выполнить команду reload, то есть перечитать полностью конфиги asterisk’a.
2 коментарі “Настраиваем небольшой call center.”
Вот бы еще такую подробную инструкцию после 1.6 и ухода от AgentCallbackLogin
Можно использовать AddQueueMember/RemoveQueueMember