[Модуль] API.AI (apiai)
Модератор: immortal
Re: Модуль API.AI
С русским - нет. И в ближайшее время не обещают. К тому же ключевая фраза OK Google как-то не очень подходит для общения с умным домомvitt76 писал(а):А Google assistant не работает пока?
Re: Модуль API.AI
делись кодом )fandaymon писал(а): Ну и совершенно зря... Для некоторых применений API.AI очень удобен. Например, я с его помощью реализовал добавление голосом в гугл календарь разных мероприятий
Говоришь, например Добавь напоминание в среду в 17:00 встреча или Добавь напоминание Завтра День рождения или Добавь напоминание на 30 марта в десять Отправить показания, а модуль возвращает тебе дату,время и текст напоминания, остаётся только добавить в календарь. Да, конечно, всё это можно сделать и шаблонами, но придётся помучиться...
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Re: Модуль API.AI
ребят, на счёт приоритетов, ну вот лично я уже давно отказался от шаблонов и использую только API.AI, но я понимаю что другим удобнее шаблоны. Что думаете если добавить в настройки возможность через интерфейс выставлять приоритет для шаблонов, ПУ и API.AI ?
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Re: Модуль API.AI
Скачал на https://github.com/google/google-api-php-client файл, распаковал его в директорию Google в корне веб-сервера. В lib не стал помещать, так как там старая гугловская библиотека от модуля Ивана.Gelezako писал(а):делись кодом )fandaymon писал(а): Ну и совершенно зря... Для некоторых применений API.AI очень удобен. Например, я с его помощью реализовал добавление голосом в гугл календарь разных мероприятий
Говоришь, например Добавь напоминание в среду в 17:00 встреча или Добавь напоминание Завтра День рождения или Добавь напоминание на 30 марта в десять Отправить показания, а модуль возвращает тебе дату,время и текст напоминания, остаётся только добавить в календарь. Да, конечно, всё это можно сделать и шаблонами, но придётся помучиться...
Далее - сделал сервисный экаунт, как написано здесь http://rtportal.ru/index.php?id=164:calendar-python-bot
Получил джейсон, сохранил его на Desktop
Зашел в настройки своего гугл-календаря и в пункте Доступ для отдельных пользователей, дал разрешение на редактирование имейлу, который присваивается сервисному экаунту (Без этого пункта сервисный экаунт не хотел видеть мой календарь)
На apia.ai сделал intent Add_Event, который возвращает Event_Date @sys.date, Event_Desc @sys.any и [email protected]. Потренировал на нескольких фразах, так чтобы бралась обязательная дата, необязательное время, а всё что после - в само напоминание
Ну и сделал в модуле api.ai для Add_Event такой скриптик
SPOILERSPOILER_SHOW
Код: Выделить всё
// $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 = '[email protected]'; // Тут надо поставить свой адрес
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' => '[email protected]'),
),
'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' => '[email protected]'),
),
'reminders' => array(
'useDefault' => FALSE,
'overrides' => array(
array('method' => 'email', 'minutes' => 24 * 60),
array('method' => 'popup', 'minutes' => 10),
),
),
));
}
$event = $service->events->insert($calendarId, $event);
Проверка о мероприятиях на сегодня примерно так
SPOILERSPOILER_SHOW
Код: Выделить всё
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#[email protected]';
$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 = '[email protected]';
$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;
}Re: Модуль API.AI
Я встроенной интеграции в api.ai, с ходу не разобрался что там надо сделать.fandaymon писал(а):С русским - нет. И в ближайшее время не обещают. К тому же ключевая фраза OK Google как-то не очень подходит для общения с умным домомvitt76 писал(а):А Google assistant не работает пока?
Broadlink + Orange Pi PC ARMBIAN 5.31
Re: Модуль API.AI
Камрады, а кто нибудь может подсказать как в обсуждаемом сервисе переключаются контексты? если уж пользоваться, то построение нелинейный диалогов кажется наиболее правильным вариантом.
С простым получением параметров из той или иной фразы проблем не возникло. Отдельное спасибо Игорю (Gelezako).
т.е. "расскажи о погоде", где "погода" является сущностью/параметром
или "расскажи анекдот", где последнее параметр, с подобным все ок, а вот так, чтобы
"расскажи" - как контекст с исходящими контекстами: "о погоде", "анекдот", "новости", ..... с этим затык
PS. про построение нелинейных диалогов читал в документации сервиса
https://dialogflow.com/docs/dialogs
но на строчке
С простым получением параметров из той или иной фразы проблем не возникло. Отдельное спасибо Игорю (Gelezako).
т.е. "расскажи о погоде", где "погода" является сущностью/параметром
или "расскажи анекдот", где последнее параметр, с подобным все ок, а вот так, чтобы
"расскажи" - как контекст с исходящими контекстами: "о погоде", "анекдот", "новости", ..... с этим затык
PS. про построение нелинейных диалогов читал в документации сервиса
https://dialogflow.com/docs/dialogs
но на строчке
возникает устойчивое непонимание происходящего...
Set the Action to question.location
...
MD на raspberry pi3
Re: Модуль API.AI
Тут объясняется доходчиво и по русски, есть и про контексты.Denis_k писал(а):Камрады, а кто нибудь может подсказать как в обсуждаемом сервисе переключаются контексты?...
Оно?
Отправлено с моего Redmi Note 4 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
gitHub сырого модуля 2й версии
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Re: Модуль API.AI
Правда, помоему модуль Мажордомо не отрабатывает контексты. Вроде как обсуждалось ранее.
Отправлено с моего Redmi Note 4 через Tapatalk
Отправлено с моего Redmi Note 4 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
gitHub сырого модуля 2й версии
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.