Re: [Модуль] API.AI (apiai)
Добавлено: Пн дек 10, 2018 12:15 pm
вы неврено урл сайта вписали, нужно http://api.ai , а вообще это старый домен, они переехали вот сюда https://dialogflow.com/Yashalta писал(а): Пн дек 10, 2018 12:11 pm А сайт http://apia.ai/ открывается? или там другая должна быть ссылка? Я пытаюсь проделать все шаги, что описаны выше и дошел до места На apia.ai сделал intent Add_Event, который возвращает Event_Dateгде нужно ... но, сайт не открывается!!!
Он теперь называется https://dialogflow.com/Yashalta писал(а): Пн дек 10, 2018 12:11 pm
А сайт http://apia.ai/ открывается? или там другая должна быть ссылка? Я пытаюсь проделать все шаги, что описаны выше и дошел до места На apia.ai сделал intent Add_Event, который возвращает Event_Dateгде нужно ... но, сайт не открывается!!!
Подскажите, делаю в впервые... Может где видео инструкция для чайников есть?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; }

Подскажите, не понимаю т.к. делаю в первый раз...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 такой скриптик



Сделал так как Вы описали выше! Интент отработал и в списке 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