Download the PHP package isamarin/alisa without Composer
On this page you can find all versions of the php package isamarin/alisa. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package alisa
Бот для Яндекс.Алиса
Предварительная настройка
Морфологический словарь
Бот использует преобразование слов в первую форму для более точного распознавания пользовательского запроса. Для корректной работы необходимо иметь словарь слов с нужным языком. Для русского языка подойдет этот набор. В обязательном порядке необходимо указать путь до словаря.
Директория хранения сессий
Сессии – *.json файл в котором хранится вся сервисная информация в рамках сущности одного диалога. Необходимо указать путь до дирректории, в которую будут складироваться данные.
Протокол работы
Стандартные триггеры
По протоколу работы бот обязан иметь как минимум триггер для приветствия, обработку ошибки (вызов помощи).
В случае, если данные триггеры не определены, бот отошлет ответ по умолчанию со ссылкой на данный пункт. И если это причина, по которой ты читаешь этот текст – шалость удалась.
Триггеры
Триггер
Триггер – команда, на которую должен отреагрировать бот.
Токены
Токены – ключевые слова, или варианты запроса (зависит от выбранного типа распознования)
MORPHY_STRICT
Данный режим использует поочередное сравнение групп токенов, отбирая только подходящие варинты. Разбор идет слева направо – если первая группа не прошла поиск – остальные группы перебираться не будут и бот приступит к просмотру следующего триггера. При первом вхождении всех групп – триггер будет помечен как распознанный, остыльне учавствовать в разборе не будут
При запросе "Налейка, пожалуйста черного чая" сработает $blackTea; При запросе "Сил нет как хочу бодрящего такого кофе" – $coffeTrigger;
Плюсы:
- Хорошо различает очень похожие запросы
- При первом свопадении всех групп токенов, обработка следующих триггеров прекращается
- Очередностью добавления триггеров можно определить те триггеры, которые будут обрабатываться первым. См пункт выше.
- Может вызывать триггер с ошибкой, если команда не была распознана. В данном примере, попросив налить пива, бот скажет что такими полномочиями не обладает.
Минусы:
- Необходимо строго определять важность того или иного ключевого слова. В случае с $greenTea и $blackTea, с аналогичными двумя первыми группами, решающим фактором сыграет третья гурппа токенов – черный чай или все таки чай зеленый.
- И колличество триггеров, и колличеество групп токенов сказывается на скорости работы.
Дамерау-Левенштейн
В отличие от MORPHY_STRICT ключевые слова будут определяться автоматически, но необходимо прописать несколько вариантов запросов. В разборе учавствуют все триггеры, за распознный будет выбираться триггер с наилучшим совпаденеием запроса.
Плюсы:
- Не нужно определять группы ключевых слов. Достаточно прописать только несколько возможных вариантов, которые может запросить пользователь
- Как правило, запрос обрабатывается быстрее, чем аналогичная вариация MORPHY_STRICT
Минусы:
- Обрабатываются все триггеры, для которых прописаны токены. Даже если правильный триггер был выбран первым, остальные триггеры все равно пройдут проверку. Результирующий триггер – триггер с наибольшим совпадением. Соответвено чем больше триггеров, тем медленее работает.
- В отличие от MORPHY_STRICT не может вызывать сообщение с ошибкой распознования. Данный режим всегда выдает какой-либо триггер. В данном примере, попросив налить пива, по какой-то причине бот наливает кофе.
Делегирование
В случаях, когда бот используется для последовательного выполнения команд, можно привязать к триггеру следующий триггер. Например если нужно собрать какую-либо информацию от пользователя, например имя, фамилию итд.
Для каждого из триггеров нужно создать обработчик с вопросом. При запросе пользователя "Ну давай познакомимся" сработает триггер $nameTrigger. Для триггеров $sNameTrigger и $yoTrigger токены не нужны (в общем то в данном случае они и не смогут сработать, тк пользотваель будет передавать информацию, и в ней нельзя распознать команду), они будут вызваны автоматически друг за другом.
Данные
Триггеры можно использовать не только как способ определения команды пользователя, но и для сбора информации.
Бот сохраняет только один экземпляр данных для триггера, таким образом получить можно только последние полученные данные
Ответы
Ответы – это информация, которую бот отсылает пользователю, как только сработал триггер.
Текст и TTS
В методе addText два строчных аргумента. Первый используется для вывода текста, который будет отображен пользователю, второй – тот же самый текст в формате TTS.
Варианты
Для большей интерактивности следует использовать несколько возможных вариантов ответа. Вариант при отправке будет выбран случайно.
Кнопки
Для ответа можно прикрепить кнопку. Это может быть ссылка на веб-страницу или кнопка, при нажатии на которую будет вызван триггер. Кнопок может быть несколько и разных видов.
В данном примере при нажатии на кнопку будет вызван $nameTrigger из примера в пункте "Делегирование". Таким образом $nameTrigger может быть взыван как голосом пользователя, так и нажатием на кнопку, если пользователь не разговорчив.
Кнопки
Виды кнопок
Бот Алисы может выводить пользователи кнопки в двух разных видах – как кнопка, размещенная под диалогом, так и ссылка внутри отправляемого ответа.
Базовые возможности
Сохранение данных
Помимо отправленных пользователем данных, которые привязывается и сохраняеются триггером, можно сохранить и свои данные.
Больше возможностей
Зацкиливание триггера
В случаях, когда триггер предполагает не только принятие данных, но и валидацию, следует использовать зацикливание
Внутреннее делегирование
Ручная подстановка данных для триггера
Пост обработка ответа
All versions of alisa with dependencies
guzzlehttp/guzzle Version 6.4.*
oefenweb/damerau-levenshtein Version 3.0.*
ext-mysqli Version *
php Version ^7.1
ext-json Version *
ext-mbstring Version *
ext-curl Version *
ext-openssl Version *