Skip to content

Оливер — навык для голосового помощника Алиса. С помощью навыка можно создать заявку на покупку или продажу акций на бирже (Тинькофф Инвестиции).

License

Notifications You must be signed in to change notification settings

denismosolov/oliver

Repository files navigation

Оливер — навык для голосового помощника Алиса

Оливер купит и продаст ценные бумаги на вашем брокерском счёте в Тинькофф Инвестиции, расскажет о ваших активах.

Установка (Linux / MacOSX)

YC CLI

Инструкция https://cloud.yandex.ru/docs/cli/operations/install-cli

Инициализация

git clone https://github.com/denismosolov/oliver.git
cd oliver
make

В процессе интерактивного создания профиля CLI будет поэтапно предлагать задать базовые параметры профиля. Cправка https://cloud.yandex.ru/docs/cli/operations/profile/profile-create#interactive-create

В качестве имени профиля укажите oliver, а в качестве каталога по умолчанию создайте новый каталог oliver. Можете указать другие названия, это ни на что не повлияет.

Если всё сделаете правильно, то появится функция с именем oliver в Яндекс.Облаке.

Деплой в Яндекс.Облако

Выпустите токен OpenAPI для биржи, запишите значение токена в TINKOFF_OPEN_API_EXCHANGE в файле .env.

А вот и команда для деплоя кода в Яндекс.Облако.

make create_version

Если всё сделаете правильно, то у функции oliver появится версия и вы увидите исходный код в Яндекс.Облаке, а так же переменую окружения TINKOFF_OPEN_API_EXCHANGE.

Навык в Яндекс.Диалоги

Справка https://yandex.ru/dev/dialogs/alice/doc/smart-home/start-docpage/

В поле «Тип доступа» выберите «Приватный».

Не забудьте указать функцию Selection_018

Сущности

В настройках навыка выберите подраздел Интенты, найдите Сущности и нажмите Редактировать, появится всплывающее окно с полем ввода. Вставьте содержимое файла intents/entities в поле ввода, нажмите Сохранить и закройте окно.

Интенты

В настройках навыка выберите подраздел Интенты, нажмите Создать. В появившемся окне впишите Название: Заявка на покупку или продажу по рыночной цене, ID: market.order, в поле Грамматика вставьте содержимое файла intents/market_order/intent, в поле Положительные тесты вставьте содержимое файла tests/intents/market_order/positive, а в поле Отрицательные тесты вставьте содержимое файла tests/intents/market_order/negative. Нажмите Сохранить. Первый интент готов.

По аналогии создайте второй интент. Название: Мои заявки ID: my.orders Грамматика: intents/my_orders/intent Положительные тесты: tests/intents/my_orders/positive Отрицательные тесты: tests/intents/my_orders/negative

Название: Мои акции ID: my.stocks Грамматика: intents/my_stocks/intent Положительные тесты: tests/intents/my_stocks/positive Отрицательные тесты: tests/intents/my_stocks/negative

Руководство пользователя

Покупка акций по рыночной цене

Чтобы отправить заявку на покупку акций по рыночной цене скажите: «купи 10 лотов Яндекс».

После этого Оливер попросит подтвердить заявку: «заявка на покупку 10 лотов Яндекс по рыночной цене, тикер YNDX, для подтверждения скажите подтверждаю, для отмены скажите нет».

Если вы подтвердите намерение, то услышите: «заявка на покупку 10 лотов Яндекс по рыночной цене создана» либо «заявка исполнена».

Продажа акций по рыночной цене

Чтобы отправить заявку на продажу акций по рыночной цене скажите: «продай 10 лотов Яндекс».

После этого Оливер попросит подтвердить заявку: «заявка на продажу 10 лотов Яндекс по рыночной цене, тикер YNDX, для подтверждения скажите подтверждаю, для отмены скажите нет».

Если вы подтвердите намерение, то услышите: «заявка на продажу создана» либо «заявка исполнена».

Мои активные заявки

Чтобы узнать информацию об активных заявках, скажите: «мои заявки».

Мои акции

Чтобы узнать информацию об акциях на вашем брокерском счёте, скажите: «мои акции».

Если биржа закрыта, в сообщение будет только тикер и количество акций на счёте. Если биржа открыта, то к тикеру и количеству акций добавляется минимальная и максимальная цена за день.

Вспомогательные команды

Если вы что-то не расслышали, то скажите «повтори», и Оливер повторит последнюю фразу. Это работает только внутри сессии.

Однопроходный навык

Алиса, спроси у Оливера мои акции — вернёт список акций и завершит сессию.

Руководство тестировщика

Тестирование

Юнит-тестирование (Linux/MacOSX)

Для тестирования нужна версия PHP 7.4 и PHPUnit. См. файл конфигурации phpunit.xml.

Если в системе по умолчанию используется PHP 7.4, то можно запустить тесты из корня проекта командой:

./vendor/bin/phpunit

Если в системе нет PHP либо версия отличается от 7.4, то можно запустить набор тестов через Docker. Убедитесь, что в системе установлен Docker, затем выполните:

make develop # установка phpunit, достаточно запустить один раз
make phpunit

Планы на будущее

  1. Хочу в каталог навыков Алисы https://dialogs.yandex.ru/store (ждём TinkoffCreditSystems/invest-openapi#217)
  2. Хочу выставлять и отменять лимитные заявки на покупку и продажу акций через навык

About

Оливер — навык для голосового помощника Алиса. С помощью навыка можно создать заявку на покупку или продажу акций на бирже (Тинькофф Инвестиции).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published