[Модуль] API.AI (apiai)
Модератор: immortal
Re: Модуль API.AI
вы неврено урл сайта вписали, нужно http://api.ai , а вообще это старый домен, они переехали вот сюда https://dialogflow.com/Yashalta писал(а): Пн дек 10, 2018 12:11 pm А сайт http://apia.ai/ открывается? или там другая должна быть ссылка? Я пытаюсь проделать все шаги, что описаны выше и дошел до места На apia.ai сделал intent Add_Event, который возвращает Event_Dateгде нужно ... но, сайт не открывается!!!
фанат Мажордомо
тематический блог 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 (apiai)
это сайт https://dialogflow.com/
адд: ух как все быстро среагировали... значит пользователи сего чуда есть
адд: ух как все быстро среагировали... значит пользователи сего чуда есть
MDM живет на 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
Re: Модуль API.AI
Он теперь называется https://dialogflow.com/Yashalta писал(а): Пн дек 10, 2018 12:11 pm
А сайт http://apia.ai/ открывается? или там другая должна быть ссылка? Я пытаюсь проделать все шаги, что описаны выше и дошел до места На apia.ai сделал intent Add_Event, который возвращает Event_Dateгде нужно ... но, сайт не открывается!!!
Re: Модуль API.AI
Подскажите, делаю в впервые... Может где видео инструкция для чайников есть?fandaymon писал(а): Ср фев 14, 2018 3:53 am ...
На 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);
Проверка о мероприятиях на сегодня примерно так
Сначала проверяются праздники, потом то что запланировано в гугл-календаре. За качество кода не отвечаю, так как на PHP до Мажордомо не писал, но вроде работает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; }

Вот пытаюсь создать новый "Intend name" какое имя нужно дать, возможно, нужно присвоить какое то специальное или имя не имеет значения? Как сделать, что бы он возвращал то, что автор поста описал выше ...возвращает Event_Date @sys.date, Event_Desc @sys.any и [email protected].
Куда прописывать скрипт?
Re: [Модуль] API.AI (apiai)
(1) Имя любое, латиницей
(2) - сюда ничего пока не надо - это события по которым активируется интент
Потом "набить" ентитиес
Потом их "обозначить" в интентах
Вот небольшая "обучалка"
https://www.youtube.com/watch?v=gWNUg_v25dw
https://www.youtube.com/watch?v=biN00SoMRI8
https://www.youtube.com/watch?v=jJFTIZ4kLTY
(2) - сюда ничего пока не надо - это события по которым активируется интент
Потом "набить" ентитиес
Потом их "обозначить" в интентах
Вот небольшая "обучалка"
https://www.youtube.com/watch?v=gWNUg_v25dw
https://www.youtube.com/watch?v=biN00SoMRI8
https://www.youtube.com/watch?v=jJFTIZ4kLTY
MDM живет на 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
Re: [Модуль] API.AI (apiai)
Вот пример моего интента управления любым объектом в любой комнате
- Вложения
-
- Snap 2018-12-10 at 14.26.57.png (43.47 КБ) 4675 просмотров
-
- Snap 2018-12-10 at 14.25.02.png (27.93 КБ) 4676 просмотров
-
- Snap 2018-12-10 at 14.26.08.png (98.51 КБ) 4676 просмотров
-
- Snap 2018-12-10 at 14.20.49.png (69.5 КБ) 4679 просмотров
MDM живет на 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
Re: Модуль API.AI
Подскажите, не понимаю т.к. делаю в первый раз...fandaymon писал(а): Ср фев 14, 2018 3:53 am ...сделал 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);
Проверка о мероприятиях на сегодня примерно так
Сначала проверяются праздники, потом то что запланировано в гугл-календаре. За качество кода не отвечаю, так как на PHP до Мажордомо не писал, но вроде работает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; }
Куда класть скрипт о котором говорит автор?
Если сюда,fandaymon писал(а): Ср фев 14, 2018 3:53 am
Ну и сделал в модуле api.ai для Add_Event такой скриптик

то, думаю это не совсем правильно т.к. нужно удалить имеющийся по дефолту скрип?!?! Или тут еще есть место куда можно добавить?
Так же у меня не получается и реализовать что бы Add_Event, возвращал Event_Date @sys.date, Event_Desc @sys.any и Event_Time @sys.time

А здесь я просто показываю какой Entities я создал

Re: [Модуль] API.AI (apiai)
Скрипт записывается в Actions модуля Api.Ai. Надо чтобы этот интент отработал, тогда в списке Actions появляется Add_Event с параметрами. Нажимая карандашик можно отредактировать, что именно он будет делать - именно туда надо скопировать мой скрипт.
Для того чтобы параметры возвращались, надо вписывать пробные строчки и выделять в них дату, время и описание события
Для того чтобы параметры возвращались, надо вписывать пробные строчки и выделять в них дату, время и описание события
Re: [Модуль] API.AI (apiai)
Сделал так как Вы описали выше! Интент отработал и в списке Actions появился Add_Event далее нажал на карандашик и добавил Ваш скрипт! После положил фаил zerg_secret.json на Raspberry где у меня MajorDomo живет, по этому пути как у Вас /home/pi/Desktop/zerg_secret.json и так же в скрипте поправил эту строчку на свое значениеfandaymon писал(а): Пт дек 14, 2018 1:10 pm Скрипт записывается в Actions модуля Api.Ai. Надо чтобы этот интент отработал, тогда в списке Actions появляется Add_Event с параметрами. Нажимая карандашик можно отредактировать, что именно он будет делать - именно туда надо скопировать мой скрипт.
Код: Выделить всё
putenv('GOOGLE_APPLICATION_CREDENTIALS=/home/pi/Desktop/zerg_secret.json');Код: Выделить всё
Warning: require_once(./Google/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/modules/apiai/apiai.class.php(663) : eval()'d code on line 4
Fatal error: require_once(): Failed opening required './Google/vendor/autoload.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/modules/apiai/apiai.class.php(663) : eval()'d code on line 4