Контексты в шаблонах поведения

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Аватара пользователя
xor
Сообщения: 2036
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 283 раза
Поблагодарили: 628 раз

Re: Контексты в шаблонах поведения

Сообщение xor » Чт май 23, 2019 10:55 am

ialtuhov писал(а):
xor писал(а):
Чт май 23, 2019 10:41 am
ialtuhov писал(а):Прошу помощи, немного запутался.
Возьмем обсуждаемый здесь пример: шаблон Включи-что?-свет-где?-на улице
У меня вопрос вот какой: в данном примере под каждым уровнем шаблона понимается одна переменная и все просто.
Если создать на втором уровне шаблон, например, Вода, то получим второе направление реакции шаблона Включи:
Включи-что?-свет-где?-на улице и Включи-что?-воду-где?-на улице.
Как запихать две и более ветки в одну и идентифицировать, что нужно сделать я знаю, то есть как создать универсальный шаблон типа Включи-что?-(воду/свет/газ/...)-где?-(на улице/в подвале/на крыше/...). Но я не понимаю как этот универсальный шаблон заставить работать в одну команду? Я говорю - Включи свет в подвале, результатом служит выполнение только последнего уровня шаблона, то есть переменная второго уровня (где?) не определяется. Если делать по шагам все работает безупречно.
Пробывал поставить на втором уровне context_clear(), но после идентификации полной команды ссылка всегда на третий уровень.
Кто что посоветует, как заставить работать?
То-то и оно, что сейчас изменили концепцию и фиг так сделаешь, кмк.
У меня щас так:
1 Включи
2 свет
3 на улице
3 дома
2 воду
3 на улице
3 дома

