Skip to content

Commit

Permalink
upd readme, rn skill repo to skills, rm deprecated plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
jeyroik committed Aug 28, 2019
1 parent 97667d9 commit 990fceb
Show file tree
Hide file tree
Showing 7 changed files with 325 additions and 32 deletions.
86 changes: 77 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.<name скила>`
Тело запроса:

## Установка навыков
- `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` для примера запуска.

## Использование сценария

Expand Down
3 changes: 1 addition & 2 deletions extas.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,7 @@
{
"name": "test",
"description": "Test skill",
"id": "test",
"type": "scenario"
"id": "test"
}
],
"buttons": [
Expand Down
82 changes: 82 additions & 0 deletions resources/request.message_1.dist
Original file line number Diff line number Diff line change
@@ -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"
}
82 changes: 82 additions & 0 deletions resources/request.message_x.help.dist
Original file line number Diff line number Diff line change
@@ -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"
}
82 changes: 82 additions & 0 deletions resources/request.message_x.test.dist
Original file line number Diff line number Diff line change
@@ -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"
}
20 changes: 0 additions & 20 deletions src/components/plugins/alice/skills/PluginSkillTest.php

This file was deleted.

2 changes: 1 addition & 1 deletion src/components/yandex/skills/AliceSkillRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class AliceSkillRepository extends Repository implements IAliceSkillRepository
{
protected $itemClass = AliceSkill::class;
protected $pk = AliceSkill::FIELD__ID;
protected $name = 'skill';
protected $name = 'skills';
protected $scope = 'alice';
protected $idAs = '';
}

0 comments on commit 990fceb

Please sign in to comment.