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

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

Модератор: immortal

alexsmol
Сообщения: 49
Зарегистрирован: Пт сен 26, 2014 10:03 pm
Благодарил (а): 5 раз
Поблагодарили: 3 раза

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

Сообщение alexsmol » Пт окт 03, 2014 9:12 pm

У меня тоже незвестная комманда. Не получается выделить параметры.
alexsmol
Сообщения: 49
Зарегистрирован: Пт сен 26, 2014 10:03 pm
Благодарил (а): 5 раз
Поблагодарили: 3 раза

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

Сообщение alexsmol » Пт окт 03, 2014 9:23 pm

Странно. Работает только (повтори|скажи) (.+)
только скажи
say($matches[2],5);
alexsmol
Сообщения: 49
Зарегистрирован: Пт сен 26, 2014 10:03 pm
Благодарил (а): 5 раз
Поблагодарили: 3 раза

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

Сообщение alexsmol » Пт окт 03, 2014 9:31 pm

(будильник) (.+) отрабатывает , а (будильник на) (.+) нет
alexsmol
Сообщения: 49
Зарегистрирован: Пт сен 26, 2014 10:03 pm
Благодарил (а): 5 раз
Поблагодарили: 3 раза

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

Сообщение alexsmol » Чт окт 09, 2014 9:21 pm

Всё работает. Спасибо Сергею за данный функционал.
Использую его как команды SMS. На Cubietruck установлен gummu. Умный дом на даче и управление с помощью SMS на случай отсутствия интернета очень удобно.
Прилагаю сценарий, который проверяет входящие сообщения и отправляет сообщение say(сообщение).
Далее по шаблону выполняются определённые действия.
Если кому нужны подробности готов подробно описать.

$SMSdir=('/var/spool/gammu/inbox/'); //папка входящих СМС
if ($handle=opendir($SMSdir))
{ while (false !==($file2=readdir($handle)))
{ if ($file2 !="." && $file2 !="..")
{
$nSMS=substr($file2,23,10);
if ($nSMS==gg('AlexanderUs.PhoneNumber')
OR $nSMS==gg('ElenaUs.PhoneNumber')
OR $nSMS==gg('PlanshetUs.PhoneNumber')) //проверка номера телефона откуда прислана SMS
{
$lines=file($SMSdir.$file2);
foreach($lines as $line_num=>$line) {
// echo $line;
say ($line);
}
unlink ($SMSdir.$file2); //удаление сообщения
}
else
{
say ('Сообщение с номера '.$nSMS);

unlink ($SMSdir.$file2); // чужой номер телефона
}
}
}
}
closedir($handle);
alexsmol
Сообщения: 49
Зарегистрирован: Пт сен 26, 2014 10:03 pm
Благодарил (а): 5 раз
Поблагодарили: 3 раза

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

Сообщение alexsmol » Чт окт 09, 2014 9:31 pm

отправка SMS через gummu

include_once(ROOT.'lib/hardware/smsgwMy.php');
MySendSMS(gg('AlexanderUs.PhoneNumber'),'Привет');

В папке lib/hardware/ создан smsgwMy.php


* Description
*
* @access public
*/
function MySendSMS($phone, $message) {

$filename1='/var/spool/gammu/outbox/OUTTT_+7'.$phone.'_00.txt';
if( !file_exists($filename1))
{
$fp = fopen($filename1, "w"); //
fwrite($fp, $message);
fclose ($fp);
}

}

function IpSMS($phone) {

$mes='/var/www/OUTTT_+7'.$phone.'_00.txt';

safe_exec('sudo ifconfig -a >'.$mes.'');

}

?>

Для восприятия русского написания необходимо в .gummurc
добавить

gammucoding = utf8
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

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

Сообщение Amarok » Пн ноя 24, 2014 12:45 pm

Хм. А конструкции из двух шаблонов (типа: "сколько время и включи свет") только у меня не работают?
За это сообщение автора Amarok поблагодарил:
directman66 (Пт авг 23, 2019 5:35 pm)
Рейтинг: 1.16%
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Пн дек 29, 2014 6:03 pm

Необольшое обновление и пример использования...

В качестве эксперимента решил попробовать поубавить скромности Алисе и дать ей возможность инициировать общение при определённых условиях. Для этих целей есть замечательная штука под названием "контексты", а так же команда для активации контекста из кода.

Но всё по порядку.

Во-первых, создаём шаблон поведения, который будет выступать в качестве контекста. Фактически, это вопрос Алисы о том, надо ли что-то сделать в данный момент:
картинкаПоказать
Изображение
Важные вещи на картинке:
1. ID (появляется после добавление) -- его будем использовать для принудительной активации
2. Код, который будет исполнен при активации контекста
3. Галочка, которая говорит о том, что это не просто шаблон, а контекст, т.е. может иметь дочерние шаблоны
4. Время, через которое контекст будет автоматически деактивирован, если не была принята никакая команда
5. Код, который выполнится в случае истечении времени (см. предыдущий пункт).

Далее, создаём три дочерних шаблона:

Изображение

1. Да
СпойлерПоказать
Изображение
2. Нет
СпойлерПоказать
Изображение
3. (.+)
СпойлерПоказать
Изображение
Соответственно, на каждый из этих шаблонов система реагирует по-разному. Последний шаблон я добавил просто для примера того, что можно вводить и использовать внутри контекста произвольную фразу.

И последний штрих -- инициировать переход системы состояние нужного контекста можно следующим кодом:

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

context_activate(10); 
10 это ID нашего контекста. Код может быть вызван например по таймеру или датчику движения и Алиса может спросить, "а не хотите ли включить музыку?". Ну или по условному событию -- температура на улице понизилась и Алиса может предложить по-раньше начинать прогрев помещения. В общем, всё зависит от вашей фантазии, как обычно.

Для ответа можно использовать как чат, так и голос, но ещё вариант использовать небольшой пульт (от Noolite либо любой другой), повесив на одну кнопку ответ "Да", на вторую "Нет", чтобы быстро отвечать на какие-то предложения от Алисы.
За это сообщение автора sergejey поблагодарили (всего 4):
Amarok (Вт дек 30, 2014 9:05 am) • Gelezako (Пн июн 13, 2016 5:29 pm) • directman66 (Пт авг 23, 2019 5:35 pm) • Yashalta (Пт май 08, 2020 8:43 pm)
Рейтинг: 4.65%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
triada13
Сообщения: 242
Зарегистрирован: Вт мар 11, 2014 8:36 pm
Откуда: Челябинск
Благодарил (а): 107 раз
Поблагодарили: 7 раз

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

Сообщение triada13 » Пн дек 29, 2014 8:57 pm

Сергей вечер добрый.
Попробовал сейчас ваш пример, и вот что вышло:
СпойлерПоказать
Изображение
Алиса сама себе отвечает, забавно, но..
Majordomo на Orange Pi Zero.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Пн дек 29, 2014 9:09 pm

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
triada13
Сообщения: 242
Зарегистрирован: Вт мар 11, 2014 8:36 pm
Откуда: Челябинск
Благодарил (а): 107 раз
Поблагодарили: 7 раз

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

Сообщение triada13 » Пн дек 29, 2014 9:13 pm

Обновление сделал час назад.
Это получается она сама себя слышит?
Majordomo на Orange Pi Zero.
Ответить