{"id":13754989,"url":"https://github.com/denismosolov/oliver","last_synced_at":"2025-05-10T00:31:22.469Z","repository":{"id":71289630,"uuid":"267380027","full_name":"denismosolov/oliver","owner":"denismosolov","description":"Оливер — навык для голосового помощника Алиса. С помощью навыка можно создать заявку на покупку или  продажу акций на бирже (Тинькофф Инвестиции).","archived":false,"fork":false,"pushed_at":"2020-12-05T00:24:03.000Z","size":145,"stargazers_count":21,"open_issues_count":15,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-16T08:34:02.705Z","etag":null,"topics":["alice-skills","tinkoff-invest","tinkoff-invest-api","yandex-alice","yandex-dialogs"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/denismosolov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-05-27T17:10:47.000Z","updated_at":"2021-08-11T10:29:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"437d862e-a7a2-4072-92d4-954eefc9134e","html_url":"https://github.com/denismosolov/oliver","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denismosolov%2Foliver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denismosolov%2Foliver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denismosolov%2Foliver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denismosolov%2Foliver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/denismosolov","download_url":"https://codeload.github.com/denismosolov/oliver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253346448,"owners_count":21894264,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alice-skills","tinkoff-invest","tinkoff-invest-api","yandex-alice","yandex-dialogs"],"created_at":"2024-08-03T10:00:38.658Z","updated_at":"2025-05-10T00:31:21.905Z","avatar_url":"https://github.com/denismosolov.png","language":"PHP","funding_links":[],"categories":["Примеры и навыки"],"sub_categories":["Open-source навыки"],"readme":"# Оливер — навык для голосового помощника Алиса\n\nОливер купит и продаст ценные бумаги на вашем брокерском счёте в Тинькофф Инвестиции, расскажет о ваших активах.\n## Установка (Linux / MacOSX)\n\n### YC CLI\nИнструкция https://cloud.yandex.ru/docs/cli/operations/install-cli\n\n### Инициализация\n```\ngit clone https://github.com/denismosolov/oliver.git\ncd oliver\nmake\n```\nВ процессе интерактивного создания профиля CLI будет поэтапно предлагать задать базовые параметры профиля. Cправка https://cloud.yandex.ru/docs/cli/operations/profile/profile-create#interactive-create\n\nВ качестве имени профиля укажите `oliver`, а в качестве каталога по умолчанию создайте новый каталог `oliver`. Можете указать другие названия, это ни на что не повлияет.\n\nЕсли всё сделаете правильно, то появится функция с именем `oliver` в Яндекс.Облаке.\n\n### Деплой в Яндекс.Облако\nВыпустите [токен OpenAPI](https://tinkoffcreditsystems.github.io/invest-openapi/auth/) для биржи, запишите значение токена в `TINKOFF_OPEN_API_EXCHANGE` в файле `.env`.\n\nА вот и команда для деплоя кода в Яндекс.Облако.\n```\nmake create_version\n```\n\nЕсли всё сделаете правильно, то у функции `oliver` появится версия и вы увидите исходный код в Яндекс.Облаке, а так же переменую окружения `TINKOFF_OPEN_API_EXCHANGE`.\n\n### Навык в Яндекс.Диалоги\nСправка https://yandex.ru/dev/dialogs/alice/doc/smart-home/start-docpage/\n\nВ поле «Тип доступа» выберите «Приватный».\n\nНе забудьте указать функцию\n![Selection_018](https://user-images.githubusercontent.com/3057626/83176044-85456180-a125-11ea-994b-6087a78f42f8.png)\n\n#### Сущности\n\nВ настройках навыка выберите подраздел Интенты, найдите Сущности и нажмите Редактировать, появится всплывающее окно с полем ввода. Вставьте содержимое файла `intents/entities` в поле ввода, нажмите Сохранить и закройте окно.\n\n#### Интенты\n\nВ настройках навыка выберите подраздел Интенты, нажмите Создать. В появившемся окне впишите Название: `Заявка на покупку или продажу по рыночной цене`, ID: `market.order`, в поле Грамматика вставьте содержимое файла `intents/market_order/intent`, в поле Положительные тесты вставьте содержимое файла `tests/intents/market_order/positive`, а в поле Отрицательные тесты вставьте содержимое файла `tests/intents/market_order/negative`. Нажмите Сохранить. Первый интент готов.\n\nПо аналогии создайте второй интент.\nНазвание: Мои заявки\nID: my.orders\nГрамматика: `intents/my_orders/intent`\nПоложительные тесты: `tests/intents/my_orders/positive`\nОтрицательные тесты: `tests/intents/my_orders/negative`\n\nНазвание: Мои акции\nID: my.stocks\nГрамматика: `intents/my_stocks/intent`\nПоложительные тесты: `tests/intents/my_stocks/positive`\nОтрицательные тесты: `tests/intents/my_stocks/negative`\n\n## Руководство пользователя\n\n### Покупка акций по рыночной цене\n\nЧтобы отправить заявку на покупку акций по рыночной цене скажите: «купи 10 лотов Яндекс».\n\nПосле этого Оливер попросит подтвердить заявку: «заявка на покупку 10 лотов Яндекс по рыночной цене, тикер YNDX, для подтверждения скажите подтверждаю, для отмены скажите нет».\n\nЕсли вы подтвердите намерение, то услышите: «заявка на покупку 10 лотов Яндекс по рыночной цене создана» либо «заявка исполнена».\n\n### Продажа акций по рыночной цене\n\nЧтобы отправить заявку на продажу акций по рыночной цене скажите: «продай 10 лотов Яндекс».\n\nПосле этого Оливер попросит подтвердить заявку: «заявка на продажу 10 лотов Яндекс по рыночной цене, тикер YNDX, для подтверждения скажите подтверждаю, для отмены скажите нет».\n\nЕсли вы подтвердите намерение, то услышите: «заявка на продажу создана» либо «заявка исполнена».\n\n### Мои активные заявки\n\nЧтобы узнать информацию об активных заявках, скажите: «мои заявки».\n\n### Мои акции\n\nЧтобы узнать информацию об акциях на вашем брокерском счёте, скажите: «мои акции».\n\nЕсли биржа закрыта, в сообщение будет только тикер и количество акций на счёте. Если биржа открыта, то к тикеру и количеству акций добавляется минимальная и максимальная цена за день.\n\n### Вспомогательные команды\n\nЕсли вы что-то не расслышали, то скажите «повтори», и Оливер повторит последнюю фразу. Это работает только внутри сессии.\n\n### Однопроходный навык\n\n`Алиса, спроси у Оливера мои акции` — вернёт список акций и завершит сессию.\n\n## Руководство тестировщика\n\n## Тестирование\n\n### Юнит-тестирование (Linux/MacOSX)\n\nДля тестирования нужна версия PHP 7.4 и PHPUnit. См. файл конфигурации `phpunit.xml`.\n\nЕсли в системе по умолчанию используется PHP 7.4, то можно запустить тесты из корня проекта командой:\n```\n./vendor/bin/phpunit\n```\n\nЕсли в системе нет PHP либо версия отличается от 7.4, то можно запустить набор тестов через Docker. Убедитесь, что в системе установлен Docker, затем выполните:\n```\nmake develop # установка phpunit, достаточно запустить один раз\nmake phpunit\n```\n\n## Планы на будущее\n1. Хочу в каталог навыков Алисы https://dialogs.yandex.ru/store (ждём  TinkoffCreditSystems/invest-openapi#217)\n2. Хочу выставлять и отменять лимитные заявки на покупку и продажу акций через навык\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenismosolov%2Foliver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdenismosolov%2Foliver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenismosolov%2Foliver/lists"}