PHPackages                             jeyroik/extas-alice - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. jeyroik/extas-alice

ActiveLibrary

jeyroik/extas-alice
===================

Yandex.Alice Extas package

1.0.2(6y ago)68122PHP

Since Mar 17Pushed 3y ago1 watchersCompare

[ Source](https://github.com/jeyroik/extas-alice)[ Packagist](https://packagist.org/packages/jeyroik/extas-alice)[ RSS](/packages/jeyroik-extas-alice/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (3)Versions (5)Used By (2)

Extas-alice
===========

[](#extas-alice)

Библиотека для создания навыков для голосового помощника Алисы от компании Яндекс.

Данная библиотека поддерживает сценарии (см. руководство ниже).

Установка
=========

[](#установка)

`composer require jeyroik/extas-alice:1.*`

Использование
=============

[](#использование)

Пример использования библиотеки смотрите в репозитории [alice-extas-example](https://github.com/jeyroik/alice-extas-example "Перейти к alice-extas-example")

Реализация навыка
-----------------

[](#реализация-навыка)

- Регистрируем навык в Яндекс.Диалогах ().
- Получаем идентификатор навыка (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.&lt;name шага&gt;
- &lt;name сценария&gt;.step.&lt;name шага&gt;
- &lt;name навыка&gt;.&lt;name сценария&gt;.step.&lt;name шага&gt;

Таким образом возможно реализовать как общую логику (и ограничения), так и персонально для каждого сценария и навыка.

### Установка сценария

[](#установка-сценария)

```
"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` - имя шага, который нужно запустить, если условия подходят.

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~329 days

Total

4

Last Release

1258d ago

Major Versions

1.0.2 → v2.x-dev2022-11-30

### Community

Maintainers

![](https://www.gravatar.com/avatar/2aaec5c4bade6ab2b5d1a0f7d97ab4e0ff2ce83937f76499b2888ad16cde5e04?d=identicon)[jeyroik](/maintainers/jeyroik)

---

Top Contributors

[![jeyroik](https://avatars.githubusercontent.com/u/6348124?v=4)](https://github.com/jeyroik "jeyroik (4 commits)")

---

Tags

extasphpyandex-alice

### Embed Badge

![Health badge](/badges/jeyroik-extas-alice/health.svg)

```
[![Health](https://phpackages.com/badges/jeyroik-extas-alice/health.svg)](https://phpackages.com/packages/jeyroik-extas-alice)
```

###  Alternatives

[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9682.1M97](/packages/roots-acorn)[bacula-web/bacula-web

The open source web based reporting and monitoring tool for Bacula

1537.5k](/packages/bacula-web-bacula-web)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)[doppar/framework

The Doppar Framework

366.7k8](/packages/doppar-framework)[hardcastle/xrpl_php

PHP SDK / Client for the XRP Ledger

129.7k5](/packages/hardcastle-xrpl-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
