Coder Social home page Coder Social logo

alice-serverless-diet's Introduction

Alice's Serverless Diet

Простейший навык Алисы для подсчета калорий на стеке Yandex Cloud.

Обзор

Данный навык сделан в демострационных целях и способен отслеживать калории только для одного пользователя — того, кто его задеплоил. Если надо, есть лучшие альтернативы.

Доступные функции:

  • Информирование о потребленных за сегодня килокалориях: На сколько я сегодня наел, Какие за сегодня калории и т.п.;
  • Запоминание блюда и его калорийности (ккал/100г): Запомни напиток пепси, калорийность 40, Добавь блюдо хачапури 300 килокалорий и т.п.;
  • Запись об употреблении блюда: Я выпил 200 миллилитров пепси, Ем 300 грамм хачапури и т.п.

Развертывание

База данных

  1. Создаем Serverless YDB базу данных в своем облаке;
  2. Добавляем таблицу meals с колонками:
    • idUtf8;
    • kcalPer100GDouble;
    • nameUtf8;
  3. Добавляем таблицу consumptions с колонками:
    • idUtf8;
    • datetimeDatetime;
    • gramsDouble;
    • mealIdUtf8.

Сервисный аккаунт

Создаем сервисный аккаунт с правами на запись в YDB и на вызов serverless-функций.

Функция-обработчик

Создаем serverless-функцию:

  • Среда — nodejs16;
  • Код загружаем через zip-архив отсюда;
  • Точка входа — dist/index.handler;
  • Сервисный аккаунт — тот, который создали выше;
  • Переменные окружения:
    • TZEurope/Moscow или другое, если актуально;
    • YDB_ENDPOINT — от БД, созданной выше;
    • YDB_DATABASE — от БД, созданной выше.

Подключение навыка

  1. Переходим в Яндекс Диалоги, открываем консоль разработчика;
  2. Создаем новый навык для Алисы;
  3. Заполняем обязательные настройки, в том числе:
    • Backend — созданная выше функция в Облаке;
    • Тип доступа — приватный;
    • Иконка — чтобы не запариваться, можно взять отсюда;
  4. Заполняем в интентах грамматики для NLU, как — см. раздел «Команды» ниже;
  5. Почти готово, можно протестировать на вкладке «Тестирование»;
  6. Публикуем навык, ждем несколько минут, после модерации он заработает на Алисе в вашем устройстве.

Команды

Запрос потребления, id: query

root:
    $HowMuch $Info

$HowMuch:
    %lemma
    сколько
    какой

$Info:
    %lemma
    съесть
    наесть
    скушать
    употребить
    калории
    осталось

filler:
    я | сегодня | на | за | день | уже | еще

Добавление блюда, id: add_meal

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

Употребление блюда, id: consume

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:
    .+

alice-serverless-diet's People

Contributors

kiraind avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.