Громкость микрофона в Asterisk с FreePBX

Громкость микрофона в Asterisk с FreePBX

Представьте, что в момент разговора ваш собеседник начинает “кричать” вам в трубку. Даже если успокоить его вы не можете, то Asterisk это сможет сделать за вас. Настройки громкости заданы Asterisk по умолчанию или настройками диалплана. Сегодня мы рассмотрим функционал, позволяющий “сделать тише” вашего собеседника, не сообщая ему об этом – пусть дальше орет.

Подготовка

Во FreePBX в модуле сервисных кодов (Features codes) можно изменить текущие сервисные коды и добавить новые нельзя. Значит будем делать средствами Asterisk, не меняя пользовательский контекст.

Настройка

Открываем файл /etc/asterisk/globals_custom.conf. Этот файл позволяет создать новые или изменить текущие глобальные переменные, которые использует Asterisk. Если указанный файл отсутствует, создаем его:
touch /etc/asterisk/globals_custom.conf
chown asterisk:asterisk /etc/asterisk/globals_custom.conf
chmod 775 /etc/asterisk/globals_custom.conf
В файле прописываем следующее:
DYNAMIC_FEATURES=VUp#VDown#MUp#MDown
Vol=0
Mic=0
Мы создали специальные функции, которые будем использовать. Теперь нам необходимо указать комбинацию цифр и закрепить их за кодами. Для этого в файле /etc/asterisk/features_applicationmap_custom.conf пропишем следующее:
VUp => 52*,self,Macro,VolumeUp
VDown => 58*,self,Macro,VolumeDown
MUp => 54*,self,Macro,MicUp
MDown => 56*,self,Macro,MicDown
Данными кодами мы установили выполнение макроса громкости. Теперь нам необходимо описать указанный макрос в диалплане. Для этого в файле /etc/asterisk/extensions_cistom.conf добавляем:
[from-internal-custom]
Set(__DYNAMIC_FEATURES=VUp#VDown#MUp#MDown)
Данная настройка добавит наши коды в диалплан Asterisk, который создает FreePBX.
Дальше в этом же файл добавим макросы увеличения/уменьшения громкости, которые будут вызываться нашими сервисными кодами:
[macro-VolumeUp]
exten => s,1,Set(Vol=$[${Vol}+5])
same => n,Set(VOLUME(TX)=${Vol})

[macro-VolumeDown]
exten => s,1,Set(Vol=$[${Vol}-5])
same => n,Set(VOLUME(TX)=${Vol})

[macro-MUp]
exten => s,1,Set(Mic=$[${Mic}+5])
same => n,Set(VOLUME(RX)=${Mic})

[macro-MDown]
exten => s,1,Set(Mic=$[${Mic}-5])
same => n,Set(VOLUME(RX)=${Mic})
Мы прописали 2 макроса на увеличение/уменьшение громкости канала звука и 2 макроса на увеличение/уменьшение громкости канала микрофона.

Вывод

52* – увеличить громкость собеседника
58* – уменьшить громкость собеседника
54* – увеличить громкость для собеседника
56* – уменьшить громкость для собеседника