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

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

Модератор: immortal

fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

Сообщение fandaymon » Пт май 11, 2018 4:24 pm

newz20 писал(а):
Пт май 11, 2018 4:21 pm
fandaymon писал(а):
Пт май 11, 2018 4:12 pm
newz20 писал(а):
Пт май 11, 2018 4:04 pm
fandaymon писал(а):
Пт май 11, 2018 3:30 pm
Всё равно придётся делать проверку билайн это или телевизор - коды-то пультов у них разные ... А канал и набирается по желанию при помощи кода который остался в моём предыдущем сообщении.
Хорошо, теперь для тех кто совсем плохо понимает.
Я сразу писал что слаб в коде, помогите разобрать.

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

$chanel=(int)matches[1];                                            // присваиваем переменной "канал" найденное из команды и делает его целым
if ($chanel>99) {                                                         //Если число больше 99 то
$pult_num=floor($chanel/100);                                  //переменная "пульт" =  делить "канал" на 100 и взять первую цифру.
отправлем на пульт кнопку $pult_num                      //как отправить код?
$chanel=$chanel - 100*$pult_num;      // тут переназначаем "канал" на первое значение "канал" -  то что получили в пульт умноженное на 100
$pult_num=floor($chanel/10);              //тут переназначаем "пульт"  и делим "канал" на 10 и берем первую цифру
отправляем на пульт $pult_num  //как отправить код?
$pult_num=$chanel - 10*$pult_num; // тут берем уже отнимаем десятки оставшиеся и оставляем единицы
отправляем на пульт $pult_num //как отправить код?
}
elseif ($chanel>9) {
$pult_num=floor($chanel/10);
отправляем $pult_num
$pult_num=$chanel - 10*$pult_num;
отправляем $pult_num
}
else {
отправляем $chanel
}
Я разобрался вроде с математической стороной вопроса
Я только не могу понять где мне прописать коды этих 10 кнопок что бы $pult_num получая значение 8 отправлял код этой кнопки в свойство объекта а именно sg('ir.ir-code',код)?
Сделать вначале массив с кодами кнопок.

$pult_code=array('код нуля','код единицы','код двойки',....);

А там где написано отправляем код

sg('ir.ir-code',$pult_code[$pult_num]);

Эта команда достаёт из массива код соотвествующий нашему номеру и заносит его в наше свойство
Тогда тут
else {
отправляем $chanel
}
Надо переписать на
else {
$pult_num=$chanel;
sg('ir.ir-code',$pult_code[$pult_num]);
}
Правильно?
Можно просто написать
else {
sg('ir.ir-code',$pult_code[$chanel]);
}
За это сообщение автора fandaymon поблагодарил:
newz20 (Пт май 11, 2018 4:27 pm)
Рейтинг: 1.16%
newz20
Сообщения: 172
Зарегистрирован: Пт апр 06, 2018 9:40 am
Благодарил (а): 93 раза
Поблагодарили: 93 раза

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

Сообщение newz20 » Пт май 11, 2018 4:40 pm

fandaymon писал(а):
Пт май 11, 2018 4:24 pm
Можно просто написать
else {
sg('ir.ir-code',$pult_code[$chanel]);
}
пишу в чат
16:30 Admin: Включи канал 12
получаю
16:30 Алиса: Неизвестная команда...

Говорю тоже, алиса распознает, а шаблон не распознается

Название шаблона
Включи канал (+d.)
Не хочет он отрабатывать
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

Сообщение fandaymon » Пт май 11, 2018 4:45 pm

newz20 писал(а):
Пт май 11, 2018 4:40 pm
fandaymon писал(а):
Пт май 11, 2018 4:24 pm
Можно просто написать
else {
sg('ir.ir-code',$pult_code[$chanel]);
}
пишу в чат
16:30 Admin: Включи канал 12
получаю
16:30 Алиса: Неизвестная команда...

Говорю тоже, алиса распознает, а шаблон не распознается

Название шаблона
Включи канал (+d.)
Не хочет он отрабатывать
косой черты нету

(\d+)
newz20
Сообщения: 172
Зарегистрирован: Пт апр 06, 2018 9:40 am
Благодарил (а): 93 раза
Поблагодарили: 93 раза

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

Сообщение newz20 » Пт май 11, 2018 4:50 pm

