Очереди Астериск в 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
Все работает как задумано.

Остались вопросы?
Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.