Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/denismosolov/oliver

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

alice-skills tinkoff-invest tinkoff-invest-api yandex-alice yandex-dialogs

Last synced: about 2 months ago
JSON representation

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

Awesome Lists containing this project

README

        

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

Оливер купит и продаст ценные бумаги на вашем брокерском счёте в Тинькофф Инвестиции, расскажет о ваших активах.
## Установка (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](https://tinkoffcreditsystems.github.io/invest-openapi/auth/) для биржи, запишите значение токена в `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](https://user-images.githubusercontent.com/3057626/83176044-85456180-a125-11ea-994b-6087a78f42f8.png)

#### Сущности

В настройках навыка выберите подраздел Интенты, найдите Сущности и нажмите Редактировать, появится всплывающее окно с полем ввода. Вставьте содержимое файла `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. Хочу выставлять и отменять лимитные заявки на покупку и продажу акций через навык