Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/denismosolov/oliver
Оливер — навык для голосового помощника Алиса. С помощью навыка можно создать заявку на покупку или продажу акций на бирже (Тинькофф Инвестиции).
https://github.com/denismosolov/oliver
alice-skills tinkoff-invest tinkoff-invest-api yandex-alice yandex-dialogs
Last synced: 3 months ago
JSON representation
Оливер — навык для голосового помощника Алиса. С помощью навыка можно создать заявку на покупку или продажу акций на бирже (Тинькофф Инвестиции).
- Host: GitHub
- URL: https://github.com/denismosolov/oliver
- Owner: denismosolov
- License: mit
- Created: 2020-05-27T17:10:47.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-12-05T00:24:03.000Z (almost 4 years ago)
- Last Synced: 2024-05-27T12:01:45.871Z (6 months ago)
- Topics: alice-skills, tinkoff-invest, tinkoff-invest-api, yandex-alice, yandex-dialogs
- Language: PHP
- Homepage:
- Size: 142 KB
- Stars: 21
- Watchers: 4
- Forks: 1
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-alice - denismosolov/oliver - приватный навык на PHP для управления брокерским счётом: покупка и продажа акций на бирже и т.д. Использует [Тинькофф Инвестиции OpenAPI](https://github.com/TinkoffCreditSystems/invest-openapi) (Примеры и навыки / Open-source навыки)
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. Хочу выставлять и отменять лимитные заявки на покупку и продажу акций через навык