Как я поступил:
в классе объектов пользователей, у меня это класс Users , создаем свойство gender
и будем при вводе данных пользователей ставить в нем "м" или "ж", при чем примем априорно, что если свойство пустое - то оно приравнено к "м"
теперь на примере как это использовать, пример, кстати, это шаблон действий на команду "найди телефон пользователя":
(внимание, пример использует доп. функцию для MDM под iPhone от сюда - soundToMyiPhone)
Шаблон поведения:
Код: Выделить всё
(най(ти|ди))(.*)((телефон)|(iphone))(\s*)(.*)
Код: Выделить всё
$userSay=$matches[8];
$fullName='unknown';
//$sms2email='unknown';
$user='unknown';
$gender='unknown';
$altNameArray=array();
$objects=getObjectsByClass("Users");
// переберем всех пользователей
foreach($objects as $obj) {
// присвоим
$altName=gg($obj['TITLE'].".altName");
// имена разделены запятой
$altNameArray = explode(",",$altName);
$len=count($altNameArray);
// в цикле проверяем вхождение альтернативных имён
for($j=0;$j<$len;$j++) {
//say($altNameArray[$j]);
$podstr=strpos($userSay, $altNameArray[$j]);
if ($podstr===false) {
} else {
$fullName=gg($obj['TITLE'].'.fullName');
//$sms2email=gg($obj['TITLE'].'.sms2email');
$user=$obj['TITLE'];
}
}
}
if (($user<>'unknown')&&(gg($user.'.AppleID')<>'')) {
$fullName=gg($user.'.fullName');
$AppleID=gg($user.'.AppleID');
$ApplePass=gg($user.'.ApplePass');
$gender=gg($user.'.gender');
$subject="Это Алиса! Я Нашла!";
$id=0;
say (getRandomLine('ok'),1);
soundToMyiPhone($AppleID, $ApplePass, $subject, $id);
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);
say ("Информация: Поиск, также, возможен только для iPhone",-1);
} else {
say ("Не понятно чей iPhone нужно найти. Видимо я ".$userSay." пока не знаю!",1);
}
вот это:
$gender=gg($user.'.gender');
$ending1=($gender<>'ж') ? 'ен' : 'на';
$pronoun1=($gender<>'ж') ? 'его' : 'её';
на основе пола пользователя определяет окончания и местоимения.
а это:
say ("Пользователь ".$fullName." мне извест".$ending1.", но нет данных о ".$pronoun1." телефоне.",1);
позволяет Алисе правильно выражаться по русски!
идею можно развить.
кстати приведенный пример поиска телефона, мне тоже показался очень удобным т.к. сообщения и звук переданные через iCloud выдается на iPhone даже если громкость выключена или минимальна, iPhone "пиликает" на "полную катушку" и его можно быстро найти если затерялся!!!
а.. да еще я добавил пользователям свойство - altName
и в него заношу через запятую имена, прозвища целиком или их части - корни имен,
это позволяет мне при постановке вопроса(задачи) Алисе сказать например: "найди телефон вовикса" или про жену "найди телефон любимой" и Алиса сама разберется кто, вернее чей телефон, нам нужен!
сильно не бейте я не программист - так любитель со словарем...