[шаблоны поведения] Алиса купи слона

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

Модератор: immortal

Ответить
VLAKA
Сообщения: 58
Зарегистрирован: Чт июн 08, 2017 5:45 pm
Благодарил (а): 4 раза
Поблагодарили: 2 раза

[шаблоны поведения] Алиса купи слона

Сообщение VLAKA » Ср янв 30, 2019 12:16 am

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

ну и так бесконечно пока не будет сказано стоп слово

Итак как я пытаюсь это сделать, понятно что это неправильно, было бы правильно работало бы))

делаю главный шаблон (допустим id 10)называю его "купи слона"
ставлю галочку "Не реагировать на системные сообщения" (так как мне не надо чтоб ее собственный ответ, в котором всегда будет фраза "купи слона" в чате реактивировал шаблон)
делаю второй шаблон (допустим id 11) называю его (\w*) чтоб активировался при любом моем ответе, и указываю что он доступен в контексте шаблона "купи слона"
код:

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

if (preg_match('/чайник/uis',$original))
 {
  say("ну ладно",0);
  context_clear(); 
 }
else
 {
  $reply = "Все говорят ".$original." а ты купи слона";
  say($reply,0);
  context_activate(10); 
 }


тоже ставлю галочку использовать как контекст (по идее он сам себя должен реакривировать)
и в поле по истечении времени:

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

$reply = "Все молчат как рыбы, а ты купи слона";
say($reply,0);
context_activate(10);
в результате ничего не работает)) вобщем я запутался окончательно.
Последний раз редактировалось VLAKA Ср янв 30, 2019 12:43 am, всего редактировалось 1 раз.
VLAKA
Сообщения: 58
Зарегистрирован: Чт июн 08, 2017 5:45 pm
Благодарил (а): 4 раза
Поблагодарили: 2 раза

Re: [шаблоны поведения] Алиса купи слона

Сообщение VLAKA » Ср янв 30, 2019 12:38 am

все разобрался) описать проблемму это половина ее решения)
код по истечении времени должен быть в первом шаблоне, а во втором можно не ставить галочку использовать как контекст тогда все работает отлично
Ответить