Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

Для понимания работы с Asterisk необходимо уметь настраивать его вручную с конфигурационными файлами и командной строкой CLI Asterisk.

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Определение ответственного менеджера средствами Asterisk

База знаний Настройка Asterisk
В этой статье мы обсудим реализацию определения ответственого менеджера, который последним разговаривал с клиентом, после того, когда оператор вызывал клиента.
Скажем, к слову, что определение менеджера, который первым разговаривал с клиентом, при его первом обращении делается по аналогии с данной статьёй
Для начала создадим контекст в который будут попадать звонки от оператора. В данном примере, мы назовем контекст [detect]

[detect]
exten => 4951112233,1,Gosub(app-get-manager-and-type,s,1)
same => n,Set(CALLERID(num)=${CALLERID(num)})
same => n,Set(CALLERID(name)=${CALLERID(name)})
same => n,Set(CALLERID(ANI-num)=${CALLERID(ANI-num)})
same => n,Goto(from-trunk,4951112233,1)
exten => _X.,1,Goto(from-trunk,${EXTEN},1)]

Первым делом, при наборе номера 4951112233 направим звонок в контекст [app-get-manager-and-type] с сохранением заданых аргументов в данном контексте.

[app-get-manager-and-type]
exten => s,1,Set(MANAGER=)
same => n,GotoIf($[${LEN(${CALLERID(num)})} < 10]?end)
same => n,Set(MANAGER=${ODBC_FINDMGR(${CALLERID(num):-10:10})})
same => n(end),Return

В этом контексте мы установим переменную MANAGER в которую мы будем передавать значение выборки из таблицы cdr базы данных asteriskcdrdb. Данный запрос должен быть описан в файле func_odbc.conf

select dst from cdr where src like '%${SQL_ESC(${ARG1})}' and calldate BETWEEN (NOW() - INTERVAL 1 DAY) and NOW() and (disposition='ANSWERED' OR disposition='NO ANSWER' OR disposition='BUSY') ORDER BY calldate DESC LIMIT 1

Далее, для работы определения ответственного менеджера и напрвлении звонка на него необходимо несколько вещей:
1. Создать контекст куда из входящего маршрута будет направляться обработка звонка
2. Создать Дополнительно назначение и звонок направить на него.
Опишем первый пункт более подробно.
В данном примере был создан контекст [detet-number]. Вы можете использовать любой другой.

[detect-number]
exten => start,1,NoOp(CID = ${CALLERID(num)})
same => n,GotoIf($["${CALLERID(num)}"=""]?anonim)
same => n,NoOp(MANAGER_MGR=${MANAGER})
same => n(anonim),GotoIf($["${MANAGER_MGR}"=""]?ext-queues,1000,1) ;
same => n(check_manager),NoOp(${MANAGER_MGR} is ${DEVICE_STATE(${MANAGER_MGR})})
same => n,GotoIf($["${DEVICE_STATE(${MANAGER_MGR})}"!="NOT_INUSE"]?busy:detect-number,i,1)
same => n(busy),Goto(ext-queues,1000,1)
exten => i,1,Goto(personal-manager,start,1)

В данном разделе мы определяем параметр CALLERID(num) и проверяем был ли разговор с менеджером. Если такое условие не выполняется, то отправляем звонок на коллцентр.
Ext-queues,1000,1
Если все же был разговор в период установленный в SQL запросе в файле func_odbc.conf, в нашем примере это 1 день, то проверяется аппарат менеджера на состояния занятости. Если аппарат свободен и менеджер не разговаривает в данный момент, то звонок направляется на экстеншн i d данном контексте. Где в дальнейшем идет обработка в следующем контексте. Для простоты мы его назвали [personal-manager]

[personal-manager]
exten => start,1,NoOp(Вызываем менеджера ${MANAGER_MGR})
same => n,Dial(Local/${MANAGER_MGR}@from-internal/n,15)
same => n(skip),Goto(ext-queues,1000,1)
same => n,Hangup

Здесь мы вызываем ответственного менеджа в течении 15 секунд, и если он не отвечает, то звонок направляется на коллцентр.
Опишем второй пункт
Пользуясь модулем Custom Destinations создаем дополнительно направление с направлением на экстенш start в контекст detect-number

Модуль Custom Destinations

Далее переходим в наш входящий маршрут и устанавливаем в нужном месте направление на созданное Вами дополнительное направление.

Входящая маршрутизация

limit, callerid, ODBC, определение номера