Простейший навык Алисы для подсчета калорий на стеке Yandex Cloud.
Данный навык сделан в демострационных целях и способен отслеживать калории только для одного пользователя — того, кто его задеплоил. Если надо, есть лучшие альтернативы.
Доступные функции:
- Информирование о потребленных за сегодня килокалориях:
На сколько я сегодня наел
,Какие за сегодня калории
и т.п.; - Запоминание блюда и его калорийности (ккал/100г):
Запомни напиток пепси, калорийность 40
,Добавь блюдо хачапури 300 килокалорий
и т.п.; - Запись об употреблении блюда:
Я выпил 200 миллилитров пепси
,Ем 300 грамм хачапури
и т.п.
- Создаем Serverless YDB базу данных в своем облаке;
- Добавляем таблицу
meals
с колонками:id
—Utf8
;kcalPer100G
—Double
;name
—Utf8
;
- Добавляем таблицу
consumptions
с колонками:id
—Utf8
;datetime
—Datetime
;grams
—Double
;mealId
—Utf8
.
Создаем сервисный аккаунт с правами на запись в YDB и на вызов serverless-функций.
Создаем serverless-функцию:
- Среда — nodejs16;
- Код загружаем через zip-архив отсюда;
- Точка входа —
dist/index.handler
; - Сервисный аккаунт — тот, который создали выше;
- Переменные окружения:
TZ
—Europe/Moscow
или другое, если актуально;YDB_ENDPOINT
— от БД, созданной выше;YDB_DATABASE
— от БД, созданной выше.
- Переходим в Яндекс Диалоги, открываем консоль разработчика;
- Создаем новый навык для Алисы;
- Заполняем обязательные настройки, в том числе:
- Backend — созданная выше функция в Облаке;
- Тип доступа — приватный;
- Иконка — чтобы не запариваться, можно взять отсюда;
- Заполняем в интентах грамматики для NLU, как — см. раздел «Команды» ниже;
- Почти готово, можно протестировать на вкладке «Тестирование»;
- Публикуем навык, ждем несколько минут, после модерации он заработает на Алисе в вашем устройстве.
root:
$HowMuch $Info
$HowMuch:
%lemma
сколько
какой
$Info:
%lemma
съесть
наесть
скушать
употребить
калории
осталось
filler:
я | сегодня | на | за | день | уже | еще
slots:
meal:
source: $Name
kcal:
source: $Kcal
type: YANDEX.NUMBER
root:
$Add $Meal $Name $Energy
$Add:
%lemma
добавить
запомнить
запиши
$Meal:
блюдо
еду
напиток
$Name:
.+
$Energy:
[$Calories $Kcal]
$Calories:
%lemma
калорийность
с калорийностью
калории
килокалории
$Kcal:
$YANDEX.NUMBER
slots:
meal:
source: $Name
amount:
source: $AmountNumber
type: YANDEX.NUMBER
root:
я? $Consumed $Amount $Name
$Consumed:
%lemma
есть
съесть
кушать
пить
выпить
записать
$Amount:
$AmountNumber $Unit
$AmountNumber:
$YANDEX.NUMBER
$Unit:
%lemma
грамм
миллилитр
$Name:
.+