jeyroik / alice-extas
该包最新版本(2.0.0)没有可用的许可证信息。
Yandex.Alice Extas 包
2.0.0
2020-03-17 07:21 UTC
Requires
This package is auto-updated.
Last update: 2024-09-17 16:47:14 UTC
README
注意!该包已被弃用,请使用 jeyroik/extas-alice
用于为Yandex公司的语音助手Alice创建技能的库。
该库支持以下场景(请参阅下方的指南)。
安装
composer require jeyroik/alice-extas:*
使用
有关如何使用该库的示例,请参阅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
- 如果条件适用,则要启动的步骤名称。