Настраиваем небольшой call center.

Всё нижепечисленное происходило на FreeBSD 7.2asterisk 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
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     
              ; Enable DNS SRV lookups on outbound calls

[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.

Настраиваем небольшой call center.: 2 комментария

  1. Владимир

    Вот бы еще такую подробную инструкцию после 1.6 и ухода от AgentCallbackLogin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *