Денис Пестрецов
30.12.2019
2803

Отключение проигрывания файла sound_thanks из FreePBX

В предыдущей статье мы рассмотрели правки исходного кода Asterisk и создание новой переменной, для отключения проигрывания файла sound_thanks. В рамках этой статьи рассмотрим создание на вкладке очередей FreePBX специального переключателя. Это позволит нам включать и выключать проигрывание файла sound_thanks без использования оверрайда диалплана нужной очереди. Создание переключателя Переключатель для проигрывания файла sound_thanks будем делать на […]

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

Все правки будут рассматриваться на примере FreePBX 13 версии.

Создание переключателя

Переключатель для проигрывания файла sound_thanks будем делать на вкладке Caller Announcements очередей. Для этого открываем в режиме редактирования файл: …/admin/modules/queues/views/form.php. В этом файле находим окончание описания переключателя Announce Hold Time, то есть код: <!—END Announce Hold Time—>

Сразу за ним вставляем следующий код:

<!-- Playback sound_thanks-->
<div class="element-container">
	<div class="row">
		<div class="col-md-12">
			<div class="row">
				<div class="form-group">
					<div class="col-md-3">
						<label class="control-label" for="playthanks"><?php echo _("Playback sound_thanks") ?></label>
						<i class="fa fa-question-circle fpbx-help-icon" data-for="playthanks"></i>
					</div>
					<div class="col-md-9 radioset input-group">
						   
						<?php $default = (isset($thisQ['play-thanks']) ? $thisQ['play-thanks'] : "no");?>
						<input type="radio" name="playthanks" id="playthanksyes" value="yes" <?php echo ($default == "yes" ? 'checked' : '') ?> >
						<label for="playthanksyes"><?php echo _("Yes") ?></label>
						<input type="radio" name="playthanks" id="playthanksno" value="no" <?php echo ($default == "no" ? 'checked' : '') ?> >
						<label for="playthanksno"><?php echo _("No") ?></label>
					</div>
				</div>
			</div>
		</div>
	</div>
	<div class="row">
		<div class="col-md-12">
			<span id="playthanks-help" class="help-block fpbx-help-block"><?php echo _("Playback sound-thanks?")?></span>
		</div>
	</div>
</div>
<!--END Playback sound_thanks-->

Сохраняем файл. Если перезагрузить страницу в браузере, увидим, что добавилось дополнительный переключатель Playback sound_thanks, на вкладке Caller Announcement, но пока переключение ничего не даёт.

Переключатель
Переключатель

Теперь перейдём к добавлению функционала к переключателю.

Функционал переключателя

Первым делом сделаем так, чтобы значение, выбранное в поле Playback sound_thanks сохранялось. Для этого открываем в режиме редактирования файл …/admin/modules/queues/functions.inc/geters_seters.php. В нём находим функцию queues_add, а в ней следующий код:

$fields = array(
…
	array($account,'min-announce-frequency',($_REQUEST['min-announce'])?$_REQUEST['min-announce']:'15',0),
	array($account,'announce-holdtime',($_REQUEST['announceholdtime'])?$_REQUEST['announceholdtime']:'no',0),

Сразу за ним вставляем строку:

array($account,'play-thanks',($_REQUEST['playthanks'])?$_REQUEST['playthanks']:'no',0),

Тем самым, при нажатии кнопки Submit в редактировании очереди, параметр play-thanks будет записываться в базу данных asterisk.

Посмотреть текущие параметры play-thanks в базе можно командой:

select * from queues_details where keyword='play-thanks';
Просмотр текущих значений play-thanks
Просмотр текущих значений play-thanks

Данную команду следует выполнять в MySQL. При этом в поле id номер очереди, а в поле data – текущее значение.

Теперь приступим к реализации вставки необходимой переменной в диалплан. Для этого открываем файл …/admin/modules/queues/functions.inc/dialplan.php. В нём находим функцию queues_get_config. В этой функции находим следующий код:

$ext->add($c, $exten, '', new ext_set('QUEUENUM', $exten));
$ext->add($c, $exten, '', new ext_set('QUEUEJOINTIME', '${EPOCH}'));
Найти его проще всего по ключевому слову QUEUENUM.

Сразу после этого кода вставляем:

if ($q['play-thanks'] == 'yes') {
$ext->add($c, $exten, '', new ext_set('__ANNOUNCE_THANKS', '1'));
}

Этот код будет отвечать за добавление переменной __ANNOUNCE_THANKS в файл extensions_addititonal.conf.

В случае, если значение переключателя Playback sound_thanks установлено в No, данная переменная не будет добавлена в файл extensions_addititonal.conf.

Сохраняем файл dialplan.php. На этом правки кода завершены, можно приступать к проверке.

Проверка

В качестве проверки необходимо зайти на FreePBX, перейти на вкладку Application -> Queues и зайти в любую очередь для редактирования.

Если очереди нет, то необходимо её создать. Подробнее о работе с очередями в FreePBX можно прочесть в статье.

На вкладке Caller Announcements выставляем значение Playback sound_thanks в Yes, после чего нажимаем Submit, а затем Apply Config для применения настроек.

Открываем файл extensions_additional.conf и ищем переменную __ANNOUNCE_THANKS. Если нашли и она выставлена в Yes, значит всё выполнено верно.

Проверка функционала
Проверка функционала

На этом статья по отключению проигрывания файла sound_thanks посредством создания переключателя во FreePBX завершена.

Книга 101 функция Asterisk
Познакомьтесь с возможностями 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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.