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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Очереди Астериск в RealTime MySQL

База знаний Настройка Asterisk
Если требуется, чтобы какой-то внешний обработчик добавлял очереди и операторов в них, то можно настроить создание очередей через MySQL. Это работает быстро и удобно. Также если, например, у вас FreePBX, то это не помешает вашим существующим очередям. Главное, соблюдать уникальность имен очередей.

И так, первое что необходимо сделать, это создать файл res_mysql.conf:

[asterisk]
dbhost=127.0.0.1
dbname=asterisk
dbuser=freepbxuser
dbpass=mypassword
dbport=3306
requirements=warn

Применим изменения

asterisk -rx 'core reload'

Смотрим статус

asterisk -rx 'realtime mysql status'
asterisk connected to asterisk@127.0.0.1, port 3306 with username freepbxuser for 1 minutes.

Все хорошо, подключение есть.

Теперь необходимо создать таблицы queues, queue_members. Для этого необходимо подключить к вашему MySQL серверу, например, через консоль и выполнить следующие запросы в вашей БД:

CREATE TABLE `queues` (
     `name` VARCHAR(20) NOT NULL COLLATE 'utf8_unicode_ci',
     `musiconhold` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `announce` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `context` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `timeout` INT(11) NULL DEFAULT '15',
     `monitor_type` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `monitor_format` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `queue_youarenext` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `queue_thereare` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `queue_callswaiting` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `queue_holdtime` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `queue_minutes` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `queue_seconds` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `queue_lessthan` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `queue_thankyou` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `queue_reporthold` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `announce_frequency` TINYINT(2) NULL DEFAULT '0',
     `announce_round_seconds` INT(11) NULL DEFAULT '0',
     `announce_holdtime` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `retry` TINYINT(2) NULL DEFAULT '5',
     `wrapuptime` INT(11) NULL DEFAULT '0',
     `maxlen` INT(11) NULL DEFAULT '0',
     `servicelevel` INT(11) NULL DEFAULT '60',
     `strategy` VARCHAR(128) NULL DEFAULT 'ringall' COLLATE 'utf8_unicode_ci',
     `joinempty` TINYINT(1) NULL DEFAULT '0',
     `leavewhenempty` VARCHAR(50) NULL DEFAULT 'no' COLLATE 'utf8_unicode_ci',
     `autopause` VARCHAR(50) NULL DEFAULT 'no' COLLATE 'utf8_unicode_ci',
     `autopausebusy` VARCHAR(50) NULL DEFAULT 'no' COLLATE 'utf8_unicode_ci',
     `autopausedelay` TINYINT(4) NULL DEFAULT '0',
     `autopauseunavail` VARCHAR(50) NULL DEFAULT 'yes' COLLATE 'utf8_unicode_ci',
     `eventmemberstatus` TINYINT(1) NULL DEFAULT '0',
     `eventwhencalled` VARCHAR(6) NULL DEFAULT 'vars' COLLATE 'utf8_unicode_ci',
     `reportholdtime` TINYINT(1) NULL DEFAULT '0',
     `memberdelay` INT(11) NULL DEFAULT '0',
     `weight` INT(11) NULL DEFAULT '0',
     `timeoutrestart` TINYINT(1) NULL DEFAULT '0',
     `periodic_announce` VARCHAR(50) NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
     `periodic_announce_frequency` INT(11) NULL DEFAULT '0',
     `ringinuse` TINYINT(1) NULL DEFAULT '0',
     `setinterfacevar` TINYINT(1) NULL DEFAULT '0',
     `setqueuevar` TINYINT(1) NOT NULL DEFAULT '1',
     `setqueueentryvar` TINYINT(1) NOT NULL DEFAULT '1',
     PRIMARY KEY (`name`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;


CREATE TABLE `queue_members` (
      `uniqueid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `membername` VARCHAR(40) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
      `queue_name` VARCHAR(128) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
      `interface` VARCHAR(128) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
      `penalty` INT(11) NULL DEFAULT '0',
      `paused` INT(11) NULL DEFAULT '0',
      PRIMARY KEY (`uniqueid`),
      UNIQUE INDEX `queue_interface` (`queue_name`, `interface`),
      CONSTRAINT `FK_queue_members_queues` FOREIGN KEY (`queue_name`) REFERENCES` queues` (`name`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1;

Сразу добавим одну очередь для контроля работы:

INSERT INTO queues(name,strategy,context)
VALUES("600","ringall","from-queue");

Теперь правим файл /etc/asterisk/extconfig.conf

[settings]

queues => mysql,asterisk
queue_members => mysql,asterisk

Применим изменения для Астериск

asterisk -rx 'core reload'

Проверяем появилась ли очередь:

[root@localhost ~]# asterisk -rx 'queue show'
600 has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
No Members
No Callers

Да, все хорошо. Теперь добавим пару операторов:

INSERT INTO queue_members(membername,queue_name,interface)
VALUES("101","600","Local/101@from-queue/n");
INSERT INTO queue_members(membername,queue_name,interface)
VALUES("102","600","Local/102@from-queue/n");

Проверяем очереди еще раз на наличие операторов:

[root@localhost ~]# asterisk -rx 'queue show'
600 has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
Members:
102 (Local/102@from-queue/n from Local/102@from-queue/n) (ringinuse enabled) (realtime) (Invalid) has taken no calls yet
101 (Local/101@from-queue/n from Local/101@from-queue/n) (ringinuse enabled) (realtime) (Invalid) has taken no calls yet
No Callers

Все работает как задумано.

for, FreePBX, Подключение, asterisk