jeyroik/alice-extas

该包最新版本(2.0.0)没有可用的许可证信息。

Yandex.Alice Extas 包

2.0.0 2020-03-17 07:21 UTC

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仓库。

技能实现

"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 - 如果条件适用,则要启动的步骤名称。