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

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

Модератор: immortal

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

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

Сообщение xor » Пн ноя 21, 2016 9:59 pm

Подтверждаю, Помощь выводится для шаблонов общего контекста.

баловался с включи/выключи свет - там у меня много пунктов.
Добавил в контексте свет шаблон помоги с кодом от Помощи, корявенько, но, вроде, то, что нужно

7236 0 не поняла, где? 11/21/2016 21:44:45
7235 0 помоги 11/21/2016 21:44:25
7234 0 везде 11/21/2016 21:44:25
7233 0 в холле 11/21/2016 21:44:25
7232 0 в новой комнате 11/21/2016 21:44:25
7231 0 в саду 11/21/2016 21:44:25
7230 0 у печки 11/21/2016 21:44:25
7229 0 у кровати 11/21/2016 21:44:25
7228 0 на крыльце 11/21/2016 21:44:25
7227 0 на улице 11/21/2016 21:44:25
7226 0 здесь Доступны команды 11/21/2016 21:44:25
7225 0 Где? 11/21/2016 21:44:25
7224 5 помоги 11/21/2016 21:44:25
7223 0 Где? 11/21/2016 21:44:18
7222 5 свет 11/21/2016 21:44:18
7221 0 Что именно? 11/21/2016 21:44:12
7220 5 включи
Аватара пользователя
m-malva
Сообщения: 291
Зарегистрирован: Чт фев 26, 2015 1:38 am
Откуда: Санкт-Петербург
Благодарил (а): 16 раз
Поблагодарили: 66 раз
Контактная информация:

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

Сообщение m-malva » Вт ноя 22, 2016 2:20 pm

xor писал(а):Подтверждаю, Помощь выводится для шаблонов общего контекста.

баловался с включи/выключи свет - там у меня много пунктов.
Добавил в контексте свет шаблон помоги с кодом от Помощи, корявенько, но, вроде, то, что нужно
В каждую ветку пихать? Может есть другое решение?
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

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

Сообщение xor » Вт ноя 22, 2016 3:06 pm

Я так понял, что нужно для каждого контекста
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

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

Сообщение xor » Вт ноя 22, 2016 3:26 pm

Причем можно называть тоже помощь(т.е., помощь в контексте общем<> помощь в другом контексте), а код оформить скриптом. Типа функция такая - помощь, которая в контексте данном список доступных акций выводит.
Хм, удобно.
Попробую.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Пт ноя 25, 2016 4:10 pm

попытался воспроизвести ситуацию и не получиолсь.
Дано:
"контекст" -- обычный контекст с двумя дочерними командами "команда 1", "команда 2"
"помощь" -- глобальный контекст с двумя дочерними командами "помощь1", "помощь2"

код команды "помощь1":

Код: Выделить всё

say("Доступные действия:");
$actions=$this->getAvailableActions();
$total=count($actions);
for($i=0;$i<$total;$i++) {
 say($actions[$i]);
} 
теперь внимательно следим за руками :)
я: контекст
я: помощь1
Алиса: Доступные действия:
Алиса: команда 1
Алиса: команда 2

т.е. всё как задумывалось -- отработала команда "помощь1" общего контекста и выдала список доступных команд для текущего контекста "контекст"
За это сообщение автора sergejey поблагодарили (всего 2):
LeonidMarchuk (Вс янв 28, 2018 5:22 pm) • Samir77 (Чт окт 25, 2018 1:09 am)
Рейтинг: 2.33%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
m-malva
Сообщения: 291
Зарегистрирован: Чт фев 26, 2015 1:38 am
Откуда: Санкт-Петербург
Благодарил (а): 16 раз
Поблагодарили: 66 раз
Контактная информация:

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

Сообщение m-malva » Вс ноя 27, 2016 2:54 am

да блин. но у меня не так!!! Следите за руками!
Имеем majordomo обновил сегодня