Плюс такая же ветка для Выключи((

Отправлено с моего Redmi 4X через Tapatalk
Так вообще не айс. Такой лес команд. Нужно проще делать
Сделаете, поделитесь! Я устал переписывать шаблоны после очередного обновления



Отправлено с моего Redmi 4X через Tapatalk

За это сообщение автора xor поблагодарил:
viktor6 (Чт май 23, 2019 3:16 pm)
Рейтинг: 1.16%
Sas
Сообщения: 207
Зарегистрирован: Вт июл 12, 2016 6:16 pm
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: Контексты в шаблонах поведения

Сообщение Sas » Чт май 23, 2019 5:01 pm

ialtuhov писал(а):
Чт май 23, 2019 10:27 am
Включи свет в подвале, результатом служит выполнение только последнего уровня шаблона, то есть переменная второго уровня (где?) не определяется. Если делать по шагам все работает безупречно.
Пробывал поставить на втором уровне context_clear(), но после идентификации полной команды ссылка всегда на третий уровень.
Кто что посоветует, как заставить работать?
А смысл второго уровня если он автоматом пролетает на третий?
Если сказать "включи свет" тут вам и будет второй
ialtuhov
Сообщения: 69
Зарегистрирован: Чт фев 14, 2019 9:50 am
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: Контексты в шаблонах поведения

Сообщение ialtuhov » Пт май 24, 2019 8:28 am

Sas писал(а):
Чт май 23, 2019 5:01 pm
ialtuhov писал(а):
Чт май 23, 2019 10:27 am
Включи свет в подвале, результатом служит выполнение только последнего уровня шаблона, то есть переменная второго уровня (где?) не определяется. Если делать по шагам все работает безупречно.
Пробывал поставить на втором уровне context_clear(), но после идентификации полной команды ссылка всегда на третий уровень.
Кто что посоветует, как заставить работать?
А смысл второго уровня если он автоматом пролетает на третий?
Если сказать "включи свет" тут вам и будет второй
Я говорил о универсальном шаблоне, читайте внимательно.
Если на втором уровне не определяется переменная, то итоговая команда не может быть выполнена или будет выполнена не корректна.
Sas
Сообщения: 207
Зарегистрирован: Вт июл 12, 2016 6:16 pm
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: Контексты в шаблонах поведения

Сообщение Sas » Пт май 24, 2019 2:00 pm

ialtuhov писал(а):
Пт май 24, 2019 8:28 am
Я говорил о универсальном шаблоне, читайте внимательно.
Если на втором уровне не определяется переменная, то итоговая команда не может быть выполнена или будет выполнена не корректна.
"Универсальный" шаблон может быть хоть 1, а дальше можно самому разбирать его по $original и $matches
и если говорить целой фразой, а не обрывками то будет не важно на каком он уровне
Но при этом в каждом из шаблонов будет очень много кода
(включи|выключи) - универсальный?
if(включи) -
if(улица)
if(свет)(делаем)
if(ботинки)(делаем)
if(комната)
if(свет)(делаем)
if(тапки)(делаем)
if(выключи) -
if(улица)
if(свет)(делаем)
if(ботинки)(делаем)
if(комната)
if(свет)(делаем)
if(тапки)(делаем

Если делать по идеологии то кода будет намного меньше, но портянок из шаблонов больше
1(включи) -
2 -- (в комнате)
3 ---- (свет)(делаем)
3 ---- (воду)(делаем)
2 -- (на улице)
3 ---- (свет)(делаем)
3 ---- (воду)(делаем)
1(выключи) -
2 -- (в комнате)
3 ---- (свет)(делаем)
3 ---- (воду)(делаем)
2 -- (на улице)
3 ---- (свет)(делаем)
3 ---- (воду)(делаем)

сам $original(который содержит ВСЮ фразу) у меня в мастере пока работает, а почему не собирается проходя по шаблонам - надо править функцию истории
Аватара пользователя
xor
Сообщения: 2036
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 283 раза
Поблагодарили: 628 раз

Re: Контексты в шаблонах поведения

Сообщение xor » Пт май 24, 2019 5:43 pm

Sas писал(а): сам $original(который содержит ВСЮ фразу) у меня в мастере пока работает, а почему не собирается проходя по шаблонам - надо править функцию истории
Вот руки чешутся сохранять оригиналы, собирая их в какой нибудь внешней переменной, хоть в свойстве или ивенте, до отработки ветки шаблонов или очистки контекста.

Отправлено с моего Redmi 4X через Tapatalk

Пс. Это я, конечно, про себя написал)
ialtuhov
Сообщения: 69
Зарегистрирован: Чт фев 14, 2019 9:50 am
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: Контексты в шаблонах поведения

Сообщение ialtuhov » Пт май 24, 2019 9:30 pm

Sas писал(а):
Пт май 24, 2019 2:00 pm
ialtuhov писал(а):
Пт май 24, 2019 8:28 am
Я говорил о универсальном шаблоне, читайте внимательно.
Если на втором уровне не определяется переменная, то итоговая команда не может быть выполнена или будет выполнена не корректна.
"Универсальный" шаблон может быть хоть 1, а дальше можно самому разбирать его по $original и $matches
и если говорить целой фразой, а не обрывками то будет не важно на каком он уровне
Но при этом в каждом из шаблонов будет очень много кода
(включи|выключи) - универсальный?
if(включи) -
if(улица)
if(свет)(делаем)
if(ботинки)(делаем)
if(комната)
if(свет)(делаем)
if(тапки)(делаем)
if(выключи) -
if(улица)
if(свет)(делаем)
if(ботинки)(делаем)
if(комната)
if(свет)(делаем)
if(тапки)(делаем

Если делать по идеологии то кода будет намного меньше, но портянок из шаблонов больше
1(включи) -
2 -- (в комнате)
3 ---- (свет)(делаем)
3 ---- (воду)(делаем)
2 -- (на улице)
3 ---- (свет)(делаем)
3 ---- (воду)(делаем)
1(выключи) -
2 -- (в комнате)
3 ---- (свет)(делаем)
3 ---- (воду)(делаем)
2 -- (на улице)
3 ---- (свет)(делаем)
3 ---- (воду)(делаем)

сам $original(который содержит ВСЮ фразу) у меня в мастере пока работает, а почему не собирается проходя по шаблонам - надо править функцию истории
В целом величина кода не пугает, но почему то не работает. В моем случае шаблон (управление пылесосом) шаблон второго уровня типа «нужно выполнить уборку (.+)» (определяет зону или несколько зон), на третьем уровне все проще «один|два|три». Если всю команду говорю с один два или три то переменная второго уровня (комната(ты)) не определяется и код работает по истории (последнее значение переменной). Воткнул на третий уровень полный код, но поскольку опять же в шаблоне третьего уровня нет переменной в голосовой команде то и опять нет результата. Запихивать полный вариант голосовой команды на третий уровень получиться такой огород, что мама не горюй.
Подскажите, что мне сделать для того, что бы работала все?
И сразу вопрос: по моему примеру можно ли как то заставить мажора тормознуть на втором уровне при произношении полной команды без перехода на третий уровень? У меня не получается это.
ialtuhov
Сообщения: 69
Зарегистрирован: Чт фев 14, 2019 9:50 am
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: Контексты в шаблонах поведения

Сообщение ialtuhov » Сб май 25, 2019 8:21 am

Для себя вопрос с мульти командой я закрыл, получилось три шаблона в три уровня вместо, как минимум двадцати пяти )))
Поскольку я не являюсь программистом, а в тему начал погружаться совсем недавно, тут услышал про $original и с помощью нее и решил все задачи. Код, поскольку делал так как умею (уровень у меня нулевой) получился в 50 строк (на мой взгляд это ничто по сравнению с кучей шаблонов).
В моем случае:
второй уровень - определяет комнату, их пять. Итог - комната или несколько комнат (5 на 5 = 25 как минимум вариантов итога второго уровня)
третий уровень - все просто, количество циклов уборки (1, 2, 3)
Все это разнообразие в трех шаблонах. Но пока буду еще тестить, вдруг что вылезет еще
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 531 раз
Контактная информация:

Re: Контексты в шаблонах поведения

Сообщение Vovix » Пт июл 19, 2019 11:06 am

Решение проблемы с выводом "Неизвестная команда...", после отработки реально имеющегося шаблона!

предыстория:
некоторое время назад у меня (после обновлений связанных с общением и терминалами) была замечена проблема:
после отработки реакции на некоторые шаблоны, например: "Привет", Алиса выдавала необходимую реакцию и дополнительно писала "Неизвестная команда..."!

решение проблемы:
оказывается ошибка была тут, а именно:
некоторые шаблоны, для своего удобства, я объединил типа в раздел - а реально в контекстный шаблон, назвав его "Общие" и при этом оставив в нем чистыми все поля настроек, кроме установки галочки "использовать как контекст ". И созданные другие шаблоны, которые я решил считать общими, я создавал с указанием в поле "Доступно в контексте", именно "Общие".
В результате именно только для всех шаблонов созданных в таком виде происходила такая ошибка.

таким образом вынесение шаблонов, из общего (при чем пустого) в корень, решило проблему!
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Sas
Сообщения: 207
Зарегистрирован: Вт июл 12, 2016 6:16 pm
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: Контексты в шаблонах поведения

Сообщение Sas » Пт июл 19, 2019 1:51 pm

Продублирую тут
Проблема скорей в том что не работает галка 'не проверять другие шаблоны при совпадении'
у меня два шаблона 'кто дома' в глобальном 'общие' и глобальный 'температура' с под 'дома'
и вот если спросить кто дома она отвечает и кто дома и температуру в помещениях и после добавляет 'неизвестная команда'
Наверное сломалась галка для глобальных, а может и для всех
Аватара пользователя
Nail
Сообщения: 373
Зарегистрирован: Пн мар 05, 2018 7:09 am
Откуда: Самара
Благодарил (а): 174 раза
Поблагодарили: 28 раз

Re: Контексты в шаблонах поведения

Сообщение Nail » Сб авг 10, 2019 4:32 pm

В шаблоне поведения поменял текст Алисы, а она произносит старые слова , как почистить шаблон или обновить . что бы произносила новые слова? Ubuntu18.
Mini AMD A6 1450 Quad-core.Ubuntu Server 18.04 (64-bit). MegaD. Zigbee2mqtt+SLS ZigBee Gateway. Broadlink.
Ответить