fandaymon писал(а):
Пт май 11, 2018 4:45 pm
newz20 писал(а):
Пт май 11, 2018 4:40 pm
fandaymon писал(а):
Пт май 11, 2018 4:24 pm
Можно просто написать
else {
sg('ir.ir-code',$pult_code[$chanel]);
}
пишу в чат
16:30 Admin: Включи канал 12
получаю
16:30 Алиса: Неизвестная команда...

Говорю тоже, алиса распознает, а шаблон не распознается

Название шаблона
Включи канал (+d.)
Не хочет он отрабатывать
косой черты нету

(\d+)
Включи канал (\d+)
Не работает


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

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

Сообщение xor » Пт май 11, 2018 4:57 pm

Посмотрите у многих есть шаблон установки будильника, там есть выбор регэкспа чисел (правильное написание)

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

newz20
Сообщения: 172
Зарегистрирован: Пт апр 06, 2018 9:40 am
Благодарил (а): 93 раза
Поблагодарили: 93 раза

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

Сообщение newz20 » Пт май 11, 2018 5:03 pm

fandaymon писал(а):
Пт май 11, 2018 4:45 pm
newz20 писал(а):
Пт май 11, 2018 4:40 pm
fandaymon писал(а):
Пт май 11, 2018 4:24 pm
Можно просто написать
else {
sg('ir.ir-code',$pult_code[$chanel]);
}
пишу в чат
16:30 Admin: Включи канал 12
получаю
16:30 Алиса: Неизвестная команда...

Говорю тоже, алиса распознает, а шаблон не распознается

Название шаблона
Включи канал (+d.)
Не хочет он отрабатывать
косой черты нету

(\d+)
$pult_code=array('код нуля','код единицы','код двойки');

$chanel=(int)matches[1];
if ($chanel>99) {
$pult_num=floor($chanel/100);
sg('ir.ir_code',$pult_code[$pult_num]);
$chanel=$chanel - 100*$pult_num;
$pult_num=floor($chanel/10);
sg('ir.ir_code',$pult_code[$pult_num]);
$pult_num=$chanel - 10*$pult_num;
sg('ir.ir_code',$pult_code[$pult_num]);
}
elseif ($chanel>9) {
$pult_num=floor($chanel/10);
sg('ir.ir_code',$pult_code[$pult_num]);
$pult_num=$chanel - 10*$pult_num;
sg('ir.ir_code',$pult_code[$pult_num]);
}
else {
sg('ir.ir_code',$pult_code[$chanel]);
}

Где ошибка? при отправке 11 или 12 последнее присвоенное значение код нуля,
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

Сообщение fandaymon » Пт май 11, 2018 5:16 pm

newz20 писал(а):
Пт май 11, 2018 5:03 pm
fandaymon писал(а):
Пт май 11, 2018 4:45 pm
newz20 писал(а):
Пт май 11, 2018 4:40 pm
fandaymon писал(а):
Пт май 11, 2018 4:24 pm
Можно просто написать
else {
sg('ir.ir-code',$pult_code[$chanel]);
}
пишу в чат
16:30 Admin: Включи канал 12
получаю
16:30 Алиса: Неизвестная команда...

Говорю тоже, алиса распознает, а шаблон не распознается

Название шаблона
Включи канал (+d.)
Не хочет он отрабатывать
косой черты нету

(\d+)
$pult_code=array('код нуля','код единицы','код двойки');

$chanel=(int)matches[1];
if ($chanel>99) {
$pult_num=floor($chanel/100);
sg('ir.ir_code',$pult_code[$pult_num]);
$chanel=$chanel - 100*$pult_num;
$pult_num=floor($chanel/10);
sg('ir.ir_code',$pult_code[$pult_num]);
$pult_num=$chanel - 10*$pult_num;
sg('ir.ir_code',$pult_code[$pult_num]);
}
elseif ($chanel>9) {
$pult_num=floor($chanel/10);
sg('ir.ir_code',$pult_code[$pult_num]);
$pult_num=$chanel - 10*$pult_num;
sg('ir.ir_code',$pult_code[$pult_num]);
}
else {
sg('ir.ir_code',$pult_code[$chanel]);
}

Где ошибка? при отправке 11 или 12 последнее присвоенное значение код нуля,
$chanel=(int)$matches[1];
За это сообщение автора fandaymon поблагодарил:
newz20 (Пт май 11, 2018 5:49 pm)
Рейтинг: 1.16%
daiver
Сообщения: 3
Зарегистрирован: Пт фев 17, 2017 7:57 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение daiver » Вс июн 17, 2018 11:25 am

