[Модуль] ChatBox (app_chatbox)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

ksgroup
Сообщения: 135
Зарегистрирован: Ср дек 19, 2012 10:35 am
Откуда: Ukraine/Kiev
Благодарил (а): 7 раз
Поблагодарили: 14 раз

[Модуль] ChatBox (app_chatbox)

Сообщение ksgroup » Сб ноя 15, 2014 2:56 pm

Многие из нас видоизменяют систему под свое видение. Большинство ограничиваются визуальными изменениями. Но есть моменты где изменить визуальное отображение так как хочется невозможно без редактирования кода системы. К сожалению любые изменения будут потеряны при новом обновлении системы. К счастью Сергей позаботился о таких как мы и предложил некоторые механизмы, которые позволяют сохранить изменения. Естественно изменения должны быть сделаны с учетом этих механизмов. Соответственно можно изменять как угодно шаблоны html хранящиеся в папке trmplates, но для того что бы изменения не были потеряны при обновлениях, нужно помещать отредактированные шаблоны в папку templates_alt. Со скриптами .php так не выйдет, поэтому менять какие либо функции нельзя, зато можно создавать свои функции, помещая свои файлы .php в папку lib. Все php файлы в этой папке автоматически подключаются к системе и находящийся в них код функций может быть вызван в любом месте системы.
Теперь от теории к практике :)
Однажды мне надоел внешний вид окна с логом сообщений Алисы. Он был грустно-черно-белый. В шаблонах html изменить можно было только глобально цвет всех сообщений. Это же не интересно правда? К тому же все сообщения были только от Алисы, либо от пользователя который дает команды Алисе. Поскольку в моей системе таких пользователей только один (Это я),мне пришла в голову идея разделить сообщения от разных подсистем умного дома. Ну что бы не все сообщения шли от Алисы, а от системы вентиляции свои сообщения, от системы управляемых электросистем свои и т.д. Покопавшись в функции say() я заметил что в ней принудительно прописывается ID пользователя Алисы - именно поэтому все сообщения в логе отображаются от нее. Поскольку функцию менять нельзя, потому что все равно при обновлении системы изменения потеряются, я создал свою функцию saydym() которая в точности повторяет стандартную say(), но ID пользователя в ней можно задать какой угодно. Создав пользователей с именами подсистем умного дома я получил возможность персонифицировать сообщения. Теперь когда произносится время каждый час, в логе оно отображено от имени пользователя "Часы", а когда пропадает связь с глобальной сетью - от пользователя "LAN". Таких пользователей может быть сколько угодно. Алиса тоже никуда не делась - ее ID как и раньше 0! Есть в функции saydym() еще один приятный бонус. Вам не надоел однообразный "бим-бом" при сообщениях? Мне надоел. Покопавшись в сети я "нарыл" еще несколько прикольных звучков. Можно конечно переименовать свой файл в dingdong.mp3 и он будет проигрываться вместо стандартного, но я решил получить выбор, поэтому в моей функции можно задавать один из четырех звуковых файлов. Кроме того существуют моменты когда нужно заставить систему гарантировано не проигрывать этот файл, а просто произнести сообщенние - такая возможность тоже есть.
Теперь о формате вызова функции - все осталось как в стандартном say(), но функция получила два дополнительных аргумента на входе. Синтаксис следующий: saydym('текст сообщения',аргумент1,аргумент2,аргумент3). Теперь подробнее:
"Текст сообщения" - ну тут пояснения не нужны
Аргумент1 - как и в родной функции это уровень важности сообщения
Аргумент2 - выбор файла "бим-бом" где:
0 - файл "бим-бом" принудительно не проигрывается
1 - стандартный файл dingdong.mp3
2 - файл tone1.mp3
3 - файл tone2.mp3
4 - файл tone3.mp3
Свои файлы нужно положить в папку /sounds и дать им соответствующие названия. Естественно звуковые файлы должны иметь сжатие mp3.
Аргумент3 - ID пользователя системы. Этот ID можно увидеть после установки моего модуля в систему, зайдя в панель управления, вкладка "Программы", пункт "ChatBox by DYM". (Про модуль ниже)

