BLF Yealink: настройка для создания конференций парой нажатий
В данной статье рассмотрим реализацию сборщика конференций на базе Asterisk, при помощи AMI и кнопок на Yealink аппарате с BLF-панелью (можно настроить BLF наэкранные кнопки, если аппарат поддерживает несколько аккаунтов). Для начала настроим возможность сбора конференций на АТС, с помощью сервисного кода. Создаем скрипт сборки конференций, прописываем данные для подключения и функцию записи в AMI: […]
В данной статье рассмотрим реализацию сборщика конференций на базе Asterisk, при помощи AMI и кнопок на Yealink аппарате с BLF-панелью (можно настроить BLF наэкранные кнопки, если аппарат поддерживает несколько аккаунтов).
Для начала настроим возможность сбора конференций на АТС, с помощью сервисного кода.
Создаем скрипт сборки конференций, прописываем данные для подключения и функцию записи в AMI:
<?php
// AMI доступы
define('AMI_HOST','127.0.0.1');
define('AMI_PORT','5038');
define('AMI_USER','chmuser');
define('AMI_PASS','chmpass');
// MySQL доступы
define('BD_HOST','localhost');
define('BD_USER','chmuser');
define('BD_PASS','chmpass');
// AMI коннектор
function ami_request($ingect){
$answer=false;
if ($socket = fsockopen(AMI_HOST, AMI_PORT, $ac_err_num, $ac_err_msg, 1)){
stream_set_timeout($socket, 1);
$action = "Action: login\r\n";
$action .= "Username: ".AMI_USER."\r\n";
$action .= "Secret: ".AMI_PASS."\r\n\r\n";
$action .= $ingect;
$action .= "Action: Logoff\r\n\r\n";
fwrite($socket,$action);
sleep(1);
$answer = fread($socket,8291);
fclose($socket);
}
return $answer;
}
Получаем переменную, означающую необходимое нам действие (Создать конференцию или добавить нового участника):
$k = $argv[1];
Создаем условия для нужных действий:
//Создание конференции во время разговора
if ($k == 1){
$channel = $argv[2];
$bridgepeer = $argv[3];
$confnum = $argv[4];
print_r($bridgepeer);
print_r($confnum);
//Назначаем переменную CONFNUM для изначального канала
$action = "Action: Setvar\r\n";
$action .= "Channel: $channel\r\n";
$action .= "Variable: CONFNUM\r\n";
$action .= "Value: $confnum\r\n\r\n";
//Назначаем переменную CONFNUM для вызываемого канала
$action .= "Action: Setvar\r\n";
$action .= "Channel: $bridgepeer\r\n";
$action .= "Variable: CONFNUM\r\n";
$action .= "Value: $confnum\r\n\r\n";
//Переводим каналы в конференцию по переданному номеру (CONFNUM)
$action .= "Action: Redirect\r\n";
$action .= "Channel: $bridgepeer\r\n";
$action .= "ExtraChannel: $channel\r\n";
$action .= "Context: conference_sc\r\n";
$action .= "Exten: conference\r\n";
$action .= "Priority: 1\r\n\r\n";
//echo $action;
ami_request($action);
}
Данная часть скрипта создает конференцию в первый раз, когда вы находитесь в разговоре и объединяет обе стороны разговора в нее. Далее нам нужно добавлять новых участников:
//Добавление нового участника
if ($k == 2) {
//Получаем переменные
$confnum = $argv[2];
$inviten = $argv[3];
//Звоним и закидываем в конфу нового участника
$action = "Action: Originate\r\n";
$action .= "Channel: Local/".$inviten."@from-internal\r\n";
$action .= "Context: conference_sc\r\n";
$action .= "Exten: conference\r\n";
$action .= "Priority: 1\r\n";
$action .= "Variable: CONFNUM=".$confnum."\r\n\r\n";
//echo $action;
ami_request($action);
}
Так мы добавляем новых участников конференции.
//Для создание конференций с нуля
if ($k == 3){
//Получаем переменные
$channel = $argv[2];
$confnum = $argv[3];
//Задаем переменные канала
$action = "Action: Setvar\r\n";
$action .= "Channel: $channel\r\n";
$action .= "Variable: CONFNUM\r\n";
$action .= "Value: $confnum\r\n\r\n";
//Редиректим
$action .= "Action: Redirect\r\n";
$action .= "Channel: $channel\r\n";
$action .= "Context: conference_sc\r\n";
$action .= "Exten: conference\r\n";
$action .= "Priority: 1\r\n\r\n";
//echo $action;
ami_request($action);
}
Данная часть создает конференцию с нуля и сразу же добавляет вас в нее. Для работы каждой части нужен также диалплан, ниже приведем его:
[from-internal-custom]
exten => _*5XXX,1,Set(CONFCHAN=${CHANNEL});добавляем имя канала в переменную
same => n,NoOp(${CONFCHAN})
same => n,Set(__CONFNUM=${EXTEN:2});назначаем именем конференции набранный номер
same => n,System(/usr/bin/php -f /opt/conference.php 3 ${CONFCHAN} ${CONFNUM});вызываем скрипт с нужными параметрами (сбор с нуля)
[conference_sc]
exten => conference,1,ConfBridge(${CONFNUM},,,default_menu);подключаемся в конференцию
exten => conference_add,1,Read(INVITEN,dial,11,i);считываем номер следующего участника
same => n,System(/usr/bin/php /opt/conference.php 2 ${CONFNUM} ${INVITEN});добавляем его в конференцию
Также необходимо добавить записи еще в несколько файлов:
confbridge_custom.conf:
[default_menu]
type = menu
*5=dialplan_exec(conference_sc,conference_add,1)
features_applicationmap_custom.conf:
conference => *5,self,System(/usr/bin/php -f /opt/conference.php 1 ${CHANNEL} ${BRIDGEPEER} ${CALLERID(num)})
globals_custom.conf:
DYNAMIC_FEATURES=conference
Данного функционала достаточно для сбора конференции с помощью сервисных кодов, далее необходимо настроить клавиши на аппарате для сбора конференций по клику.
- Переходим в меню DSS-Кнопки -> Кнопки 1-9 и назначаем какой-либо клавише Донабор и наш сервисный код (который указан во feautures_applicationmap_custom)
- Назначаем клавиши BLF либо на клавишах аккаунта, либо на панели BLF (Ext Key).
Сбор в конференцию происходит следующим образом:
- Во время разговора нажимается клавиша, назначенная на донабор, происходит объединение в конференцию
- Затем нажимается клавиша того, кого необходимо добавить в конференцию и ему поступает вызов от номера конференции
- При подъеме трубки со стороны вызываемого его подключает к конференции.
Остались вопросы?
Я - Виталий Шелест, менеджер компании 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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.