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

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

Модератор: immortal

Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Модуль API.AI

Сообщение Gelezako » Вт мар 27, 2018 4:34 pm

olehs писал(а):Жесть! Все описание, которое я делал для Модуля куда-то пропало! Что за хрень???
Не переживай, просто подменили ссылку, которая отображается по клику. Статья ни вики живая и скоро будет в базе знаний.
За это сообщение автора Gelezako поблагодарил:
olehs (Вт мар 27, 2018 4:35 pm)
Рейтинг: 1.16%
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Ср мар 28, 2018 3:25 am

Наткнулся на тему с напоминалкой в соседней ветке viewtopic.php?f=4&t=5255
и ради примера решил сделать то же самое на DialogFlow:

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

$dt = $params['date-time'];
$text = $params['text'];

if($dt && $text) {
 addScheduledJob($text, "say('Вы просили напомнить $text');", strtotime(rtrim($dt, 'Z')));
}
Вложения
Reminder.json.txt
(2.7 КБ) 602 скачивания
За это сообщение автора olehs поблагодарили (всего 2):
lanket (Ср мар 28, 2018 8:03 am) • Gelezako (Ср мар 28, 2018 12:24 pm)
Рейтинг: 2.33%
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Модуль API.AI

Сообщение Gelezako » Ср мар 28, 2018 12:35 pm

olehs писал(а):Наткнулся на тему с напоминалкой в соседней ветке viewtopic.php?f=4&t=5255
и ради примера решил сделать то же самое на DialogFlow:

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

$dt = $params['date-time'];
$text = $params['text'];

if($dt && $text) {
 addScheduledJob($text, "say('Вы просили напомнить $text');", strtotime(rtrim($dt, 'Z')));
} 
спасибо за очередной пример, но я так и не смог найти куда записывается напоминание, зашёл в xray->Events , но там его нет.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Ср мар 28, 2018 1:00 pm

Gelezako писал(а): спасибо за очередной пример, но я так и не смог найти куда записывается напоминание, зашёл в xray->Events , но там его нет.
в Timers
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль API.AI

Сообщение lanket » Ср мар 28, 2018 6:51 pm

olehs писал(а):Наткнулся на тему с напоминалкой в соседней ветке viewtopic.php?f=4&t=5255
и ради примера решил сделать то же самое на DialogFlow:

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

$dt = $params['date-time'];
$text = $params['text'];

if($dt && $text) {
 addScheduledJob($text, "say('Вы просили напомнить $text');", strtotime(rtrim($dt, 'Z')));
} 
Задачка посложнее нет желания решить.
Интент на удаление напоминания, 2я функция то что из соседней ветки, но учитывая возможности dialogflow туда бы передать список установленных таймеров. Чтобы dialogflow смог сообразить какое именно произнес название напоминания при не 100% совпадении.

Вроде в последнем обновлении модуля можно туда в отсылать временные Entities в рамках текущей сессии.

Если я правильно понимаю механизм dialogflow понял что это это интент на удаление напоминания, запросил список таймеров, сравнил и выдал то что посчитал максимально подходящим или уточнил у пользователя.

Или я что то не так понял?
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Модуль API.AI

Сообщение Gelezako » Ср мар 28, 2018 6:56 pm

lanket писал(а): Вроде в последнем обновлении модуля можно туда в отсылать временные Entities в рамках текущей сессии.
На самом деле это никакие не временные Entities, они самые что ни на есть постоянные и сохраняются навсегда в диалогфлоу. По сути, новая возможность в модуле просто позволяется быстро выгрузить их из МЖД определённые Entities и сохранить их в диалогфлоу. Тоже самое можно сделать руками через панель диалогфлоу.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Ср мар 28, 2018 8:01 pm

Конечно же про удаление я тоже думал и сделать это несложно.
И тут вы, lanket и Gelezako, оба по-своему правы, т.к есть 2 варианта реализации.

Вариант lanket'a кажется более логичным - сделать это через userEntities, т.к. таймеры со временем пропадают и актуальны только на момент запроса.
Но в таком случае запрос на удаление должен проходить в 2 этапа: сначала нужно попросить удалить напоминание, в ответ загрузить список, а затем уже проговорить название напоминания и удалить его.

Второй вариант - обновлять глобальный Entity каждый раз при изменении в списке напоминаний: при создании и после сработки таймера.
В таком случае напоминание можно удалить одной фразой "Удали напоминание такое-то".

Могу реализовать любой из них, скажите какой больше нравится. А сами реализуете другой (с целью тестирования модуля, конечно ;) )
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль API.AI

Сообщение lanket » Ср мар 28, 2018 9:15 pm

olehs писал(а):...
Второй вариант - обновлять глобальный Entity каждый раз при изменении в списке напоминаний: при создании и после сработки таймера.
В таком случае напоминание можно удалить одной фразой "Удали напоминание такое-то".
...
Есть одно но. Таймеры удаляются с наступлением времени. Dialogflow следить за временем не будет. Если только в самом таймере прописывать обновление entities.

И ещё одно но. Не все Таймеры надо знать dialogflow, а только те которые относятся к напоминалке. Как их фильтровать?

Отправлено с моего Redmi Note 4 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Модуль API.AI

Сообщение fandaymon » Ср мар 28, 2018 9:19 pm

lanket писал(а):
olehs писал(а):...
Второй вариант - обновлять глобальный Entity каждый раз при изменении в списке напоминаний: при создании и после сработки таймера.
В таком случае напоминание можно удалить одной фразой "Удали напоминание такое-то".
...
Есть одно но. Таймеры удаляются с наступлением времени. Dialogflow следить за временем не будет. Если только в самом таймере прописывать обновление entities.

И ещё одно но. Не все Таймеры надо знать dialogflow, а только те которые относятся к напоминалке. Как их фильтровать?

Отправлено с моего Redmi Note 4 через Tapatalk
Ну это ведь очевидно - когда добавляется напоминание после отработки api.ai, то добавляется entity, в тело таймера встраивается удаление entity - набор будет актуальным и там будут только те таймеры, что нужны
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Ср мар 28, 2018 9:39 pm

На самом деле можно просто запускать выгрузку полного списка таймеров после установки напоминания, после удаления, и еще раз в самом коде таймера.
Фильтровать можно по специфическому тексту в названии или коменту в коде таймера, типа:

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

/* REMINDER */ say('...
Ответить