Ну вот - лог стал информативнее, но все еще довольно грустный. Решил я его раскрасить. Для этого пришлось написать свой модуль повторяющий функции стандартного shoutbox, плюс выполняющий мои задумки. Такой модуль был создан. Скрин его работы:
Изображение
Теперь при обновлениях системы, мой модуль не затирается и продолжает работать.
О модуле:
Модуль может отображать имена пользователей, либо их аватары. Аватары добавляются в стандартном редакторе пользователей в панели управления. Если аватар не установлен модуль отображает Имя пользователя, иначе аватар. Цвет строки сообщения от каждого конкретного пользователя задается тоже в редакторе пользователей в строке "Хост" (Не по назначению конечно поле использовал, но это позволило не вносить изменений в таблицу). Задается значение в стандартном html формате #00FF00.
Теперь об использовании модуля. Все просто. Используется так же как и стандартный лог Алисы. Создайте в домашних страницах html блок с содержимым [#module name="app_chatbox" limit="50" reverse="1" mobile="1"#]

Модуль выложил для ознакомления. Возмоно позже он появится в маркете. Кому интересно вы можете скачать модуль здесь http://kda.kiev.ua/app_chatbox.zip. Хочу предупредить - у меня МЖД установлен на Linux. Работоспособность под Win не проверялась, но думаю все будет работать. Для установки распакуйте архив с соблюдением папок в корень МЖД.

Обсуждать будем здесь. Жду замечаний и предложений.
Последний раз редактировалось ksgroup Сб ноя 15, 2014 10:46 pm, всего редактировалось 1 раз.
За это сообщение автора ksgroup поблагодарили (всего 8):
sregeipt (Сб ноя 15, 2014 4:07 pm) • skysilver (Сб ноя 15, 2014 7:50 pm) • Amarok (Вс ноя 16, 2014 4:17 pm) • kawkay (Ср авг 12, 2015 10:31 am) • gagarin74 (Ср авг 12, 2015 11:46 am) • Otto (Сб ноя 05, 2016 7:02 pm) • ipc2002 (Сб янв 06, 2018 8:50 pm) • piton_78 (Пт фев 09, 2018 12:20 am)
Рейтинг: 9.3%
CubieBoard A10 - основной сервер Majordomo
Raspberry Pi - цифровая мини АТС ASTERISK
Arduino - блок управления реле, электросчетчик, счетчики воды, управление вентиляционной системой, СКУД.
sregeipt
Сообщения: 117
Зарегистрирован: Сб апр 26, 2014 5:06 pm
Откуда: Новосибирск
Благодарил (а): 21 раз
Поблагодарили: 11 раз

Re: Альтернативный лог сообщений Алисы

Сообщение sregeipt » Сб ноя 15, 2014 5:29 pm

красивый модуль давно хотел что то подобное!! автору спасибо))) ТЕСТИРУЕМ!
За это сообщение автора sregeipt поблагодарил:
piton_78 (Пт фев 09, 2018 12:20 am)
Рейтинг: 1.16%
  • Ubuntu Server .Esp8266)
sregeipt
Сообщения: 117
Зарегистрирован: Сб апр 26, 2014 5:06 pm
Откуда: Новосибирск
Благодарил (а): 21 раз
Поблагодарили: 11 раз

Re: Альтернативный лог сообщений Алисы

Сообщение sregeipt » Вс ноя 16, 2014 7:33 am

sregeipt писал(а):красивый модуль давно хотел что то подобное!! автору спасибо))) ТЕСТИРУЕМ!
под вин хп пока работает стабильно звуки выбираются пользователи тоже все работает Спасибо
  • Ubuntu Server .Esp8266)
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Альтернативный модуль лога сообщений Алисы

Сообщение Amarok » Вс ноя 16, 2014 2:36 pm

А как его в меню сунуть?
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
ksgroup
Сообщения: 135
Зарегистрирован: Ср дек 19, 2012 10:35 am
Откуда: Ukraine/Kiev
Благодарил (а): 7 раз
Поблагодарили: 14 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение ksgroup » Вс ноя 16, 2014 2:39 pm

BlackWarrior писал(а):А как его в меню сунуть?
Да так же как и стандартный shoutbox, вот только не уверен что по ширине подойдет. Я в меню его совать не пробовал, мне чат Алисы в меню мешает.
CubieBoard A10 - основной сервер Majordomo
Raspberry Pi - цифровая мини АТС ASTERISK
Arduino - блок управления реле, электросчетчик, счетчики воды, управление вентиляционной системой, СКУД.
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Альтернативный модуль лога сообщений Алисы

Сообщение Amarok » Вс ноя 16, 2014 2:44 pm

Эту штуку бы в маркет...
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Альтернативный модуль лога сообщений Алисы

Сообщение Amarok » Вс ноя 16, 2014 2:55 pm

А у меня Хост (адрес) (не обязательно): используется по прямому назначению. Как быть? :cry:
Может выпустить модуль и в нем цвета задавать? Пазяаааста :roll:
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
ksgroup
Сообщения: 135
Зарегистрирован: Ср дек 19, 2012 10:35 am
Откуда: Ukraine/Kiev
Благодарил (а): 7 раз
Поблагодарили: 14 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение ksgroup » Вс ноя 16, 2014 3:00 pm

BlackWarrior писал(а):А у меня Хост (адрес) (не обязательно): используется по прямому назначению. Как быть? :cry:
Может выпустить модуль и в нем цвета задавать? Пазяаааста :roll:
А по какому назначению, если в системе это поле нигде не используется?
CubieBoard A10 - основной сервер Majordomo
Raspberry Pi - цифровая мини АТС ASTERISK
Arduino - блок управления реле, электросчетчик, счетчики воды, управление вентиляционной системой, СКУД.
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Альтернативный модуль лога сообщений Алисы

Сообщение Amarok » Вс ноя 16, 2014 3:03 pm

Используется. Если в это поле вбить IP пользователя, то система по нему определяет пользователя. У меня так разграничение меж тремя людьми сделано
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
ksgroup
Сообщения: 135
Зарегистрирован: Ср дек 19, 2012 10:35 am
Откуда: Ukraine/Kiev
Благодарил (а): 7 раз
Поблагодарили: 14 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение ksgroup » Вс ноя 16, 2014 3:17 pm

BlackWarrior писал(а):Используется. Если в это поле вбить IP пользователя, то система по нему определяет пользователя. У меня так разграничение меж тремя людьми сделано
У меня пользователь один, поэтому я и использовал это поле. Можно переделать под поле "SKYPE"
CubieBoard A10 - основной сервер Majordomo
Raspberry Pi - цифровая мини АТС ASTERISK
Arduino - блок управления реле, электросчетчик, счетчики воды, управление вентиляционной системой, СКУД.
Ответить