jeyroik / extas-alice
该软件包最新版本(1.0.2)没有提供许可信息。
Yandex.Alice Extas 软件包
1.0.2
2020-03-25 15:37 UTC
Requires
This package is auto-updated.
Last update: 2024-09-29 05:36:02 UTC
README
由Yandex公司提供的用于创建语音助手Alice技能的库。
该库支持以下场景(见下文指南)。
安装
composer require jeyroik/extas-alice:1.*
使用
请查看GitHub上的alice-extas-example仓库以了解如何使用此库。
技能实现
- 在Yandex.Диалогах(https://dialogs.yandex.ru/developer/)注册技能。
- 获取技能标识符(skill_id)。
- 在extas.json的skills部分添加技能条目
"skills": [ { "id": "идентификатор навыка, полученный в Яндекс.Диалогах", "name": "алиас навыка, по нему будет организовываться связка со сценариями", "description": "описание навыка, нигде не используется, заполняется только для понимания" } ]
- 在extas.json中添加技能所需的步骤
"steps": [ { "name": "Имя шага, по нему будут запускаться плагины (см. ниже)", "title": "Название шага, используется только для понимания", "description": "Описание шага, используется для понимания" } ]
- 在extas.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
以了解启动示例。
- 请参见
使用场景
- 场景由反应组成。
- 反应由条件和步骤名组成。
- 步骤由名称和描述组成。
可以预先设置步骤。
设置步骤
{ "steps": [ { "name": "demo.help", "title": "Помощь", "description": "Пользователь запросил помощь" }, { "name": "demo.start", "title": "Начало использования", "description": "На этом шаге приветствуем пользователя" } ] }
如所示,步骤不依赖于场景,可以重复使用。对于每个步骤,将启动以下阶段(事件)
- step.<步骤名>
- <场景名>.step.<步骤名>
- <技能名>.<场景名>.step.<步骤名>
因此,可以实现通用逻辑(和限制),也可以为每个场景和技能实现个性化。
设置场景
"scenarios": [ { "name": "demo", "title": "Демонстрационный сценарий", "description": "Это демонстрационный сценарий", "skill_name": "test", "schema": { "message_1": [{ "condition": "", "step": "demo.start" }], "message_x": [{ "condition": "", "step": "demo.help" }] } } ]
场景方案可以包含以下部分
message_N
,其中N
- 任何整数,表示消息标识符(见技能文档)。该部分包含对特定顺序消息的反应。message_x
- 该部分包含对可变顺序消息的反应。
每个反应由以下部分组成
condition
- 条件检查。如果该反应应始终应用,则保留该字段为空,否则在此处指定类名。反应类必须实现__invoke(IAliceCall $call)
方法并返回bool
(true
或false
)。如果为true
,则将启动相应的反应步骤。step
- 如果条件适合,需要启动的步骤名。