Алиса
Код
say("Да. Чем я могу помочь?",10);
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
|
Поздоровайся
Шаблон: ((П|п)оздоровайся)|((С|с)кажи привет)|((П|п)редставься)
Код
say($add_word."Меня зовут Алиса. Я являюсь программой управления этим домом. Всегда к вашим услугам.",10);
|
Презентация
Код
say("Привет, меня зовут Алиса. Я представляю систему умного дома. Я расскажу о том, что я знаю и умею. Во первых, я знаю, какая температура в разных комнатах и могу регулировать систему отопления в зависимости от ваших предпочтений. В мои обязанности входит наблюдение за тем, где находятся мои хозяева. Также я знаю, когда дома никого нет и когда кто-то приходит домой, чтобы рационально управлять домашними системами. Вы можете попросить меня включить музыку. А ещё вы можете у меня что-нибудь спросить. Я могу найти ответы на вопросы что такое или кто такой. Спасибо за внимание. Всегда к вашим услугам",1);
|
|
Арсений приехал с работы домой (на подъезде)
Шаблон: Арсений выехал с работы.+?Арсений подъезжает к дому
Код
if (!gg('Arseniy.atHome')) {
say("Автоматическое открытие ворот для Арсения.",10);
}
|
Включи или выключи
Шаблон: (^включи|^выключи)
Код
say('Что именно '.$original.'ть?',10);
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
|
будильник
Код
if (preg_match('/включи/uis',$original)) {
say("Включаю будильник на установленное время ".gg('AlarmOne.AlarmTime'),1);
setGlobal('AlarmOne.AlarmOn',1);
} elseif (preg_match('/выключи/uis',$original)) {
say('Хорошо. Выключаю будильник полностью',1);
setGlobal('AlarmOne.AlarmOn',0);
} else {
say('Непонятно что с будильником: '.$original,1);
}
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
|
будильник (включить на XX часов YY минут)
Шаблон: будильник на (.*) (часа|часов|час)(\s+)(.*)((\s+(.+)\s*(.*))|(ровно))
Код
if (preg_match('/включи/uis',$original)) {
$h=$matches[1];
if (!check_for_number($h)) {
$ddd = explode(" ", $h);
$len=count($ddd);
$h=0;
for($j=0;$j<$len;$j++) {
$n=text_to_number($ddd[$j]);
//if (!$n) {$n="0";}
if (check_for_number($n)) {$h=$h+$n;}
else {$h=$matches[1];}
}
$h=(string)$h;
}
if (strlen($h)<2) {$h="0".$h;}
$m=$matches[4];
if (!check_for_number($m)) {
$ddd = explode(" ", $m);
$len=count($ddd);
$m=0;
for($j=0;$j<$len;$j++) {
$n=text_to_number($ddd[$j]);
//if (!$n) {$n="0";}
if (check_for_number($n)) {$m=$m+$n;}
else {$m=$matches[4];}
}
$m=(string)$m;
}
if (($h>24)|(!check_for_number($h))) {
say("Что это ".$h." ".$matches[2].".? И который это час по вашему.? Определитесь и сообщите снова.",1);
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
return;
}
if (($m>59)|(!check_for_number($m))) {
say("Мне не понятно на сколько, в минутах, завести будильник, поэтому пусть будет ровно 00.",1);
$m="00";
}
if (!$m) {$m="00";}
if (($m<10)&($m!="00")) {$m="0".$m;}
say(getRandomLine('ok')."Ставлю будильник на время ".$h." ".$matches[2]." ".$m." ".$matches[7].$matches[9],1);
setGlobal('AlarmOne.AlarmOn',1);
setGlobal('AlarmOne.AlarmTime',$h.':'.$m);
}
elseif (preg_match('/выключи/uis',$original)) {
say(getRandomLine('ok').' Выключаю будильник полностью ',1);
setGlobal('AlarmOne.AlarmOn',0);
} else {
say('Непонятно что с будильником: '.$original,1);
}
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
|
выкл всего
Код
if (preg_match('/включи/uis',$original)) {
say('Что именно включить?',10);
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
} elseif (preg_match('/выключи/uis',$original)) {
getURL('http://127.0.0.1/rc/?command=vlc_close', 0);
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
say(getRandomLine('done'),10);
} else {
say('Непонятно, что нужно сделать: '.$original,10);
}
|
Звук в WiFi
Шаблон: (звук).*(сеть|вайфай|wifi)
Код
// установим внутреннюю кодировку символов
mb_internal_encoding("UTF-8");
$on1 = mb_stripos($original,'включи');
$off1 = mb_stripos($original,'выключи');
if ($on1 === false) {
} else {
say('Включаю передачу звука в сеть WiFi',1);
runScript('audio_wifi_start');
}
if ($off1 === false) {
} else {
say('Выключаю передачу звука в сеть WiFi',1);
runScript('audio_wifi_stop');
}
if (($on1 === false)&($off1 === false)) {
say('Непонятно что: '.$original,1);
}
|
музыку
Код
if (preg_match('/включи/uis',$original)) {
say ("Какую именно?",10);
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
} elseif (preg_match('/выключи/uis',$original)) {
getURL('http://127.0.0.1/rc/?command=vlc_close', 0);
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
say(getRandomLine('done'),10);
} else {
say('Непонятно, что с музыкой: '.$original,10);
}
|
вконтакте
Шаблон: (вконтакте)|(в контакте)|(из контакта)|(из контактов)
Код
say("Секундочку",10);
runScript("VkMusic", array('VALUE'=>14014113, 'MODE'=>0));
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
|
из домашней коллекции
Шаблон: (домашние коллекции)|(из домашней коллекции)
Код
say("Секундочку",10);
runScript('playFavoriteMusic');
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
|
|
радио
Код
if (preg_match('/включи/uis',$original)) {
say ("Какую станцию вы хотели бы послушать?",10);
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
} elseif (preg_match('/выключи/uis',$original)) {
getURL('http://127.0.0.1/rc/?command=vlc_close', 0);
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
say(getRandomLine('done'),10);
} else {
say('Непонятно, что с радио: '.$original,10);
}
|
Deep House
Шаблон: (дип хауз)|(deep house)|(дип хаус)
Код
say("Секундочку",10);
getURL('http://127.0.0.1/rc/?command=vlc_close', 0);
getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=44', 0);
|
Euro Hits
Шаблон: (euro hits)|(евро хитс)|(еврохит)|(еврохит и)|(Еврохит и)|(евро хиты)
Код
say("Секундочку",10);
getURL('http://127.0.0.1/rc/?command=vlc_close', 0);
getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=9', 0);
|
House
Шаблон: (хаус)|(хауз)|(house)
Код
say("Секундочку",10);
getURL('http://127.0.0.1/rc/?command=vlc_close', 0);
getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=11', 0);
|
Relax FM
Шаблон: (релакс)|(релакс фм)
Код
say("Секундочку",10);
getURL('http://127.0.0.1/rc/?command=vlc_close', 0);
getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=182', 0);
|
Russian Dance
Шаблон: (танцевальное)|(рашен дэнс)
Код
say("Секундочку",10);
getURL('http://127.0.0.1/rc/?command=vlc_close', 0);
getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=10', 0);
|
Sex
Код
say("Секундочку",10);
getURL('http://127.0.0.1/rc/?command=vlc_close', 0);
getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=45', 0);
|
Авторадио
Шаблон: (авторадио)|(авто радио)
Код
say("Секундочку",10);
getURL('http://127.0.0.1/rc/?command=vlc_close', 0);
getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=177', 0);
|
Радио ENERGY
Шаблон: (енерджи)|(энерджи)|(energy)
Код
say("Секундочку",10);
getURL('http://127.0.0.1/rc/?command=vlc_close', 0);
getURL('http://localhost/popup/app_101ru.html?ajax=1&op=playstation&id=178', 0);
|
|
свет
Шаблон: ((с|ц)вет|освещение)
Код
say ("Где именно?",10);
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
|
ванна
Код
if (preg_match('/включи/uis',$original)) {
say('Включаю свет в ванной комнате',10);
// callMethod("ванна_второй_этаж.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('Выключаю свет в ванной комнате',10);
// callMethod("ванна_второй_этаж.turnOff");
} else {
say('Непонятно, что со светом в ванной комнате: '.$original,10);
}
|
везде
Шаблон: (всё|весь|везде|всюду|полностью)
Код
if (preg_match('/включи/uis',$original)) {
say('Включаю весь свет',10);
// runScript('turnOn_All');
} elseif (preg_match('/выключи/uis',$original)) {
say('Выключаю весь свет',10);
// runScript('turnOff_All');
} else {
say('Непонятно что со светом везде: '.$original,10);
}
|
коридор
Код
if (preg_match('/включи/uis',$original)) {
say('Включаю свет в коридоре',10);
// callMethod("коридор_второй_этаж.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
say('Выключаю свет в коридоре',10);
// callMethod("коридор_второй_этаж.turnOff");
} else {
say('Непонятно что со светом в коридоре: '.$original,10);
}
|
|
|
Вопрос в демо режиме
Код
rs('DemoSay','Не стесняйтесь. Я жду вопроса!');
runScript('AutoRemoteMessage');
|
Давай приготовим
Шаблон: (Д|д)авай приготовим (.+)
Код
$queryString = $matches[2];
/*
$findParams = array(
'aerogrill' => '22', // Рецепты для аэрогриля
'waffle' => '27', // Для вафельницы
'yoghurt' => '28', // Для йогуртиницы
'multivarka' => '25', //Рецепты для мультиварки
'steamer' => '15', //Для пароварки
'pressureCooker' => '46', //Для скороварки
'breadMaker' => '23', //Для хлебопечки
'fondue' => '24' //Рецепты фондю
);
*/
$findParams = array();
$recipeNumber = rand(0, 5);
$recipesList = findRecipes($queryString, $findParams);
if (!empty($recipesList)) {
$recipe = getRecipes($recipesList[$recipeNumber]['link']);
$recipe['link'] = $recipesList[$recipeNumber]['link'];
$recipe['name'] = $recipesList[$recipeNumber]['text'];
sayRecipe($recipe);
} else {
say('Ничего не найдено.',2);
}
function sayRecipe($recipe) {
say($recipe['name'],2);
if (!empty($recipe['description'])) {
foreach ($recipe['description'] as $e) {
say($e,2);
}
}
$ingrstr = 'Нам понадобится: ';
foreach ($recipe['ingredients'] as $e) {
$ingrstr .= $e . ', ';
}
say($ingrstr,2);
say('Способ приготовления:');
foreach ($recipe['preparing'] as $e) {
say($e,2);
//registerError('my_debug', urlencode($e));
}
}
function getRecipes($recipeLink) {
if (empty($recipeLink)) {
return FALSE;
}
$html = @file_get_contents($recipeLink);
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$ingredients = array();
$description = array();
$ingredientsDom = $xpath->query('//table[@class="rec-ingred-table"]/tr');
if ($ingredientsDom->length > 0) {
foreach ($ingredientsDom as $item) {
$ingredients[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
$descriptionDom = $xpath->query('//div[@class="b-page_block__outside"]/p');
foreach ($descriptionDom as $item) {
$description[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
} else {
$ingredientsDom = $xpath->query('//div[@class="b-page_block__outside"]/p');
foreach ($ingredientsDom as $item) {
$ingredients[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
}
$preparingDom = $xpath->query('//div[@class="b-list__clause__text"]/p');
$preparing = array();
foreach ($preparingDom as $item) {
$preparing[] = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
}
$recipe = array(
'description' => $description,
'ingredients' => $ingredients,
'preparing' => $preparing
);
return $recipe;
}
function findRecipes($queryString, $params) {
if (empty($queryString)) {
return FALSE;
}
$url = 'http://www.edimdoma.ru/search?utf8=%E2%9C%93&asset=recipes&index=title_search&query=' . urlencode($queryString) . '&search%5Bmain_category_id%5D=&search%5Bcuisine_id%5D=';
if (!empty($params)) {
foreach ($params as &$value) {
$url .= '&cooking_method_ids%5B%5D=' . $value;
}
}
$url .= '&user_name=';
$html = @file_get_contents($url);
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$articles = $xpath->query('//div[@class="b-page_block__header"]');
$links = array();
foreach ($articles as $container) {
$arr = $container->getElementsByTagName("a");
foreach ($arr as $item) {
if ($item->parentNode->tagName == "h2") {
$href = $item->getAttribute("href");
$text = trim(preg_replace("/[\r\n]+/", " ", $item->nodeValue));
$links[] = array(
'link' => $href,
'text' => $text
);
}
}
}
return $links;
}
|
Когда я
|
скажу (.+?) (.+)
Код
$new_pattern=array();
$new_pattern['ONETIME']=1; // флаг того, что шаблон будет одноразовый
$new_pattern['SKIPSYSTEM']=1; // флаг того, что шаблон не будет реагировать на системные уведомления, только пользовательские
$new_pattern['SCRIPT']='say("'.$matches[2].'",0,'.$from_user_id.');'; // код реакции нашего шаблона
addPattern($matches[1],$new_pattern,1); // добавляем описанный шаблон
say("Добавлена реакция на слово \"".$matches[1]."\"",2); // подтверждаем то, что реакция добавлена
|
|
команда "да" вне контекста
Код
say("Чем я могу помочь?",20);
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
|
Найди
Код
say('Что именно найти?',10);
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
|
поиск десяти песен (песни+)
Код
say("Секундочку",10);
runScript("VkMusic", array('VALUE'=>$matches[1], 'MODE'=>2, 'COUNT'=>'10'));
|
поиск одной песни (песню+)
Код
say("Секундочку",10);
runScript("VkMusic", array('VALUE'=>$matches[1], 'MODE'=>1));
|
|
Напомни
Шаблон: (Н|н)апомни через (\d+) минут(|у|ы) (.+)
Код
$rnumber = 1;
while (1) {
$rname = "Reminder_$rnumber";
if (!timeOutExists($rname)) break;
$rnumber++;
}
setTimeOut($rname,'say("Напоминаю: '.$matches[4].'");',$matches[2]*60);
say("Принято напоминание - напомнить через $matches[2] минут: $matches[4]");
say("Постараюсь не забыть!");
|
Общий контекст
|
время
Шаблон: (сколько время|который час|скажи время)
Код
say('Время: сейчас '.timeNow(),10);
|
говори
Шаблон: (говори)|(проснись)
Код
global $voicemode;
$voicemode='on';
setGlobal('minMsgLevel',0);
say('Хорошо.',10);
|
забудь
Шаблон: (^забудь$)|(^отменить$)|(^отмена$)|(^хватит$)|(^ничем$)
Код
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
say('Контекст забыт.',10);
|
кто ты
Шаблон: (кто ты)|(ты кто)|(как тебя зовут)
Код
say(getRandomLine('whoareyou'),10);
|
помощь
Код
$actions=$this->getAvailableActions();
$total=count($actions);
for($i=0;$i<$total;$i++) {
say($actions[$i],-1);
}
|
привет
Код
say(getRandomLine('hello'),10);
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
|
|
Повтори
Шаблон: (повтори|скажи) (.+)
Код
|
Статус системы
Шаблон: (С|с)татус системы
Код
runScript('reportStatus');
|
Хотите я включу музыку?
Код
say("Желаете включить музыку?",10);
setTimeOut("answer_","runScript('AutoRemoteMessage');",3);
|
да
Код
say("Здорово!",10);
runScript('playFavoriteMusic');
|
нет
Код
|
|
что такое
Шаблон: include_once(DIR_MODULES.'patterns/patterns.class.php');
$pt=new patterns();
if ($pt->checkExtPatterns(0)) {
$safe_execs = SQLSelectOne("SELECT ID FROM safe_execs WHERE 1 LIMIT 1");
while($safe_execs['ID']) {
sleep(10);
$safe_execs = SQLSelectOne("SELECT ID FROM safe_execs WHERE 1 LIMIT 1");
}
rs('DemoSay','Good question!');
}
runScript('Demo07');
|