Баланс МТС
Шаблон: Баланс (МТС|Водафон)
Код
// sayReply ('Отправляю запрос на проверку счета МТС',1);
$params = array (
"command" => "Command",
"option" => "dongle ussd dongle0 *110*10#",
);
$response = callMethod ('Asterisk.Action',$params);
/*
if ($response['Response'] != 'Success')
{
sayReply ('Не удалось отправить запрос',1);
} else
{
sayReply ("Запрос отправлен",1);
}
*/
|
Включи
Код
sayReply ("Что именно включить?",2);
|
Включи камеру
Шаблон: (К|к)амеру|(В|в)ключи камеру
Код
sayReply ("Какую камеру включить?",2);
|
Включи камеру в коридоре
Шаблон: (В|в)включ(и|ить) камеру в коридоре|(К|к)амеру в коридоре|(В|в) коридоре
Код
if (gg("CamCorridor.enabled")==1) {
sayReply ("Камера в коридоре уже включена",2);
}
else {
sayReply ("Включаю камеру в коридоре",2);
sg("CamCorridor.enabled",1);
runScript('CommandCam', array('cam'=>'4','function'=>'modect','enabled'=>'1'));
};
|
Включи камеру во дворе
Шаблон: (В|в)включ(и|ить) камеру во дворе|(К|к)амеру во дворе|(В|в)о дворе
Код
if (gg("CamOutdoor2.enabled")==1) {
sayReply ("Камера во дворе уже включена",2);
}
else {
sayReply ("Включаю камеру во дворе",2);
sg("CamOutdoor2.enabled",1);
};
|
Включи камеру на заднем дворе
Шаблон: (В|в)включ(и|ить) камеру на заднем дворе|(К|к)амеру на заднем дворе|(Н|н)а заднем дворе
Код
if (gg("CamOutdoor3.enabled")==1) {
sayReply ("Камера на заднем дворе уже включена",2);
}
else {
sayReply ("Включаю камеру на заднем дворе",2);
sg("CamOutdoor3.enabled",1);
};
|
Включи камеру на крыльце
Шаблон: (В|в)включ(и|ить) камеру на крыльце|(К|к)амеру на крыльце|(Н|н)а крыльце
Код
if (gg("CamOutdoor1.enabled")==1) {
sayReply ("Камера на крыльце уже включена",2);
}
else {
sayReply ("Включаю камеру на крыльце",2);
sg("CamOutdoor1.enabled",1);
};
|
|
Включи режим
Шаблон: Режим|Включи режим
Код
sayReply ("Какой режим включить?",2);
|
Включи режим охраны
Шаблон: (В|в)ключи режим охраны|(Р|р)ежим охраны|(О|о)храны|(В|в)ключи режим безопасность|(Р|р)ежим безопасность|(Б|б)езопасность
Код
if (gg("SecurityArmedMode.active")==1) {
sayReply ("Режим охраны уже включен",2);
}
else {
sayReply ("Включаю режим охраны",2);
callMethod("SecurityArmedMode.activate");
};
|
Включи режим пуш-уведомлений
Шаблон: (В|в)ключи режим уведомлений|(Р|р)ежим уведомлений|(У|у)ведомлений
Код
if (gg("ThisComputer.minPushLevel")<=5) {
sayReply ("Режим уведомлений уже включен",2);
}
else {
sayReply ("Включаю режим уведомлений",2);
sg("ThisComputer.minPushLevel", 2);
};
|
Включи режим тишины
Шаблон: (В|в)ключ(и|ить) режим тишины|(В|в)ключ(и|ить) режим не беспокоить|(Р|р)ежим не беспокоить|(Н|н)е беспокоить|(Р|р)ежим тишин(а|ы)|(Т|т)ишин(а|ы)
Код
if (gg("QuietMode.active")==1) {
sayReply ("Режим тишины уже включен",2);
}
else {
sayReply ("Включаю режим тишины",2);
callMethod("QuietMode.activate");
};
|
Включи режим экономии
Шаблон: (В|в)включи режим экономии|(Р|р)ежим экнономии|(Э|э)кономии
Код
if (gg("EconomMode.active")==1) {
sayReply ("Режим экономии уже включен",2);
}
else {
sayReply ("Включаю режим экономии",2);
callMethod("EconomMode.activate");
};
|
|
|
Выключи
Шаблон: (В|в)ыключ(и|ить)|(О|о)тключ(и|ить)
Код
sayReply("Что именно выключить?",2);
|
Выключи камеру
Шаблон: Камеру|Выключи камеру
Код
sayReply ("Какую камеру выключить?",2);
|
Выключи камеру в коридоре
Шаблон: (В|в)ывключ(и|ить) камеру в коридоре|(К|к)амеру в коридоре|(В|в) коридоре
Код
if (gg("CamCorridor.enabled")==0) {
sayReply ("Камера в коридоре уже выключена",2);
}
else {
sayReply ("Выключаю камеру в коридоре",2);
sg("CamCorridor.enabled",0);
};
|
Выключи камеру во дворе
Шаблон: (В|в)ывключ(и|ить) камеру во дворе|(К|к)амеру во дворе|(В|в)о дворе
Код
if (gg("CamOutdoor2.enabled")==0) {
sayReply ("Камера во дворе уже выключена",2);
}
else {
sayReply ("Выключаю камеру во дворе",2);
sg("CamOutdoor2.enabled",0);
};
|
Выключи камеру на заднем дворе
Шаблон: (В|в)ывключ(и|ить) камеру на заднем дворе|(К|к)амеру на заднем дворе|(Н|н)а заднем дворе
Код
if (gg("CamOutdoor3.enabled")==0) {
sayReply ("Камера на заднем дворе уже выключена",2);
}
else {
sayReply ("Выключаю камеру на заднем дворе",2);
sg("CamOutdoor3.enabled",0);
};
|
Выключи камеру на крыльце
Шаблон: (В|в)ывключ(и|ить) камеру на крыльце|(К|к)амеру на крыльце|(Н|н)а крыльце
Код
if (gg("CamOutdoor1.enabled")==0) {
sayReply ("Камера на крыльце уже выключена",2);
}
else {
sayReply ("Выключаю камеру на крыльце",2);
sg("CamOutdoor1.enabled",0);
};
|
|
Выключи режим
Шаблон: (В|в)ыключи режим|(Р|р)ежим
Код
sayReply ("Какой режим выключить?",2);
|
Выключи режим охраны
Шаблон: (В|в)ыключи режим охраны|(Р|р)ежим охраны|(О|о)охраны|(В|в)ыключи режим безопасность|(Р|р)ежим безопасность|(Б|б)безопасность
Код
if (gg("SecurityArmedMode.active")==0) {
sayReply ("Режим охраны уже выключен",2);
}
else {
sayReply ("Выключаю режим охраны",2);
callMethod("SecurityArmedMode.deactivate");
};
|
Выключи режим пуш-уведомлений
Шаблон: (В|в)ыключи режим уведомлений|(Р|р)ежим уведомлений|(У|у)ведомлений
Код
if (gg("ThisComputer.minPushLevel")>=5) {
sayReply ("Режим уведомлений уже выключен",2);
}
else {
sayReply ("Выключаю режим уведомлений",2);
sg("ThisComputer.minPushLevel", 200);
};
|
Выключи режим тишины
Шаблон: (В|в)ыключ(и|ить) режим тишины|(В|в)ыключ(и|ить) режим не беспокоить|(Р|р)ежим не беспокоить|(Н|н)е беспокоить|(Р|р)ежим тишин(а|ы)|(Т|т)ишин(а|ы)
Код
if (gg("QuietMode.active")==0) {
sayReply ("Режим тишины уже выключен",2);
}
else {
sayReply ("Выключаю режим тишины",2);
callMethod("QuietMode.deactivate");
};
|
Выключи режим экономии
Шаблон: (В|в)ыключи режим экономии|(Р|р)ежим экономии|(Э|э)кономии
Код
if (gg("EconomMode.active")==0) {
sayReply ("Режим экономии уже выключен",2);
}
else {
sayReply ("Выключаю режим экономии",2);
callMethod("EconomMode.deactivate");
};
|
|
|
Закрой
Код
sayReply ("Что именно закрыть?",2);
|
Закрой ворота
Шаблон: Закр(ой|ыть) ворота|(В|в)орота
Код
if (gg("Relay03.status")==0) {
sayReply ("Ворота уже закрыты",2);
}
else {
sayReply ("Закрываю ворота",2);
CallMethod ("Relay03.switch");
};
|
|
Который час
Шаблон: который час|сколько времени
Код
sayReply ("Точное время ".timeNow().".", 2,'который час');
|
Кулинария
Шаблон: (Д|д)авай приготовим (.+)
Код
$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 {
sayReply('Ничего не найдено.');
}
function OpenRecipeURL($link) {
$rec=array();
$rec['EVENT_TYPE']='openurl'; // команда может быть ещё newwindow
$rec['WINDOW']='alice';
$rec['TERMINAL_TO']='*'; //здесь можно конкретный терминал указать
$rec['ADDED']=date('Y-m-d H:i:s');
$rec['EXPIRE']=date('Y-m-d H:i:s', time()+10);
$rec['DETAILS']=$link;
$rec['ID']=SQLInsert('events', $rec);
}
function sayRecipe($recipe) {
OpenRecipeURL($recipe['link']);
sayReply ($recipe['name']);
if (!empty($recipe['description'])) {
foreach ($recipe['description'] as $e) {
sayReply ($e);
}
}
$ingrstr = 'Нам понадобится: ';
foreach ($recipe['ingredients'] as $e) {
$ingrstr .= $e . ', ';
}
sayReply ($ingrstr);
sayReply('Способ приготовления:');
foreach ($recipe['preparing'] as $e) {
sayReply ($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;
}
|
Напомни
Шаблон: (Н|н)апомни через (\d+) минут (.+)
Код
//Тестовое
$rnumber = gg("ThisComputer.Reminders_count") + 1;
$rname = "Reminder_$rnumber";
setTimeOut($rname,'say("Напоминаю: '.$matches[4].'",2);sg("ThisComputer.Reminders_count", (gg("ThisComputer.Reminders_count") - 1));',$matches[2]*60);
sg("ThisComputer.Reminders_count", $rnumber);
sayReply ("Принято напоминание - через $matches[2] минут напомнить: $matches[4]",2,'напомни');
|
Общий контекст
|
Забудь
Шаблон: Забудь|Отмен(и|а)|Отставь|Стоп
Код
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
sayReply ('Хорошо',2);
|
Помощь
Шаблон: (П|п)омощь|(П|п)одска(жи|зка)
Код
$actions=$this->getAvailableActions();
$total=count($actions);
for($i=0;$i<$total;$i++) {
sayReply ($actions[$i],2);
}
|
|
Опусти
Код
sayReply('Что именно нужно опускать?',2);
|
Опусти влажность
Шаблон: (О|о)пусти влажность|(В|в)лажность
|
Опусти температуру
Шаблон: (О|о)пусти температуру|(Т|т)емпературу
|
|
Открой
Код
sayReply ("Что именно открыть?",2);
|
Открой ворота
Шаблон: Откр(ой|ыть) ворота|(В|в)орота
Код
if (gg("Relay03.status")==1) {
sayReply ("Ворота уже открыты",2);
}
else {
sayReply ("Открываю ворота",2);
CallMethod ("Relay03.switch");
};
|
|
Подними
Код
sayReply('Что именно нужно поднять?',2);
|
Подними влажность
Шаблон: (П|п)одними влажность|(В|в)лажность
|
Подними температуру
Шаблон: (П|п)одними температуру|(Т|т)емпературу
|
|
Состояние системы
Код
// Доложить о состоянии
$details=array();
if (getGlobal("Energy.stateColor") != "green") {
$details[]="Обнаружены проблемы в энергообеспечении";
$details[]=getGlobal("Energy.stateDetails");
};
if (getGlobal("Server.stateColor") != "green") {
$details[]="Обнаружена ошибка работы сервера";
$details[]=getGlobal("Server.stateDetails");
};
if (getGlobal("System.stateColor") != "green") {
$details[]="Обнаружена ошибка работы системы";
$details[]=getGlobal("System.stateDetails");
};
if (getGlobal("Communication.stateColor") != "green") {
$details[]="Обнаружена ошибка работы коммуникаций";
$details[]=getGlobal("Communication.stateDetails");
};
if (getGlobal("Security.stateColor") != "green") {
$details[]="Обнаружена ошибка безопасности";
$details[]=getGlobal("Security.stateDetails");
};
if (getGlobal("Users.stateColor") != "green") {
$details[]="Обнаружены проблемы у пользователей";
$details[]=getGlobal("Users.stateDetails");
};
if (!$details) {
$details[]="Все системы функционируют без ошибок";
};
sayReply (implode(". ",$details),2,'состояние системы');
|
Сохрани
Код
sayReply ('Что сохранить?',2);
|
Сохрани координаты
Шаблон: (С|с)охрани координаты|(К|к)оординаты
Код
sayReply ('Чьи координаты сохранить?',2);
|
Сохрани координаты Алены
Шаблон: (С|с)охрани координаты .+?л(ё|е)ны|(К|к)оординаты .+?л(ё|е)ны|.+?л(ё|е)ны
Код
if (time()-getGlobal('Alena.CoordinatesUpdatedTimestamp')>30*60) {
sayReply ($add_word.'Текущие координаты неизвестны',2);
} else {
sayReply ($add_word.'Сохраняю координаты Алёны',2);
$tmp=explode(',',gg('Alena.Coordinates'));
$rec=array();
$rec['TITLE']='Координаты Алёны '.date('Y-d-m H:i');
$rec['LAT']=$tmp[0];
$rec['LON']=$tmp[1];
$rec['RANGE']=500;
SQLInsert('gpslocations',$rec);
}
|
Сохрани координаты Ильи
Шаблон: (С|с)охрани координаты .+?льи|(К|к)оординаты .+?льи|.+?льи
Код
if (time()-getGlobal('Billy.CoordinatesUpdatedTimestamp')>60*60) {
sayReply ($add_word.'Текущие координаты неизвестны',2);
} else {
sayReply ($add_word.'Сохраняю координаты Ильи',2);
$tmp=explode(',',gg('Billy.Coordinates'));
$rec=array();
$rec['TITLE']='Координаты Ильи '.date('Y-d-m H:i');
$rec['LAT']=$tmp[0];
$rec['LON']=$tmp[1];
$rec['RANGE']=500;
SQLInsert('gpslocations',$rec);
}
|
Сохрани координаты Сергея
Шаблон: (С|с)охрани координаты .+?ргея|(К|к)оординаты .+?ргея|.+?ргея
Код
if (time()-getGlobal('Alien.CoordinatesUpdatedTimestamp')>30*60) {
sayReply ($add_word.'Текущие координаты неизвестны',2);
} else {
sayReply ($add_word.'Сохраняю координаты Сергея',2);
$tmp=explode(',',gg('Alien.Coordinates'));
$rec=array();
$rec['TITLE']='Координаты Сергея '.date('Y-d-m H:i');
$rec['LAT']=$tmp[0];
$rec['LON']=$tmp[1];
$rec['RANGE']=500;
SQLInsert('gpslocations',$rec);
}
|
|
|
Установи
Шаблон: (У|у)станови|(В|в)ыставь
Код
sayReply('Что именно установить?',2);
|
Установи влажность
Шаблон: ((У|у)станови|(В|в)ыставь) влажность|(В|в)лажность
Код
sayReply("Где установить влажность?",2);
|
Установи влажность в зоне
Шаблон: ((У|у)станови|(В|в)ыставь) влажность в (зоне|комнате)|(В|в)лажность в (зоне|комнате)|в (зоне|комнате)
Код
sayReply("В какой зоне установить влажность?",2);
|
Установи влажность в зоне детская
Шаблон: ((У|у)станови|(В|в)ыставь) влажность в (зоне|комнате) детская|(В|в)лажность в (зоне|комнате)|в (зоне|комнате) детская|детская
Код
sayReply("Какую установить влажность?");
|
на
Код
sayReply("Устанавливаю влажность в зоне детская на $matches[1] процентов",2);
sg("Children.ControlHumidity", $matches[1]);
|
Установи влажность в зоне детская на
Шаблон: ((У|у)станови|(В|в)ыставь) влажность в (зоне|комнате) детская на (\d+)
Код
sayReply("Устанавливаю влажность в зоне детская на $matches[8] процентов",2);
sg("Children.ControlHumidity", $matches[8]);
|
|
|
|
Установи минимальный уровень пуш-уведомлений
Шаблон: (У|у)станови (режим|уровень) уведомлений (в|на) (\d+)
Код
sayReply ("Устанавливаю минимальный уровень для уведомлений на $matches[6].",2);
sg("ThisComputer.minPushLevel", $matches[6]);
|
Установи температуру
Шаблон: ((У|у)станови|(В|в)ыставь) (Т|т)емпературу|(Т|т)емпературу
Код
sayReply("Где установить температуру?",2);
|
Установи температуру в зоне
Шаблон: ((У|у)станови|(В|в)ыставь) (Т|т)емпературу в (зоне|комнате)|(Т|т)емпературу в (зоне|комнате)|в (зоне|комнате)
Код
sayReply ("В какой зоне установить температуру?",2);
|
Установи температуру в зоне детская
Шаблон: ((У|у)станови|(В|в)ыставь) температуру в (зоне|комнате) детская|(Т|т)емпературу в (зоне|комнате)|в (зоне|комнате) детская|детская
Код
sayReply ("Какую установить температуру?",2);
|
на
Код
sayReply ("Устанавливаю температуру в зоне детская на $matches[1] градусов",2);
sg("Children.ControlTemperature", $matches[1]);
|
Установи температуру в зоне детская на
Шаблон: ((У|у)станови|(В|в)ыставь) температуру в (зоне|комнате) детская на (\d+)
Код
sayReply("Устанавливаю температуру в зоне детская на $matches[8] градусов",2);
sg("Children.ControlTemperature", $matches[8]);
|
|
|
|
|