[Модуль] API.AI (apiai)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
Ron
Сообщения: 480
Зарегистрирован: Пт окт 27, 2017 6:44 pm
Благодарил (а): 144 раза
Поблагодарили: 70 раз

Re: Модуль API.AI

Сообщение Ron » Сб авг 18, 2018 9:57 pm

О! Прокатило!
K070HY
Сообщения: 27
Зарегистрирован: Ср янв 10, 2018 3:24 pm
Благодарил (а): 15 раз
Поблагодарили: 2 раза

Re: Модуль API.AI

Сообщение K070HY » Вс авг 19, 2018 8:27 pm

Ok! И мне помогло! Спасибо!
Только не очень хорошо, если это войдет в систему каждый месяц бота создавать.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Вс авг 19, 2018 8:33 pm

На форуме пишут, что уже и так починили. Проверить не могу, т.к. уже пересоздал агента.
diver
Сообщения: 114
Зарегистрирован: Пн мар 27, 2017 8:01 pm
Благодарил (а): 7 раз
Поблагодарили: 1 раз

Re: Модуль API.AI

Сообщение diver » Ср авг 22, 2018 1:48 pm

Всем привет!
Мне очень стыдно задавать этот вопрос, но видимо сам не пойму... :(
Как скармливать внешние диалоги данному модулю? Через Test Query всё работает, через консольку команд тоже, но куда пихать фразы от того же google home. Google home через IFTTT передает фразу, как параметр для скрипта. Т.е. на входе у меня есть скрипт с переменной, в которой содержится текст. Куда можно передать значение данной переменной, что бы запустилась обработка через сабж ?
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Ср авг 22, 2018 2:21 pm

diver писал(а):
Ср авг 22, 2018 1:48 pm
Всем привет!
Мне очень стыдно задавать этот вопрос, но видимо сам не пойму... :(
Как скармливать внешние диалоги данному модулю? Через Test Query всё работает, через консольку команд тоже, но куда пихать фразы от того же google home. Google home через IFTTT передает фразу, как параметр для скрипта. Т.е. на входе у меня есть скрипт с переменной, в которой содержится текст. Куда можно передать значение данной переменной, что бы запустилась обработка через сабж ?

Код: Выделить всё

say('привет', 0, 5, 'terminal13')
здесь 5 - ID юзера
13 - ID терминала
За это сообщение автора olehs поблагодарил:
diver (Ср авг 22, 2018 2:34 pm)
Рейтинг: 1.16%
diver
Сообщения: 114
Зарегистрирован: Пн мар 27, 2017 8:01 pm
Благодарил (а): 7 раз
Поблагодарили: 1 раз

Re: Модуль API.AI

Сообщение diver » Ср авг 22, 2018 2:33 pm

olehs писал(а):
Ср авг 22, 2018 2:21 pm

Код: Выделить всё

say('привет', 0, 5, 'terminal13')
здесь 5 - ID юзера
13 - ID терминала
Блин... пробовал просто say("привет",2) - не работает. Спасибо!!!!
Аватара пользователя
Kvantos
Сообщения: 295
Зарегистрирован: Вт окт 31, 2017 1:05 pm
Благодарил (а): 26 раз
Поблагодарили: 49 раз

Re: Модуль API.AI

Сообщение Kvantos » Пн сен 17, 2018 6:01 pm

По поводу описания: https://majordomo.smartliving.ru/Main/ModuleApiai
The page "Main/ModuleApiai" doesn't exist.

Подскажите плс. где сейчас обитает
MDM живет на 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Модуль API.AI

Сообщение skysilver » Вт сен 18, 2018 2:06 pm

Kvantos писал(а):
Пн сен 17, 2018 6:01 pm
По поводу описания: https://majordomo.smartliving.ru/Main/ModuleApiai
The page "Main/ModuleApiai" doesn't exist.
Подскажите плс. где сейчас обитает
https://kb.smartliving.ru/category/modu ... piai_help/
За это сообщение автора skysilver поблагодарил:
Kvantos (Вт сен 18, 2018 2:09 pm)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
K070HY
Сообщения: 27
Зарегистрирован: Ср янв 10, 2018 3:24 pm
Благодарил (а): 15 раз
Поблагодарили: 2 раза

Re: [Модуль] API.AI (apiai)

Сообщение K070HY » Пн ноя 12, 2018 10:23 pm

Господа, добрый вечер! А у всех после последнего обновления из альфы, алиса не произносит default response модуля api.ai? Или это только у меня сломалось. Хотя из Test Query отрабатывает верно и даже произносит фразу, а вот если просишь голосом, то тишина. Причём команды отрабатывает верно, а вот голосового сопровождения нет.

PS. Анализируя ситуацию понял, что после последнего обновления, перестала работать команда sayReply в формате sayReply('текст', уровень сообщения). Как починить?
За это сообщение автора K070HY поблагодарил:
Gelezako (Пн дек 10, 2018 12:26 pm)
Рейтинг: 1.16%
Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Re: Модуль API.AI

Сообщение Yashalta » Пн дек 10, 2018 12:11 pm

fandaymon писал(а):
Ср фев 14, 2018 3:53 am
Gelezako писал(а):
fandaymon писал(а): Ну и совершенно зря... Для некоторых применений API.AI очень удобен. Например, я с его помощью реализовал добавление голосом в гугл календарь разных мероприятий

Говоришь, например Добавь напоминание в среду в 17:00 встреча или Добавь напоминание Завтра День рождения или Добавь напоминание на 30 марта в десять Отправить показания, а модуль возвращает тебе дату,время и текст напоминания, остаётся только добавить в календарь. Да, конечно, всё это можно сделать и шаблонами, но придётся помучиться...
делись кодом )
Скачал на https://github.com/google/google-api-php-client файл, распаковал его в директорию Google в корне веб-сервера. В lib не стал помещать, так как там старая гугловская библиотека от модуля Ивана.

Далее - сделал сервисный экаунт, как написано здесь http://rtportal.ru/index.php?id=164:calendar-python-bot

Получил джейсон, сохранил его на Desktop
Зашел в настройки своего гугл-календаря и в пункте Доступ для отдельных пользователей, дал разрешение на редактирование имейлу, который присваивается сервисному экаунту (Без этого пункта сервисный экаунт не хотел видеть мой календарь)

На apia.ai сделал intent Add_Event, который возвращает Event_Date @sys.date, Event_Desc @sys.any и Event_Time@sys.time. Потренировал на нескольких фразах, так чтобы бралась обязательная дата, необязательное время, а всё что после - в само напоминание
Ну и сделал в модуле api.ai для Add_Event такой скриптик
СпойлерПоказать

Код: Выделить всё

// $params['Event_Date']
// $params['Event_Desc'] 
// $params['Event_Time']
require_once './Google/vendor/autoload.php';

putenv('GOOGLE_APPLICATION_CREDENTIALS=/home/pi/Desktop/sarah-home-calendar.json');
$client = new Google_Client();

$event_desc=$params['Event_Desc'];

$client->useApplicationDefaultCredentials();
$client->setApplicationName(‘TestCalendarAPI’);
$client->setScopes('https://www.googleapis.com/auth/calendar');
$service = new Google_Service_Calendar($client);

$calendarId = 'mail@gmail.com';  // Тут надо поставить свой адрес 

if ($params['Event_Time']=='') {
$event = new Google_Service_Calendar_Event(array(
  'summary' => $event_desc,
  'location' => '',
  'description' => '',
  'start' => array(
    'date' => $params['Event_Date'],
    'timeZone' => 'Europe/Riga',
  ),
  'end' => array(
    'date' => $params['Event_Date'],
    'timeZone' => 'Europe/Riga',
  ),
  'attendees' => array(
    array('email' => 'mail@gmail.com'),
  ),
  'reminders' => array(
    'useDefault' => FALSE,
    'overrides' => array(
      array('method' => 'email', 'minutes' => 24 * 60),
      array('method' => 'popup', 'minutes' => 10),
    ),
  ),
));
}
else {
$event = new Google_Service_Calendar_Event(array(
  'summary' => $event_desc,
  'location' => '',
  'description' => '',
  'start' => array(
    'dateTime' => $params['Event_Date'] . 'T' . $params['Event_Time'],
    'timeZone' => 'Europe/Riga',
  ),
  'end' => array(
    'dateTime' => $params['Event_Date'] . 'T' . $params['Event_Time'],
    'timeZone' => 'Europe/Riga',
  ),
  'attendees' => array(
    array('email' => 'mail@gmail.com'),
  ),
  'reminders' => array(
    'useDefault' => FALSE,
    'overrides' => array(
      array('method' => 'email', 'minutes' => 24 * 60),
      array('method' => 'popup', 'minutes' => 10),
    ),
  ),
));
}
$event = $service->events->insert($calendarId, $event);
Как-то так...

Проверка о мероприятиях на сегодня примерно так
СпойлерПоказать

Код: Выделить всё

require_once './Google/vendor/autoload.php';

putenv('GOOGLE_APPLICATION_CREDENTIALS=/home/pi/Desktop/sarah-home-calendar.json');
$client = new Google_Client();

$client->useApplicationDefaultCredentials();
$client->setApplicationName(‘TestCalendarAPI’);
$client->setScopes('https://www.googleapis.com/auth/calendar');
$service = new Google_Service_Calendar($client);

$calendarId = 'lv.latvian#holiday@group.v.calendar.google.com';
$optParams = array(
  'maxResults' => 10,
  'orderBy' => 'startTime',
  'singleEvents' => TRUE,
  'timeMin' => date('c'),
  'timeMax' => date('Y-m-d',strtotime('tomorrow')) .'T00:00:00+02:00',
);
$results = $service->events->listEvents($calendarId, $optParams);

$today_events='';
 
if (count($results->getItems()) == 0) {
} else {
  foreach ($results->getItems() as $event) {
    $start = $event->start->dateTime;
    if (empty($start)) {
     $start='';
    }
   else {
    $start=date_format(date_create($start),'H:i');
   } 
   $today_events.=$start . ' ' . holidaysru($event->getSummary()) . '. ';
  }
} 
 
$calendarId = 'mail@gmail.com';
$optParams = array(
  'maxResults' => 10,
  'orderBy' => 'startTime',
  'singleEvents' => TRUE,
  'timeMin' => date('c'),
  'timeMax' => date('Y-m-d',strtotime('tomorrow')) .'T00:00:00+02:00',
);
$results = $service->events->listEvents($calendarId, $optParams);
 
if (count($results->getItems()) == 0) {
} else {
  foreach ($results->getItems() as $event) {
    $start = $event->start->dateTime;
    if (empty($start)) {
     $start='';
    }
   else {
    $start=date_format(date_create($start),'H:i');
   } 
   $today_events.=$start . ' ' . $event->getSummary() . '. ';
  }
}
 
if ($today_events<>'') {
 $hello.='Сегодня: ' . $today_events;
}
Сначала проверяются праздники, потом то что запланировано в гугл-календаре. За качество кода не отвечаю, так как на PHP до Мажордомо не писал, но вроде работает
А сайт http://apia.ai/ открывается? или там другая должна быть ссылка? Я пытаюсь проделать все шаги, что описаны выше и дошел до места На apia.ai сделал intent Add_Event, который возвращает Event_Dateгде нужно ... но, сайт не открывается!!!
Ответить