Страница 1 из 1

[Сценарий] Сообщения Алисы с учетом пола (gender), прозвища и iPhone

Добавлено: Вс мар 29, 2015 9:54 pm
Vovix
Для решения некоторых моих задач решил я научить Алису менять окончания и местоимения в зависимости от пола пользователя, про которого она что-то говорит.

Как я поступил:
в классе объектов пользователей, у меня это класс 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
и в него заношу через запятую имена, прозвища целиком или их части - корни имен,
это позволяет мне при постановке вопроса(задачи) Алисе сказать например: "найди телефон вовикса" или про жену "найди телефон любимой" и Алиса сама разберется кто, вернее чей телефон, нам нужен!

сильно не бейте я не программист - так любитель со словарем...