PHPackages                             alisa/alisa - 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. [API Development](/categories/api)
4. /
5. alisa/alisa

ActiveLibrary[API Development](/categories/api)

alisa/alisa
===========

Разрабатывайте навыки для Алисы без боли с любовью &lt;3

2.0.8(1y ago)0521MITPHPPHP ^8.1

Since Jul 3Pushed 1y ago1 watchersCompare

[ Source](https://github.com/alisa-php/alisa)[ Packagist](https://packagist.org/packages/alisa/alisa)[ RSS](/packages/alisa-alisa/feed)WikiDiscussions 3.0 Synced 1mo ago

READMEChangelog (10)Dependencies (2)Versions (23)Used By (1)

Alisa
=====

[](#alisa)

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

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

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

```
composer require alisa/alisa
```

Примеры
=======

[](#примеры)

Пример навыка, который повторяет все что скажет пользователь.

```
use Alisa\Alisa;
use Alisa\Context;

$alisa = new Alisa;

$alisa->onStart(function (Context $ctx) {
    $ctx->reply('Привет, я буду повторять за тобой.');
});

$alisa->onAny(function (Context $ctx) {
    $command = $ctx->request('command');
    $ctx->reply($command);
});

$alisa->run();
```

Документация (WIP)
==================

[](#документация-wip)

События
-------

[](#события)

С помощью событий можно удобно отлавливать и обрабатывать входящие запросы от Диалогов.

### `on()`

[](#on)

```
on(Closure|array $pattern, Closure|array|string $handler, int $priority = 0): Event
```

Это самый базовый и универсальный способ отлова событий, на нем строятся все методы событий, такие как `onStart`, `onCommand` и другие.

Событие можно отловить разным способом:

- `on('request.command')` - ловим все события где есть ключ `request.command`;
- `on(['request.command' => 'привет'])` - ловим события где `команда === привет`;
- `on(['request.command' => '/прив/iu'])` - regex, ловим события где может быть `привет`, `приветствую`, `привееет` и т.п.;
- `on('request.command' => 'привет {name}'])` - ловим событие где в комманде есть `привет вася` или любое другое слово вместо `вася`.
- `on('request.command' => 'привет {name?}'])` - работает как пример выше, но в данном случае мы поймаем как `привет вася`, так и просто `привет`, потому что `{name?}` - это опциональное слово.
- `on(fn (Context $ctx) => ...)` - если результат функции `true` - есть мэтч, если `false` - мэтча нет соответсвенно, это самый гибкий вариант отлова если нужно что-то нестандартное;

**Примеры использования ниже:**

```
$alisa->on('request.command', function (Context $ctx) { ... });
```

В примере ниже мы обработаем событие если это `request.command` **ИЛИ** `session.new`.

```
$alisa->on(['request.command', 'session.new'], function (Context $ctx) { ... });
```

```
$alisa->on(['request.command' => 'привет'], function (Context $ctx) { ... });
```

```
$alisa->on(['request.command' => '/прив/iu'], function (Context $ctx) { ... });
```

В примере ниже, в функцию обработчик `{name}` мы принимаем вторым параметром.

```
$alisa->on(['request.command' => 'привет {name}'], function (Context $ctx, string $name) { ... });
```

```
$alisa->on(['request.command' => 'привет {name?}'], function (Context $ctx, ?string $name = null) { ... });
```

Мы можем добавить `{user}` `{time?}` столько, сколько нам нужно, но главное, опциональное слово всегда должно быть после обязательного.

- `/ban {user} {time?}` - OK;
- `/ban {user?} {time?}` - OK;
- `/ban {user?} {time}` - НЕ ОК;

**Как работает пример ниже:**

- Если сообщение `/ban vasya 30` - поймает `$name = vasya`, `$time = 30`.
- Если сообщение `/ban vasya 13 37` - поймает `$name = vasya`, `$time = 13 37`.

```
$alisa->on(
    ['request.command' => '/ban {user} {time?}'],
    function (Context $ctx, string $user, ?string $time = null) {
        //
    }
);
```

Вы также можете ловить слова с помощью regex:

```
$alisa->on(
    ['request.command' => '/привет (.+?)/iu'],
    function (Context $ctx, string $name) {
        //
    }
);
```

А еще, вы можете комбинировать разные варианты в одном событии.

Каждое перечисление раценивается как **ИЛИ**.

```
$alisa->on([
    'request.command' => ['/прив/iu', 'привет {name?}', 'hello', 'hola'],
    function (Context $ctx, ?string $name = null) {
        //
    }
])
```

Так тоже можно:

```
$patterns = [
    'request.command' => ['/прив/iu', 'привет {name?}', 'hello', 'hola'],
    'state.session.foo' => ['bar'],
    'state.session.lorem',
    fn (Context $ctx) => 2 + 2 === 4,
    // и т.п. и т.д.
];

$alisa->on($patterns, function (Context $ctx, ?string $name = null) {
        //
})
```

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance41

Moderate activity, may be stable

Popularity8

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity58

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 ~14 days

Recently: every ~31 days

Total

22

Last Release

388d ago

Major Versions

2.0.8 → 3.0.1-beta2024-12-16

3.0.10-beta → v4.x-dev2025-04-22

PHP version history (2 changes)2.0.0PHP ^8.1

v4.x-devPHP ^8.4

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/19103498?v=4)[chipslays](/maintainers/chipslays)[@chipslays](https://github.com/chipslays)

---

Top Contributors

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

---

Tags

alicealice-skillsalisalibraryyandex-dialogsapilibraryaliceyandexdialogsalisa

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/alisa-alisa/health.svg)

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

###  Alternatives

[hardworm/webmaster.api

Yandex Webmaster Api v4.1 library

109.7k](/packages/hardworm-webmasterapi)

PHPackages © 2026

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