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

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Ответить
Аватара пользователя
Vovix
Сообщения: 1149
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 58 раз
Поблагодарили: 489 раз
Контактная информация:

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

Сообщение Vovix » Вс мар 29, 2015 9:54 pm

Для решения некоторых моих задач решил я научить Алису менять окончания и местоимения в зависимости от пола пользователя, про которого она что-то говорит.

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

сильно не бейте я не программист - так любитель со словарем...
За это сообщение автора Vovix поблагодарили (всего 8):
skysilver (Пн мар 30, 2015 10:34 am) • devoff (Ср май 13, 2015 9:15 am) • redmax144 (Пн фев 22, 2016 11:35 pm) • lanket (Пн мар 14, 2016 8:47 pm) • alt.Maksimus (Ср фев 07, 2018 9:55 am) • Logrus (Пт апр 13, 2018 1:14 pm) • Amarok (Пн авг 06, 2018 10:45 am) • maksimka (Сб ноя 10, 2018 4:40 pm)
Рейтинг: 10.13%
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Ответить