контекст:
Доступно в контексте: Для начала произнесите имя Алиса (0)
Название: найди
Тип шаблона: На основе сообщений
Приоритет: 0
0 не проверять другие шаблоны при совпадении
1 Use morphology
1 Не реагировать на системные сообщения
Шаблон:
((н|Н)айди|(П|п)оищи)
Ограничение по времени, секунд: 0
Выполнить при совпадении : Код
Использовать для программирования: PHP

Код: Выделить всё

say('Я не поняла. Что нужно '.$bases[0].'?',5); 
1 использовать как контекст
Время ожидания команды: 30
По истечении времени выполнить: say('Вы так и не сказали мне, что хотели найти',5);
0 глобальный контекст

в картинках:
СпойлерПоказать
Снимок1.PNG
Снимок1.PNG (18.18 КБ) 9856 просмотров
Снимок2.PNG
Снимок2.PNG (11.57 КБ) 9856 просмотров
Снимок3.PNG
Снимок3.PNG (16.07 КБ) 9856 просмотров


Доступно в контексте:
Название:Общий контекст
Тип шаблона:На основе сообщений
Приоритет:0

0 не проверять другие шаблоны при совпадении
0 Use morphology
1 Не реагировать на системные сообщения
Шаблон:
Ограничение по времени, секунд:0
1 использовать как контекст
1 глобальный контекст

Дочерние пункты:

сценарий
помощь
забей
и еще

в картинках:
СпойлерПоказать
Снимок4.PNG
Снимок4.PNG (13.41 КБ) 9856 просмотров
Снимок5.PNG
Снимок5.PNG (18.79 КБ) 9856 просмотров


Доступно в контексте:Общий контекст
Название:помощь
Тип шаблона:На основе сообщений
Приоритет:500
0 не проверять другие шаблоны при совпадении
0 Use morphology
1 Не реагировать на системные сообщения
Шаблон:
((п|П)омощь|(п|П)омоги|(с|С)писок команд)

Код
Использовать для программирования: PHP

Код: Выделить всё

say ("Вы просили помочь",5);
$actions=$this->getAvailableActions();
$total=count($actions);
for($i=0;$i<$total;$i++) {
 say($actions[$i],5);
}

0 использовать как контекст

в картинках
СпойлерПоказать
Снимок6.PNG
Снимок6.PNG (20.6 КБ) 9856 просмотров
Снимок7.PNG
Снимок7.PNG (22.95 КБ) 9856 просмотров

Итог:

02:37 Алиса: и еще
02:37 Алиса: забей
02:37 Алиса: помощь
02:37 Алиса: сценарий
02:37 Алиса: Вы просили помочь
02:37 Леонид: помощь
02:37 Алиса: Я не поняла. Что нужно НАЙТИ?
02:37 Леонид: Алиса найди


в логе
02:37:21 0.56056200 External context response: a:1:{s:15:"MATCHED_CONTEXT";i:0;}
Аватара пользователя
m-malva
Сообщения: 291
Зарегистрирован: Чт фев 26, 2015 1:38 am
Откуда: Санкт-Петербург
Благодарил (а): 16 раз
Поблагодарили: 66 раз
Контактная информация:

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

Сообщение m-malva » Пн ноя 28, 2016 9:56 am

xor писал(а):Подтверждаю, Помощь выводится для шаблонов общего контекста.
Кривые руки и невнимательность!!!
помощь
ПОЛЕ
Set context when matched:
ДОЛЖНО БЫТЬ ПУСТЫМ!!!
hudyakov1984
Сообщения: 10
Зарегистрирован: Чт фев 23, 2017 8:57 pm
Благодарил (а): 3 раза
Поблагодарили: 0

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

Сообщение hudyakov1984 » Чт фев 23, 2017 9:01 pm

