jeyroik/extas-alice

该软件包最新版本(1.0.2)没有提供许可信息。

Yandex.Alice Extas 软件包

1.0.2 2020-03-25 15:37 UTC

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仓库以了解如何使用此库。

技能实现

"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) 方法并返回 booltruefalse)。如果为 true,则将启动相应的反应步骤。
  • step - 如果条件适合,需要启动的步骤名。