artem
16.04.2015
7915

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

И так, первое что необходимо сделать, это создать файл 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

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

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices