просто удобный, как мне кажется, сценарий который передает сообщения пользователю
тремя возможными путями (при чем кому передать можно просто указать именем пользователя или его прозвищем):
1) Через SMS - используется специальный адрес e-mail(в моем случае МЕГАФОН) привязанный к номеру
2) Просто письмо на электронную почту
3) Выдача сообщения непосредственно на экран iPhone или iPad (используется доп.библиотека: http://majordomo.smartliving.ru/forum/v ... one#p16175)
Вызов скрипта:
Код: Выделить всё
runScript('send_mes', array('to'=>$to,'subj'=>$subj,'msg'=>$msg,'what'=>$what));
$to - это переменная со значением "Кому отправить" (при этом можно указать как ИМЯ или прозвище, так и адрес эл.почты)
$subj - тема сообщения (не обязательно)
$msg - сам текст сообщения
$what - что передать (чем), возможные значения: SMS, Email, iPhone
Необходимые условия:
Используются объекты из класса "Users"
задействованные (необходимые) свойства для объектов:
"altName" - альтернативные имена (корни имен) через запятую, возможно и в дательном падеже
"fullName" - имя пользователя (основное имя)
"AppleID" - AppleID пользователя в iCloud
"AppleDevNum" - номер устройства Apple соответствующего например iPhone (если имеем несколько устройств Apple)
"ApplePass" - пароль к AppleID пользователя в iCloud. У меня храниться в закодированном виде: http://habrahabr.ru/post/61309/ файл с функцией добавлен в библиотеку на сервер (каталог lib)
"Email" - основной адрес электронной почты пользователя
"gender" - пол пользователя одной буквой
"sms2email" - адрес электронной почты для отправки SMS
Вот сценарий "send_mes" с комментариями:
Код: Выделить всё
/*
* Сценарий 'send_mes' для MajorDoMo
* автор: Владимир Попов, на форуме - Vovix
* дата последнего изменения: 30.09.2015
* runScript('send_mes', array('to'=>$хххх,'subj'=>$yyyy,'msg'=>$zzzz,'what'=>$qqqq))
*/
// кому отправить, просто имя или адрес e-mail включающий знак "@" (при пустом = "admin")
$user_to=($params['to']=='') ? "admin" : $params['to'];
// тема сообщения (при пустом = "Alice! Smart Home system")
$subject=($params['subj']=='') ? "Alice! Smart Home system" : $params['subj'];
// текст сообщения (при пустом = "проверка связи")
$msg=($params['msg']=='') ? "проверка связи" : $params['msg'];
// что будем отправлять (через что): SMS, Email, iPhone
$what=($params['what']=='') ? "iPhone" : $params['what'];
// константы для e-mail отправок
$from = "admin@mdm.vovix";
$sms2email='';
// присваеваем первоначальные НЕИЗВЕСТНЫЕ значения, на всякий случай
$fullName='unknown';
$user='unknown';
$gender='unknown';
// вариант №1
// проверим встречается ли символ '@' в кому отправить, т.е. указан ли конкретный e-mail??
// если не встретилось или это первый символ, то будем определять среди своих пользователей
// $podstr1=strpos($user_to, '@');
// if (($podstr1===false)||($podstr1=='0')) {
// вариант №2
// проверим НЕ указан ли именно e-mail
if (!preg_match("/^[a-zA-Z0-9\-\._]+@[-a-zA-Z0-9\-]+\.[-a-zA-Z0-9\-\.]+$/i", $user_to)) {
// определяем массив значений альтернативных имен
$altNameArray=array();
// переберем всех пользователей
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
// проверим, может это главное имя и перебирать альтернативы тогда не надо?
if (gg($obj['TITLE'].".fullName")==$user_to) {
$fullName=gg($obj['TITLE'].'.fullName');
$sms2email=gg($obj['TITLE'].'.sms2email');
$user=$obj['TITLE'];
} else {
// присвоим
$altName=gg($obj['TITLE'].".altName");
// имена разделены запятой
$altNameArray = explode(",",$altName);
$len=count($altNameArray);
// в цикле проверяем вхождение альтернативных имён
for($j=0;$j<$len;$j++) {
$podstr2=strpos($user_to, $altNameArray[$j]);
if ($podstr2===false) {
// тут нет таких
} else {
// вот нашли
$fullName=gg($obj['TITLE'].'.fullName');
$sms2email=gg($obj['TITLE'].'.sms2email');
$user=$obj['TITLE'];
}
}
}
}
}
// проверим ЧТО будем отправлять
switch ($what):
// SMS
case 'SMS':
case 'sms':
case 'СМС':
case 'смс':
if ($user<>'unknown') {
say ("Отправляю SMS сообщение. Кому: ".$user_to.". Текст сообщения: ".$msg.". Получатель мне известен как: ".$fullName,1);
$message = iconv("UTF-8", "WINDOWS-1251", $msg);
$subject = iconv("UTF-8", "WINDOWS-1251", $subject);
SendMail($from, $sms2email, $subject, $message);
} else if (!($podstr1===false)||!($podstr1=='0')) {
say ("Я попытаюсь отправить SMS сообщение посредством e-mail. Кому: ".$user_to.". Текст сообщения: ".$msg.". Но с получателем я видимо не знакома и не уверена в представленном вами e-mail адресе.",1);
$message = iconv("UTF-8", "WINDOWS-1251", $msg);
$subject = iconv("UTF-8", "WINDOWS-1251", $subject);
SendMail($from, $user_to, $subject, $message);
} else {
say ("Увы, отправить СМС не получиться, такого адреса: ".$user_to." я ,видимо, не знаю.",1);
}
break;
// Email
case 'Email':
case 'E-mail':
case 'еmail':
case 'e-mail':
case 'письмо':
if (($user<>'unknown')&&(gg($user.'.Email')<>'')) {
say ("Отправляю e-mail. Кому: ".$user_to.". Текст письма: ".$msg.". Получатель мне известен как: ".$fullName,1);
$message = iconv("UTF-8", "WINDOWS-1251", $msg);
$subject = iconv("UTF-8", "WINDOWS-1251", $subject);
SendMail($from, gg($user.'.Email'), $subject, $message);
} else if (($user<>'unknown')&&(gg($user.'.Email')=='')) {
$fullName=gg($user.'.fullName');
$gender=gg($user.'.gender');
$ending1=($gender<>'ж') ? 'ен' : 'на';
$pronoun1=($gender<>'ж') ? 'его' : 'её';
say ("Пользователь ".$fullName." мне извест".$ending1.", но у меня нет данных о ".$pronoun1." электронном адресе.",1);
} else {
say ("Я попытаюсь отправляю e-mail на адрес: ".$user_to.". Текст письма: ".$msg.". Но с получателем я видимо не знакома и не уверена в представленом вами e-mail адресе.",1);
$message = iconv("UTF-8", "WINDOWS-1251", $msg);
$subject = iconv("UTF-8", "WINDOWS-1251", $subject);
SendMail($from, $user_to, $subject, $message);
}
break;
// iPhone
case 'iPhone':
case 'Iphone':
case 'IPhone':
case 'iphone':
case 'телефон':
if (($user<>'unknown')&&(gg($user.'.AppleID')<>'')) {
$fullName=gg($user.'.fullName');
$AppleID=gg($user.'.AppleID');
$ApplePass=dsCrypt(gg($user.'.ApplePass'),true);
$gender=gg($user.'.gender');
$AppleDevNum=(gg($user.'.AppleDevNum')=='') ? 0 : gg($user.'.AppleDevNum');
// особенность наше сообщение передадим как тему, так лучше на экране выглядит
$subject=$msg;
soundToMyiPhone($AppleID, $ApplePass, $subject, $AppleDevNum);
say ("На iPhone, пользователя: ".$fullName.", отправлен сигнал и текст на экран.",1);
} else if (($user<>'unknown')&&(gg($user.'.AppleID')=='')) {
$fullName=gg($user.'.fullName');
$gender=gg($user.'.gender');
$ending1=($gender<>'ж') ? 'ен' : 'на';
$pronoun1=($gender<>'ж') ? 'его' : 'её';
say ("Пользователь ".$fullName." мне извест".$ending1.", но у меня нет данных о ".$pronoun1." Ай Фон Ай Ди.",1);
} else {
say ("Не понятно на чей Ай Фон нужно отправить сигнал. Видимо я ".$user_to." пока не знаю!",1);
}
break;
// не понятно что
default:
say ("Тут какая-то ошибка с каналом отправки сообщения. ".$what." - такой вариант отправки мне не известен.",1);
endswitch;