Giter VIP home page Giter VIP logo

popstas / yandex-dialogs-whatis Goto Github PK

View Code? Open in Web Editor NEW
21.0 7.0 2.0 658 KB

Навык "Вторая память" для Алисы (Яндекс.Диалоги), подскажет, что где находится, если вы перед этим расскажете ему об этом

Home Page: https://dialogs.yandex.ru/store/skills/00203e6e-vtoraya-pamya

JavaScript 99.36% Dockerfile 0.10% Shell 0.54%
yandex-dialogs-sdk alice-skills yandex-alice yandex-dialogs

yandex-dialogs-whatis's Introduction

yandex-dialogs-whatis

Build Status

Бот отвечает на вопросы и умеет записывать новые ответы, умеет вести список покупок.

У каждого пользователя собственная база вопросов и ответов.

По умолчанию запускается на *:2756

Блогпост с техническим описанием.

Сценарии использования

Я посмотрел несколько дней, как люди используют навык и понял, что не хватает примеров использования. Почти все пытаются использовать навык как напоминалку: "завтра будет дождь" и т.д. она не будет так работать нормально, т.к. когда наступит завтра, для навыка запись не превратится в "сегодня". Опишу сценарии, для которых навык должен хорошо сработать.

  1. "Список покупок". Спросить можно так: "что в магазине". Главное условие: продукт должен состоять из одного слова (если добавляются не через "плюс-минус" технику). Добавлять можно по-разному, вот примеры:
  • добавь в список покупок сыр
  • в магазине надо купить белый хлеб и молоко
  • надо купить сметану
  • удали сметану из списка
  • список покупок
  • что купить в магазине
  • плюс мандарины минус бананы плюс шоколад (идея взята здесь)

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

  1. "Виртуальные подписи". Изначально задумка была такая: у меня есть несколько бутыльков с жидкостями, подписывать я их не могу, так как содержимое периодически меняется. Поэтому я промаркировал их цветами. Вторая память в этом случае заменяет подписи на бутыльках, когда я меняю жидкость, говорю: "в красном налит арбуз". После этого я могу спросить "где арбуз" или "что в красном".

  2. "Помощь мастеру". Если вам приходилось когда-нибудь разбирать технику или собирать девайсы на платформах типа Arduino или ESP, вы знаете, что собрать обратно бывает непросто, если не запоминать процесс разборки. Навык может помочь в простых случаях (в сложных проще сделать фотографии до разборки). Например, можно запоминать соответствия "пин - цвет": "в первом воткнут синий", а потом спросить при сборке: "где синий".

  3. "Расписание". Это может быть расписание пар в школе или меню в столовой. "в среду в школе будет математика, русский, черчение, физика" - "что будет в среду в школе", "в пятницу в столовой будут щи" - "что будет в пятницу в столовой".

  4. "Показания счетчиков". Если вы передаёте показания счетчиков электричества или воды, вы знаете, что нужно либо запомнить несколько цифр, либо подходить с листочком. Со второй памятью это можно сделать так: "тариф 1 набежало 2568" - "что тариф 1", "холодная натекло 321" - "что холодная".

Команды:

  • Добавляйте покупки в список покупок
  • Начните фразу со "что/кто", чтобы получить ответ. Например: "что на дворе"
  • Начните фразу с "где/когда/в чем", чтобы найти место, где это что-то лежит. Например: "где трава"
  • Скажите "запомни", чтобы добавить новый ответ
  • Скажите "команды", чтобы посмотреть примеры
  • Можно быстро добавить новый ответ так: "запомни ... находится/лежит/стоит ..."
  • Можно удалить последний ответ, сказав "удали/забудь последнее"
  • Если надо удалить что-то другое, скажите, например, "удали/забудь на дворе"
  • Свяжите несколько устройств, скажите "скажи код", произнесите код на подключаемом устройства
  • Можно просить повторить: "повтори" или "что ты услышала"
  • При тестовом запуске доступна команда "демо данные"

Известные проблемы:

  • Нельзя запомнить сразу несколько вещей (в списке покупок можно)
  • Не умеет понимать временные запоминания, типа "запомни завтра футбол", обязательно должен быть глагол: "запомни завтра будет футбол"
  • Для списка покупок, расписания и некоторых других сценариев надо дополнять, а не заменять, реализовано только для списка покупок

Технические особенности

  • Сделано на yandex-dialogs-sdk, используются commands, scenes, matchers, middlewares из SDK
  • Выбор хранилища между MongoDB и Loki (локальное файловое хранилище)
  • Выбор сценария на основе простого морфологического разбора
  • Система тестирования на основе сценариев, работает на yandex-dialogs-client и на travis
  • Модульность команд (подробнее в CONTRIBUTING.md), главный файл навыка состоит только из подключений middlewares и commands
  • Метрики передаются в chatbase, с полной разметкой intents и в Яндекс.Метрику
  • Лог запросов и ответов с id юзеров, номером визита и номером сообщения в визите
  • Корректировка типичных неправильных ударений
  • Строка очищается от ненужных слов с учетом контекста запроса
  • Упрощенное указание эффектов: [megaphone]говорите громче! вместо <speaker effect="megaphone">говорите громче!
  • Возможность указывать некоторую фонетическую разметку в text, а не в tts

