artem
16.04.2015
15422

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

Если требуется, чтобы какой-то внешний обработчик добавлял очереди и операторов в них, то можно настроить создание очередей через 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 [email protected], 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

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

Кейсы внедрения
Asterisk от VoxLink
Узнайте, какие крупные компании уже используют Asterisk в работе.
Скачать
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

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

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

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


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

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

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

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.