Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Отправка уведомлений на majordomo #5

Closed
Aculeasis opened this issue Dec 6, 2018 · 13 comments
Closed

Отправка уведомлений на majordomo #5

Aculeasis opened this issue Dec 6, 2018 · 13 comments
Labels
enhancement New feature or request

Comments

@Aculeasis
Copy link
Owner

Когда терминал активируется фразой и начинает запись, когда заканчивает запись, по таймеру (пинг?).

[majordomo-notify]
object_name = 
object_method = 
# Вопрос еще в том, что именно отправлять в property.
object_property = 
# 0 - не отправлять
heartbeat_timeout = 300

Будет работать только если name, property и method заданы.

@Aculeasis Aculeasis added the enhancement New feature or request label Dec 6, 2018
@skysilver-lab
Copy link

object_property на стороне терминала, пожалуй лишний, и можно его не задавать, т.к. вся отправка будет через метод.

Если если name, и method заданы, то активировать фичу.

При вызове метода передавать в гет-запросе:
ip = IP терминала для его идентификации на стороне МДМ
status = start_record, stop_record (или как-то более узнаваемо, чтобы понимать в какое состояние перешел терминал)
uptime = системный аптайм

Как вариант еще слать уровни громкости (системной, mpd), если их не затратно получать.

@SergMicar
Copy link

Предлагаю еще добавить событие "закончил говорить"

@Aculeasis
Copy link
Owner Author

ip = IP терминала для его идентификации на стороне МДМ

Почему ip, а не terminal? IP то он и так узнает, сейчас можно задать terminal в конфиге и он будет его передавать в запросе (системное имя терминала).
При пинге просто не передавать статус?

Как вариант еще слать уровни громкости (системной, mpd), если их не затратно получать.

Наверное не очень, но я бы не стал. Ну или только с пингом слать.

@SergMicar
Copy link

SergMicar commented Dec 6, 2018

плюс события "начало воспроизведение музыки", "пауза воспроизведения музыки", "стоп воспроизведения музыки" (majordroid API & MPD) - тогда будет полная обратная связь "команда от МДМ" -> "Подтверждение выполнения команды"

@skysilver-lab
Copy link

skysilver-lab commented Dec 6, 2018

Почему ip, а не terminal? IP то он и так узнает, сейчас можно задать terminal в конфиге и он будет его передавать в запросе (системное имя терминала).

Можно и имя. Не суть. Лишь бы можно было идентифицировать (mac, id, имя и т. п.)

При пинге просто не передавать статус?

Аха.

Aculeasis added a commit that referenced this issue Dec 6, 2018
object_name и object_method - имя и метод объекта который будет вызываться,
если не заданы то вызовы не будут работать. В вызове всегда присутствует uptime,
terminal и username - только если заданы.
Параметр status определяет причину вызова:
start_record - терминал активировался и начал вести запись.
stop_record - терминал закончил вести запись.

heartbeat_timeout - если задано будет вызывать метод не реже чем заданно, в секундах,
при этом status не передается. 0 отключает автовызов.
@netman1ac
Copy link

Предлагаю отправлять на МЖД GET'ом статусы start_talking/stop_talking когда идет болтание терминалом функцией say/ask
чтобы было понятно когда например ставить телевизор на муть и снимать с него ну или прикольно мигать светом в туалете :)

@SergMicar
Copy link

Поддерживаю по статусам start_talking/stop_talking
Но ставить телевизор на мут думаю нужно сразу же после распознавания ключа (например "Алиса") по событию start_record, а вот снимать с паузы можно уже по stop_talking

@netman1ac
Copy link

Да собсно можно оставить вообще один stop_talking или im_talking
но на всякий и старт чтоб два раза не вставать

@SergMicar
Copy link

Вся идея в том, чтобы глушить звуки сразу после ключевика (по событию start_record), чтобы не вносить помехи при распознавании основной фразы....

@SergMicar
Copy link

SergMicar commented Dec 7, 2018

Итого по предложениям на сегодняшний день имеем такой перечень событий
status=
start_record (by event)
stop_record (by event)
start_talking (by event)
stop_talking (by event)
start_playmusic (by event)
stop_playmusic (by event)

volume = current volume (on changed)

uptime = timems (by heartbeat_timeout)

Остается открытым вопрос как быть если терминал послал событие (напримерs start_record) и сразу же аварийно перезагрузился (например авария в сети питания) или стоп/старт вручную.
В общем после загрузки нужно посылать события определяющие его текущий статус....

@netman1ac
Copy link

Видимо непонятно написал
Глушить звук со старт_записываю и до стоп_болтаю
Те и те и те статусы нужны

Aculeasis added a commit that referenced this issue Dec 7, 2018
status:
- start_talking - терминал начал говорить
- stop_talking - терминал закончил говорить
- mpd_<status> - статус mpd изменился: play, stop, pause мб что-то еще.
При отвале mpd может прийти 'mpd_None'.
mpd_volume - новая громкость mpd, так же может прийти None.
volume - изменили громкость системы. Может прийти -1 при ошибке.

Данные mpd проверяются каждые 0.9с, т.к. он не поддерживает коллбэки.

volume и mpd_volume приходят когда их изменяют, не важно изменились они или нет.
Вызов по heartbeat_timeout всегда пришлет volume и mpd_volume
Aculeasis added a commit that referenced this issue Dec 7, 2018
@Aculeasis
Copy link
Owner Author

Кстати,

object_name = 
object_method =

Может лучше сделать одним параметром? Все равно используется один метод и имя объекта никак не используется отдельно. Типа:

handler = object.method

@Aculeasis
Copy link
Owner Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants