ha-yandex-station-intents icon indicating copy to clipboard operation
ha-yandex-station-intents copied to clipboard

Не все сценарии пробрасываются в УДЯ

Open MrSnakeSPb opened this issue 1 year ago • 1 comments
trafficstars

В какой-то момент активационные фразы пропали или начали путаться. На запрос "включит телевизор" срабатывает другой интент (видно, если в разработчике подписаться на событие) или совсем не срабатывает (Алиса отвечает как на обычную фразу).

Я не знаю куда копать. Переустанавливал, удалял вручную и службой (как в FAQ), сценарии в УДЯ исчезают, потом появляются (как и положено с минусами вначале), но не все. `Уровень: ОШИБКА Эта ошибка возникла в пользовательской интеграции. Регистратор: custom_components.yandex_station_intents Источник: custom_components/yandex_station_intents/init.py:262 интеграция: Yandex.Station Intents (документация, проблемы) Первое сообщение: 14:30:51 (24 сообщений) Последнее сообщение: 14:51:18

Ошибка создания или обновления сценария '--- Выключи телевизор' Ошибка создания или обновления сценария '--- Найди телефон Вероники' Ошибка создания или обновления сценария '--- Найди телефон Натальи' Ошибка создания или обновления сценария '--- Отбей домофон' Ошибка создания или обновления сценария '--- Открой домофон'`

В HA создано в configuration: yandex_station_intents: intents: !include includes/Integration/YandexIntent.yaml

В файле YandexIntent.yaml

Найди телефон Андрея: extra_phrases: - Потерял телефон - Где мой телефон - Найди телефон say_phrase: Сейчас найду

Найди телефон Натальи: # не работает extra_phrases: - Наташка потеряшка - Где телефон Натальи - Найди телефон Натальи say_phrase: Мы там все уронили

Найди телефон Вероники: # не работает extra_phrases: - Вероника потеряшка - Где телефон Вероники - Найди телефон Вероники say_phrase: Все потерять тоже дар

Открой домофон: extra_phrases: - Открой домофон - Запусти - Сизам откройся say_phrase: Запустила звонящего

Отбей домофон: extra_phrases: - Отбей домофон - Не впускай - Пошел вон say_phrase: Пускай под дверью постоит

Включи телевизор: extra_phrases: - Включи телевизор - Включи ящик - Включи телек say_phrase: Не стоит включать телевизор и мозг одновременно. Это несовместимые вещи.

Выключи телевизор: extra_phrases: - Выключи телевизор - Выключи ящик - Выключи телек say_phrase: Пора глазкам отдохнуть.

Включи ресивер: extra_phrases: - Включи ресивер - Включи звук - Включи центр say_phrase: "{{ ['Договорились', 'Хорошо', 'Я тебя услышала', 'Оки-доки']|random }}"

Выключи ресивер: extra_phrases: - Выключи ресивер - Выключи звук - Выключи центр say_phrase: "{{ ['Договорились', 'Хорошо', 'Я тебя услышала', 'Оки-доки']|random }}"`

**Лог журнала HomeAssistant: ** 2024-05-18 14:51:16.689 ERROR (MainThread) [custom_components.yandex_station_intents] Ошибка создания или обновления сценария '--- Включи телевизор' Traceback (most recent call last): File "/config/custom_components/yandex_station_intents/__init__.py", line 262, in _async_setup_intents await quasar.async_add_or_update_intent( File "/config/custom_components/yandex_station_intents/yandex_quasar.py", line 207, in async_add_or_update_intent assert resp["status"] == "ok", resp AssertionError: {'request_id': 'dfdc0c7b-e6fb-4807-b71b-f8e467887fd2', 'status': 'error', 'code': 'VOICE_TRIGGER_PHRASE_IS_ALREADY_TAKEN', 'message': 'Активационная фраза для сценария уже используется'} 2024-05-18 14:51:16.755 ERROR (MainThread) [custom_components.yandex_station_intents] Ошибка создания или обновления сценария '--- Выключи ресивер' Traceback (most recent call last): File "/config/custom_components/yandex_station_intents/__init__.py", line 262, in _async_setup_intents await quasar.async_add_or_update_intent( File "/config/custom_components/yandex_station_intents/yandex_quasar.py", line 207, in async_add_or_update_intent assert resp["status"] == "ok", resp AssertionError: {'request_id': '4f041fb5-463b-4018-9212-c6e7e8ebdebe', 'status': 'error', 'code': 'VOICE_TRIGGER_PHRASE_IS_ALREADY_TAKEN', 'message': 'Активационная фраза для сценария уже используется'}

MrSnakeSPb avatar May 18 '24 12:05 MrSnakeSPb

Я разобрался, ура - заработало. Начал внимательно изучать и заметил: Экстра фразы не должны повторять объявленный интент. Убрал повторы и все сразу заработало.

Было бы неплохо добавить в Readme. Время ужинать: # (3) extra_phrases: # альтернативные фразы, максимум три - Давай кушать - Давай ужинать - Время ужина

Срабатывает от Алиса, время кушать (или Алиса, время ужина, или Алиса, давай ужинать и т.п.), генерирует событие с text: Время ужинать, колонка ничего не скажет в ответ. Интент с экстра фразами не должен повторяться

Тут есть небольшая неточность, время кушать не объявлено. Я так понимаю, что теперь 4 фразы могут активировать интент или только 3 экстра фразы?

Но, конечно же, это на ваше усмотрение.

MrSnakeSPb avatar May 18 '24 14:05 MrSnakeSPb

@MrSnakeSPb, у меня похожая проблема. Только не знаю с какой стороны эта проблема. К примеру есть такие фразы в configuration.yaml yandex_station_intents: intents: Включи свет: # (1) Выключи свет: # (2) ... У меня нет никаких экстра фраз, ни параметров, ничего. Просто список с фразами и порядковый номер.

В УДЯ, соответственно, есть два сценария: Сделай громкость---. Сделай громкость---..

Пока всё ок. Но когда я добавляю ещё фразы, то в УДЯ перепутываются сценарии и, например становится вот так: Сделай громкость---.:: Сделай громкость---.. Сделай громкость---.,. Сделай громкость---.

То есть часть сценариев остается без изменений, часть меняется. И на какие то фразы вызываются нужные сценарии, на другие фразы вызываются не те сценарии, а на некоторые вообще ничего не происходит. Может быть вы сталкивались с таким поведением и знаете как это можно пофиксить?

cognolio avatar Sep 17 '24 16:09 cognolio

Интент с экстра фразами не должен повторяться

Внёс уточнение в README

То есть часть сценариев остается без изменений, часть меняется. И на какие то фразы вызываются нужные сценарии, на другие фразы вызываются не те сценарии, а на некоторые вообще ничего не происходит.

Если проблема сохраняется:

  1. Убедитесь, что установлена последняя версия компонента
  2. Создайте новый тикет и приложите диагностические данные по интеграции (Настройки - Устройства и службы - Интеграции - Yandex.Station Intents - три точки - Скачать диагностические данные)

dext0r avatar Oct 13 '24 14:10 dext0r