From 990fceb851d8604bbff2931635ecd7957b324ed3 Mon Sep 17 00:00:00 2001 From: jeyroik Date: Wed, 28 Aug 2019 16:56:46 +0300 Subject: [PATCH] upd readme, rn skill repo to skills, rm deprecated plugin --- README.md | 86 +++++++++++++++++-- extas.json | 3 +- resources/request.message_1.dist | 82 ++++++++++++++++++ resources/request.message_x.help.dist | 82 ++++++++++++++++++ resources/request.message_x.test.dist | 82 ++++++++++++++++++ .../plugins/alice/skills/PluginSkillTest.php | 20 ----- .../yandex/skills/AliceSkillRepository.php | 2 +- 7 files changed, 325 insertions(+), 32 deletions(-) create mode 100644 resources/request.message_1.dist create mode 100644 resources/request.message_x.help.dist create mode 100644 resources/request.message_x.test.dist delete mode 100644 src/components/plugins/alice/skills/PluginSkillTest.php diff --git a/README.md b/README.md index 44bcae7..df02e9e 100644 --- a/README.md +++ b/README.md @@ -11,19 +11,87 @@ Yandex.Alice Extas package # Использование -## Реализация навыка +## Тестовый запуск + +### Устанавливаем всё необходимое + +``` +/alice-extas# composer i +/alice-extas# /vendor/bin/extas i -p extas.json +/alice-extas# php -S 0.0.0.0:8080 -t resources +``` + +Это установит тестовый сценарий и тестовые шаги для него. + +### Делаем запрос + +Любым любимым инструментом шлём запрос на наш навык: + +```POST localhost:8080``` -Реализуем плагин (см. детали jeyroik/extas-foundation) для стадии `alice.skill.run.` +Тело запроса: -## Установка навыков +- `resources/request.message_1.dist` для проверки запуска приветствия +- `resources/request.message_x.help.dist` для проверки запуска помощи при неизвестной команде от пользователя +- `resources/request.message_x.test.dist` для проверки реакции на определённый запрос -1. В extas.json в секцию `skills` добавляем данные своих скиллов. -- `name`: алиас скила, будет использоваться для управления его работой; -- `description`: описание скила, опциональное поле; -- `id`: идентификатор скилла (см. панель разработчика в диалогах). +## Реализация навыка -2. См. инструкции в `jeyroik/extas-foundation` для базовой подготовки к использованию extas'a. -3. Устанавливаем extas: `/vendor/bin/extas i -p extas.json` +- Регистрируем навык в Яндекс.Диалогах (https://dialogs.yandex.ru/developer/). +- Получаем идентификатор навыка (skill_id). +- Добавялем запись о навыке в extas.json в секцию skills: +```json +"skills": [ + { + "id": "идентификатор навыка, полученный в Яндекс.Диалогах", + "name": "алиас навыка, по нему будет организовываться связка со сценариями", + "description": "описание навыка, нигде не используется, заполняется только для понимания" + } +] +``` +- Добавляем в extas.json шаги, которые потребуются для навыка: +```json +"steps": [ + { + "name": "Имя шага, по нему будут запускаться плагины (см. ниже)", + "title": "Название шага, используется только для понимания", + "description": "Описание шага, используется для понимания" + } +] +``` +- Добавляем в extas.json сценарии навыка: +```json +"scenarios": [ + { + "name": "Имя сценария, используется для запуска плагинов", + "title": "Название сценария, используется для понимания", + "description": "Описание сценария, используется для понимания", + "skill_name": "алиас навыка - см. skills:name", + "schema": { + "message_1": [{ + "condition": "имя класса для проверки условия, оставить пустым для обязателнього запуска данной реакции", + "step": "имя шага, см. steps:name" + }], + "message_x": [{ + "condition": "", + "step": "demo.help" + }, { + "condition": "extas\\components\\yandex\\skills\\conditions\\ConditionTest", + "step": "demo.test" + }] + } + } +] +``` + - В схеме доступны два варианта идентификаторов сообщения: + - N, где N - целое число, идентификатор сообщения (см. детали https://yandex.ru/dev/dialogs/alice/doc/protocol-docpage/ описание по message_id) + - Пример: message_1, message_2 + - x - для реакции на все сообщения пользователя; + - Пример: message_x +- При необходимости можно также заранее прописать карточки и кнопки (см. extas.json для примера). +- Устанавливаем навык: `alice-extas# vendor/bin/extas i` +- Запускаем навык: `alice-extas# php -S 0.0.0.0:8080 -t resources ` + - См. `resources/index.php` для примера запуска. ## Использование сценария diff --git a/extas.json b/extas.json index 001b4c2..5c9fff0 100644 --- a/extas.json +++ b/extas.json @@ -95,8 +95,7 @@ { "name": "test", "description": "Test skill", - "id": "test", - "type": "scenario" + "id": "test" } ], "buttons": [ diff --git a/resources/request.message_1.dist b/resources/request.message_1.dist new file mode 100644 index 0000000..a364293 --- /dev/null +++ b/resources/request.message_1.dist @@ -0,0 +1,82 @@ +{ + "meta": { + "locale": "ru-RU", + "timezone": "Europe/Moscow", + "client_id": "ru.yandex.searchplugin/5.80 (Samsung Galaxy; Android 4.4)", + "interfaces": { + "screen": { } + } + }, + "request": { + "command": "закажи пиццу на улицу льва толстого 16 на завтра", + "original_utterance": "закажи пиццу на улицу льва толстого, 16 на завтра", + "type": "SimpleUtterance", + "markup": { + "dangerous_context": true + }, + "payload": {}, + "nlu": { + "tokens": [ + "закажи", + "пиццу", + "на", + "льва", + "толстого", + "16", + "на", + "завтра" + ], + "entities": [ + { + "tokens": { + "start": 2, + "end": 6 + }, + "type": "YANDEX.GEO", + "value": { + "house_number": "16", + "street": "льва толстого" + } + }, + { + "tokens": { + "start": 3, + "end": 5 + }, + "type": "YANDEX.FIO", + "value": { + "first_name": "лев", + "last_name": "толстой" + } + }, + { + "tokens": { + "start": 5, + "end": 6 + }, + "type": "YANDEX.NUMBER", + "value": 16 + }, + { + "tokens": { + "start": 6, + "end": 8 + }, + "type": "YANDEX.DATETIME", + "value": { + "day": 1, + "day_is_relative": true + } + } + ] + } + }, + "session": { + "new": true, + "message_id": 1, + "session_id": "2eac4854-fce721f3-b845abba-20d60", + "skill_id": "test", + "user_id": "AC9WC3DF6FCE052E45A4566A48E6B7193774B84814CE49A922E163B8B29881DC" + }, + "version": "1.0" +} \ No newline at end of file diff --git a/resources/request.message_x.help.dist b/resources/request.message_x.help.dist new file mode 100644 index 0000000..ff70268 --- /dev/null +++ b/resources/request.message_x.help.dist @@ -0,0 +1,82 @@ +{ + "meta": { + "locale": "ru-RU", + "timezone": "Europe/Moscow", + "client_id": "ru.yandex.searchplugin/5.80 (Samsung Galaxy; Android 4.4)", + "interfaces": { + "screen": { } + } + }, + "request": { + "command": "закажи пиццу на улицу льва толстого 16 на завтра", + "original_utterance": "закажи пиццу на улицу льва толстого, 16 на завтра", + "type": "SimpleUtterance", + "markup": { + "dangerous_context": true + }, + "payload": {}, + "nlu": { + "tokens": [ + "закажи", + "пиццу", + "на", + "льва", + "толстого", + "16", + "на", + "завтра" + ], + "entities": [ + { + "tokens": { + "start": 2, + "end": 6 + }, + "type": "YANDEX.GEO", + "value": { + "house_number": "16", + "street": "льва толстого" + } + }, + { + "tokens": { + "start": 3, + "end": 5 + }, + "type": "YANDEX.FIO", + "value": { + "first_name": "лев", + "last_name": "толстой" + } + }, + { + "tokens": { + "start": 5, + "end": 6 + }, + "type": "YANDEX.NUMBER", + "value": 16 + }, + { + "tokens": { + "start": 6, + "end": 8 + }, + "type": "YANDEX.DATETIME", + "value": { + "day": 1, + "day_is_relative": true + } + } + ] + } + }, + "session": { + "new": true, + "message_id": 2, + "session_id": "2eac4854-fce721f3-b845abba-20d60", + "skill_id": "test", + "user_id": "AC9WC3DF6FCE052E45A4566A48E6B7193774B84814CE49A922E163B8B29881DC" + }, + "version": "1.0" +} \ No newline at end of file diff --git a/resources/request.message_x.test.dist b/resources/request.message_x.test.dist new file mode 100644 index 0000000..9776368 --- /dev/null +++ b/resources/request.message_x.test.dist @@ -0,0 +1,82 @@ +{ + "meta": { + "locale": "ru-RU", + "timezone": "Europe/Moscow", + "client_id": "ru.yandex.searchplugin/5.80 (Samsung Galaxy; Android 4.4)", + "interfaces": { + "screen": { } + } + }, + "request": { + "command": "ping закажи пиццу на улицу льва толстого 16 на завтра", + "original_utterance": "закажи пиццу на улицу льва толстого, 16 на завтра", + "type": "SimpleUtterance", + "markup": { + "dangerous_context": true + }, + "payload": {}, + "nlu": { + "tokens": [ + "закажи", + "пиццу", + "на", + "льва", + "толстого", + "16", + "на", + "завтра" + ], + "entities": [ + { + "tokens": { + "start": 2, + "end": 6 + }, + "type": "YANDEX.GEO", + "value": { + "house_number": "16", + "street": "льва толстого" + } + }, + { + "tokens": { + "start": 3, + "end": 5 + }, + "type": "YANDEX.FIO", + "value": { + "first_name": "лев", + "last_name": "толстой" + } + }, + { + "tokens": { + "start": 5, + "end": 6 + }, + "type": "YANDEX.NUMBER", + "value": 16 + }, + { + "tokens": { + "start": 6, + "end": 8 + }, + "type": "YANDEX.DATETIME", + "value": { + "day": 1, + "day_is_relative": true + } + } + ] + } + }, + "session": { + "new": true, + "message_id": 2, + "session_id": "2eac4854-fce721f3-b845abba-20d60", + "skill_id": "test", + "user_id": "AC9WC3DF6FCE052E45A4566A48E6B7193774B84814CE49A922E163B8B29881DC" + }, + "version": "1.0" +} \ No newline at end of file diff --git a/src/components/plugins/alice/skills/PluginSkillTest.php b/src/components/plugins/alice/skills/PluginSkillTest.php deleted file mode 100644 index 9b9f11e..0000000 --- a/src/components/plugins/alice/skills/PluginSkillTest.php +++ /dev/null @@ -1,20 +0,0 @@ -