Фигня какая то.
После голосовой команды контекст не меняется, хотя код отрабатывает
После такой же, если напечатать то меняется и ждет команду подтверждения
Даже если сначала напечатать, подтверждение голосом не работает, только печатать
СкриншотПоказать
Желтым отмечены голосовые команды
2018-06-17 11_18_33-.png
2018-06-17 11_18_33-.png (13.42 КБ) 4353 просмотра
Цифра 0 и 1 в конце это пользователь контекста. Получается система воспринимает голосовые команды от какого-то пользователя, которого нет в системе.

Куда копнуть?
Sas
Сообщения: 207
Зарегистрирован: Вт июл 12, 2016 6:16 pm
Благодарил (а): 2 раза
Поблагодарили: 14 раз

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

Сообщение Sas » Пн июл 09, 2018 2:28 pm

Всем добрый день.
Вопрос скорей к Сергею, но может кто то тут тоже натыкался.
При переходе по шаблонам система добавляет к $original себя же
т.е. имеем шаблон:
тест ->(и дочерние) тест2 ->тест3
в тест $original будет = 'тест', но вот если глянуть $original в тест2 то она уже будет
$original =$original + $original.
т.е: $original ='тест тест2 тест тест2'
при переходе в третий шаблон тест3 уже будет
$original =$original + $original + $original + $original
т.е: $original ='тест тест2 тест3 тест тест2 тест3 тест тест2 тест3 тест тест2 тест3'

Очень сложно работать с $matches при таком странном поведении когда добавив шаблон выше,
нижние $matches могут уехать куда угодно.
Тестировал это даже на свежей системе с её чистой БД
это происходит в строке 736 файла patterns.class.php

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

      $history=context_get_history().' '.$history; 
если ее закаментить то $original не множится
Видимо это для работы с историей, но поведение достаточно странное, нет?


Вторая проблема видимо связана с включением в шаблонах phpmorphy
matches[$n] вываливает:
для теста:
я:
расскажи о фильме головы горячяя
система:
головы горячяя@@@@РАССКАЗАТЬ О ФИЛЬМ ГОЛОВА ГОРЯЧИЙ@@@@РАССКАЗАТЬ О ФИЛЬМ ГОЛОВА ГОРЯЧЯТЬ@@@@РАССКАЗАТЬ О ФИЛЬМ ГОЛОВ ГОРЯЧИЙ@@@@РАССКАЗАТЬ О ФИЛЬМ ГОЛОВ ГОРЯЧЯТЬ

это происходит в строке 718,719 файла patterns.class.php

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

718: $check=implode('@@@@', $lines_pattern);
719:    if (preg_match('/'.$check.'/isu', implode('@@@@', $lines), $matches)) {
720:   $condition_matched=1;
Это скорей всего опять же из-за того что система проходит шаблон-1-шаблон-2 и тд + phpmorphy
Возможно потому что у меня много шаблонов и много шаблонов с (.+) или (.*)
yura_s80
Сообщения: 80
Зарегистрирован: Чт апр 19, 2018 9:09 am
Благодарил (а): 7 раз
Поблагодарили: 9 раз

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

Сообщение yura_s80 » Ср авг 15, 2018 8:14 am

Прошу помощи. Ситуация такая:
В шаблонах поведения сделал контекст:
1.jpg
1.jpg (15.8 КБ) 4130 просмотров
Добавляю сценарии:

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

callMethod('MCP_pin200'.'.'.'turnOn');

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

callMethod('MCP_pin202'.'.'.'turnOn');
Реакция такая:
Алиса включи свет в зале (включает свет)
Алиса включи свет в спальне (включает свет)
Алиса включи свет в зале в спальне (включает и там и там)

Но! Стоит добавить в сценариях код say:

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

callMethod('MCP_pin200'.'.'.'turnOn');
say ("Свет в зале включен",1);

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

callMethod('MCP_pin202'.'.'.'turnOn');
say ("Свет в спальне включен",1);
Алиса включи свет в зале
Говорит - Свет в зале включен (включает свет)
Алиса включи свет в спальне
Говорит -Свет в спальне включен (включает свет)
Алиса включи свет в зале в спальне
Говорит Свет в спальне включен (и включает только в спальне)

Подскажите как правильно сделать say ?
Ответить