Я думаю, пора многое переделать. В системе появились новые функции sayTo и sayReply. Наверное следует убрать связующий сценарий и добавить отдельный модуль.
В итоге я не хочу делать какой то аналог штатным функциям, и не заменять имеющиеся инструменты, а просто добавить дополнительные возможности.
То что я сейчас сделал с параметром $level, запихав туда и признак отправки смс, и канал звуковой карты, это конечно неправильно. С появлением sayTo надо всё переделать.
Рассмотрим ситуацию: В доме есть комната, в которой есть колонка, подключенная к одному из каналов звуковой карты, но в этой комнате нет, и не будет своего терминала. У комнаты есть имя, например room1. Нужно подписаться на событие SAYTO, и если в настройках модуля есть указания для room1, отправить эту задачу туда. Таким образом не нарушится работа штатной функции, но расширятся её возможности. А если в $destination будет имя существующего терминала, а в модуле не будет указаний, то функция SAYTO должна отработать штатно, отправив задачу на терминал. Таким образом у функции SAYTO появляется дополнительная возможность отправлять сообщения на разные каналы звуковой карты.
Так же можно подписаться на событие и старой функции SAY. У неё нет параметра $destination, и сообщения будут звучать во всех колонках. В настройки модуля добавил опции приглушения звука ночью, и его увеличение для важных (критичных) сообщений. Ещё есть опция перевода всех ночных некритичных сообщений на выбранный канал звуковой карты. Вообщем всё что было и ранее, только в новой красивой шкурке.
Параметр $level при этом остается штатным, и должен работать как обычно. Но можно расширить функционал:
-1 Только написать в чате
0 Обычные сообщения. Ночью отключаются или перенаправляются на выбранный канал.
1 Звучат всегда как обычные сообщения.
2 Звучат всегда + Push или SMS уведомления на телефон.
3 Тревожные сообщения с повышенной громкостью + Push или SMS.
4 тоже + кратковременное включение крикуна
Далее в модуле для имени комнаты из $destination должны быть указания как и куда отправить сообщение. Например как то так:
Имя Kitchen сервер localhost звуковая карта 1 канал 2
Имя Livingroom сервер localhost звуковая карта 1 канал 3
Имя Mansarda сервер localhost звуковая карта 2 канал 1
Имя Garage сервер 192.168.1.123 звуковая карта 1 канал 1
Добавил возможность указывать несколько каналов для одного значения $destination. Причем сообщения могу отправляться сразу на несколько компьютеров с SDM на борту. Это может быть полезным, например если дома колонки в комнатах подключены к звуковой карте одного сервера, а колонки в гараже и мастерской подключены к другому. Или же другой сервер стоит вообще где то далеко и держит с локальной сетью связь через VPN. У меня именно такая ситуация дом-работа. Вот что на данный момент получилось:
Пишите свои мысли и идеи.