Здравствуйте! У меня вопрос по шаблонам поведения - когда Алиса ищет песню, то лезет за песней на сайт, который у нас в России заблокирован. Шаблон поведения идет через Connect и даже отключив коннект, всё равно шаблоны остаются и Алиса реагирует на вопросы кто такой и что такое и др. Как отключать шаблоны из коннекта, как их редактировать, например, поиск песен? Заранее спасибо.
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

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

Сообщение slgeo » Сб мар 04, 2017 4:44 pm

Не пойму что случилось, перестали работать все шаблоны поведения. В логе на любой вопрос выводит одинаковый результат:
External context response: a:1:{s:15:"MATCHED_CONTEXT";i:0;}
Куда копать? Как отладить?
Нашел в анналах у себя скрипт для сброса контекста, и все заработало:

Код: Выделить всё

SQLExec("UPDATE users SET ACTIVE_CONTEXT_ID=0 WHERE 1"); 
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
cyneprepou2
Сообщения: 17
Зарегистрирован: Вс фев 26, 2017 4:29 pm
Благодарил (а): 0
Поблагодарили: 6 раз

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

Сообщение cyneprepou2 » Сб мар 04, 2017 8:38 pm

У меня тоже не получается настроить Шаблоны поведения.
Стоит последняя версия из репо.
Взял простой пример из топика.

Название "погода" - как контекст - код: sayReply('в каком городе',1) - по истечении времени код: sayReply('Нет, так нет',1)
Дочерние пункты, доступные в контексте погода:
Название "в Питере" - код: sayReply('Погода в Питере хорошая',1)
Название "в Москве" - код: sayReply('Погода в Москве хорошая',1)

Если в чате набирать текст:
1)Пишешь "погода"
2)ответ голосом "в каком городе" +в чате ничего
3)пишешь "в Москве"
4)ответ голосом "в каком городе" + ответ в чате "Погода в Москве хорошая" + вылетает ошибка в missing argument 4 for patterns:runPatternAction() called in ...context.inc.php и еще что-то там....

Если в чате написать всю фразу:
1)пишешь "погода в Москве"
2)ответ голосом "в каком городе" + ответ в чате "Погода в Москве хорошая" + вылетает ошибка в missing argument 4 for patterns:runPatternAction() called in ...context.inc.php и еще что-то там....


Если голосом(пробовал с мобильного приложения):
1)говоришь "погода"
2)ответ голосом "в каком городе" + в чате ничего
3)говоришь "в Москве"
4)ответ голосом "в каком городе" + ответ в чате "Погода в Москве хорошая"

Если голосом говоришь сразу всю фразу:
1)говоришь - "погода в Москве"
2)ответ голосом "в каком городе" + ответ в чате "Погода в Москве хорошая"

Ни в одном из вариантов после истечения времени 30 секунд Алиса ничего не говорит и не пишет.

UDP
Точный текст ошибки
Warning: Missing argument 4 for patterns::runPatternAction(), called in C:\_majordomo\htdocs\lib\context.inc.php on line 125 and defined in C:\_majordomo\htdocs\modules\patterns\patterns.class.php on line 460

UDP
Попробовал UPDATE users SET ACTIVE_CONTEXT_ID=0 WHERE 1 и немного потестировал с мобильника.
Текст ответов в чате совпадает с голосовым ответом во всех случаях.
Фраза целиком:
1)Сказал фразу целиком "погода в Москве"
2)получил правильный ответ "Погода в Москве хорошая".

Частями:
1)Сказал сначала "погода"
2)ответ "в каком городе"
3)сказал "в Москве"
4)ответ "Погода в Москве хорошая".

Если писать текстом:
Фраза целиком:
1)пишешь "погода в Москве"
2)ответ "Погода в Москве хорошая"
3)в чате вылетает ошибка Warning: Missing argument

частями:
1)пишешь "погода"
2)ответ "в каком городе"
3)пишешь "в Москве"
4)ответ "Погода в Москве хорошая"
5)в чате вылетает ошибка Warning: Missing argument
Ответить