Skip to content

callback

Aculeasis edited this page Sep 23, 2019 · 22 revisions

Кроме отправки текстовых команд, терминал может вызывать MajorDoMo через API при наступлении некоторых событий.

Настойка

Все нужные параметры находятся в секции [smarthome]:

  • ip: IP сервера с MajorDoMo
  • object_name: Имя вызываемого объекта.
  • object_method: Метод вызываемого объекта.
  • heartbeat_timeout: Если за это время, в секундах, не было событий то метод будет вызван принудительно. Если 0 будет вызывать только по событиям.

IP, имя и метод объекта должны быть заданы.

Параметры передаваемые с вызовом

  • uptime: Аптайм системы на момент регистрации вызова, в секундах. Присутствует всегда.
  • username: Если username задан то будет присылать его всегда.
  • terminal: Если terminal задан то будет присылать его всегда.
  • volume: Системная громкость терминала, -1 если не настроено или при ошибке чтения.
  • music_volume: Громкость музыкального плеера, -1 при ошибке подключения или если громкость не регулируется.
  • version: Версия терминала, один раз при запуске.
  • Компонент и причина вызова, в формате Свойство=Значение (status: stop_talking, listener: off и т.п.), может отсутствовать:
    • status: Базовые уведомления:
      • start_record: Начало записи голоса (обычно после распознавания ключевого слова).
      • stop_record: Окончание записи голоса.
      • voice_activated: Терминал распознал ключевое слово. Только в chrome_mode = off, в chrome_mode = on ему эквивалентен start_record.
      • ask_again: Терминал не смог ничего распознать и переспрашивает по ask_me_again.
      • speech_recognized_unsuccess: Голосовая команда не была распознана или отсутствует.
      • speech_recognized_success: Голосовая команда успешно распознана и обрабатывается.
      • start_talking: Терминал начал говорить.
      • stop_talking: Терминал закончил говорить.
      • music_play, music_stop, music_pause: Статус музыкального плеера изменился на play, stop, pause.
      • music_error: Ошибка получения статуса плеера.
      • mic_test_error: Ошибка при тестировании микрофона, голосовая активация недоступна.
    • listener:
      • on: Терминал начал слушать микрофон.
      • off: Терминал перестал слушать микрофон (по тем или иным причинам).
    • updater: Уведомление от системы автообновления:
      • pull_failed: Во время обновления (git pull) возникла ошибка.
      • check_pull_failed: Ошибка анализа обновления.
      • update_nope: Обновлений не найдено.
      • apt_failed: Установка зависимостей через apt-get завершилась неудачно.
      • apt_yes: Новые зависимости успешно установлены.
      • apt_no: Новые зависимости есть, но не установлены (согласно настройкам).
      • pip_failed, pip_yes, pip_no: Тоже что и apt_ но для pip.
      • update_yes: Терминал был успешно обновлен.
      • fallback_failed: Откат неудачного обновления потерпел неудачу 👍
      • fallback_ok: Выполнен откат неудачного обновления.
      • rollback_failed: Ручной откат потерпел неудачу.
      • rollback_ok: Выполнен ручной откат.

Настройка на стороне MajorDoMo

Если в консоли постоянно возникают ошибки где есть фрагмент /api/method/ а IP сервера с MajorDoMo указан верно, нужно раскомментировать строчки в /etc/mime.types и перезапустить apache.

Указанный в настройках объект и его метод должны существовать.

Пример метода который сохраняет все параметры в свойства:

foreach ($params as $param => $value) {
    $this->setProperty($param, $value);
};