Особенности диалога

  • Местами есть вариативность ответов
  • Умеет отвечать на типичные фразы: приветствие, благодарность, оскорбление
  • Пытается понять, что пользователь сказал неправильно и подсказать
  • Обучающий тур при первом заходе
  • Необязательные подтверждения (скажите да, нет или другую команду)
  • Знает свою версию (версия) и итеративная история изменений (что нового)
  • Умеет повторять последний ответ или вопрос (повтори)
  • Различает новых юзеров и повторных
  • Знает некоторые вещи, на которые она понимает, что не знает ответ
  • Умеет связывать несколько устройств, чтобы все они помнили одно и то же

TODO:

  • greetings, welcomeExample - отвечать рандомным примером при первом общении
  • отправка списка на email
  • проработать показания счетчиков электричество 1 2 3 4 электричество тариф 1 23 45 тариф 2 2456 показания показания счетчиков показания электричества электричество тариф 1

Проблемные фразы:

  • добавь кока колу селедку под шубой чай christmas mystery батон нарезной чупа чупс и майонез провансаль
  • так
  • так в начале
  • стоп
  • домой
  • не понимаю (некоторые юзеры признаются, что разговор не удается)
  • я не поняла
  • не понял
  • в смысле
  • удали все по списку
  • очистить всю память
  • очистить всю историю
  • как пользоваться...
  • иди на...
  • 16 але
  • алло
  • х*й
  • ха ха ха
  • ты меня слышишь

yandex-dialogs-whatis's People

Contributors

popstas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

mazanur ergoz

yandex-dialogs-whatis's Issues

Навык не работает на Станции

Вторая память не нуждается в графике, насколько я понимаю, а значит её можно довольно легко адаптировать для Станции. Обладаю Станцией и готов помогать тестировать.

Публикация навыка в каталоге

1. Общие требования

  • 1.1. Грамотность
  • 1.2. Этичность
  • 1.3. Достоверность
  • 1.4. Добросовестность
  • 1.5. Законность

2. Специальные требования для Элементов Диалога и Контента

2.1. Требования в отношении элемента «Название диалога»

  • Название должно состоять не менее чем из двух слов или из одного уникального названия бренда. При этом вторым словом не может считаться предлог, союз, частица и междометие.
  • Не использует бренд, права на использование которого не были подтверждены.
  • Не содержит слова «Яндекс», «Алиса», «Станция» или общеупотребительные для использования Сервиса элементы (например, «покажи», «загрузи», «попроси», «запуск», «включи», «открой» и т. д.)
  • Не содержит только общие фразы и/или фразы, являющиеся категориями товаров, сервисов или контента. Можно: «Настоящий белорус», «Подарки от Максимки», «Случайный хайку». Нельзя: «Как дела», «Умный дом», «Магазин продуктов».

2.2. Требования в отношении элемента «Активационное имя диалога»

Активационное имя должно отвечать одному из следующих форматов:

  • Фраза из не менее 2 и не более 4 слов (не включая предлоги).

  • Название бренда (уникальное название компании, товарный знак).

  • Аббревиатура из как минимум 3 букв русского алфавита. При приведении аббревиатуры, Владелец Контента должен предоставить расшифровку аббревиатуры в названии или описании навыка.

  • Не содержит только общие фразы и/или фразы, являющиеся категориями товаров или контента (например, «как дела», «пластиковые окна»).

2.3. Требования в отношении элемента «Описание диалога»

Описание диалога — размещаемое в каталогах диалогов, а также на странице сайта Сервиса, краткое описание функциональных возможностей диалога (навыка) с возможным указанием информации о Владельце Контента.

Описание навыка представляется на русском языке.

Описание должно четко характеризовать навык, то есть содержать основную информацию о функциях и создателях диалога, при этом не может содержать примеры вопросов и ответов пользователю.

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

Не допускается использование в описании навыка отсылок к публичным лицам, фактически не имеющим отношения к созданию и использованию Диалога.

Например:

  • Нельзя: в описании Pepsi, а в диалоге Coca-Cola.
  • Нельзя: «любимый бот Барака Обамы» и т. д.

2.4. Требования в отношении элемента «Категория диалога»

Категория диалога — приведение классификации диалога, исходя из его функциональной принадлежности, потенциальной аудитории, вида Контента и т.д. (например: музыка, спорт, образование, игры, развлечения и т. д.).

Верное указание категории необходимо для эффективного поиска диалога и его надлежащей фильтрации.

Основанием для отказа в принятии заявленной категории является несоответствие категории фактической функциональности диалога.

2.5. Требования в отношении элемента «Иконка диалога»

  • Размер 192x192

2.6. Требования в отношении элемента «Содержание диалога»

  • При проведении проверки проводится запрос «помощь», по которому должна автоматически выводиться справка с описанием функционала диалога

Навык не работает :(

Ни в приложении, ни на колонке навык не запускается, не знает какой сейчас год и вот это всё. Имеет смысл надеяться на восстановление или проект заброшен?

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.