Перейти к содержанию

Разработка action-скриптов#


Определение#

Пользовательские действия (или action-скрипты) — это действие, которое может запускать любой нужный вам код Python. Действия позволяют боту выполнять сложные задачи, такие как взаимодействие с внешними API, базами данных или другими системами.

Поскольку Wisebot построен на платформе Rasa, пользовательские действия в обеих системах работают одинаково.


Где хранятся action-скрипты?#

Action-скрипты хранятся в отдельном файле или модуле, обычно в папке actions/ вашего проекта.

Основной файл для действий — actions.py.

Пример структуры проекта:

your_rasa_project/
├── actions/
│   ├── actions.py
│   ├── __init__.py
├── data/
├── domain.yml
├── config.yml
├── ...

Формат action-скриптов#

Action-скрипты — это Python-классы, которые наследуются от rasa_sdk.Action.

Каждый класс должен реализовать два метода:

  1. name: Возвращает имя действия, которое должно совпадать с именем, указанным в domain.yml.
  2. run: Содержит логику, которая выполняется при вызове действия.

Добавление action-скрипта#

Шаг 1. Создание действия#

  1. Создайте файл actions-name.py со скриптом в каталоге actions.

    Пример кода скрипта, который отправляет ответ в виде сообщения: «Это сообщение из action скрипта».

    Добавление action-скрипта

    ⚠️ Для названия действий не существует строгих правил. Тем не менее, для организованности кода рекомендуется использовать префиксы, чтобы классифицировать различные типы действий. Например, для пользовательских действий можно применять префикс action_.

  2. Пропишите название скрипта в файле init.py.

    Добавление action-скрипта

Шаг 2. Добавление действия в домен#

  1. Перейдите в раздел НастройкиДомен по умолчанию.
  2. Добавьте созданное действие. Если действие присутствует в списке, пропустите этот шаг.

    Добавление action-скрипта

  3. Сохраните изменения.

Шаг 3. Настройка Action-сервера#

Action Server — это отдельный сервер, который запускает и выполняет action-скрипт.

В файле endpoints.yml укажите адрес Action-сервера:

action_endpoint:
  url: "http://localhost:5055/webhook"

Шаг 4. Добавление действия в историю#

Добавьте вызов действия в историю.

🔍 Подробнее читайте в инструкции Добавление действия в историю и протестируйте помощника для того, чтобы убедиться, что он отвечает правильно.


Варианты использования#

  1. action_api_call

    Это событие аналогично пользовательскому действию, но специально предназначено для выполнения вызовов API и получения данных из внешних источников. Оно позволяет получать данные, обрабатывать их и отправлять результат в виде ответа пользователю. Как и для пользовательских действий, необходимо создать класс на языке Python, наследующий класс Action.

    В методе run пишется код для взаимодействия с API и извлечения необходимой информации из ответа.

    Варианты использования

  2. action_validate_email

    Проверка введенных пользователем данных. Действия могут использоваться для проверки введенных пользователем данных перед тем, как перейти к дальнейшему взаимодействию.

    Например, если пользователь вводит неверный формат электронной почты, можно запустить действие, которое проверит введенные данные и попросит пользователя указать правильный адрес электронной почты.

    Варианты использования

  3. action_perform_conditional_logic

    В этом примере мы создали пользовательское действие под названием ActionPerformConditionalLogic. Внутри метода run этого действия мы получаем ответ пользователя из трекера и выполняем условную логику, основанную на этом ответе.

    Если пользователь выбирает "да", то действие выводит ответ "Вы выбрали 'да'!". Если пользователь выбирает "нет", то выводится ответ "Вы выбрали 'нет'!". В противном случае, если пользователь не выбрал ни "да", ни "нет", выводится стандартный ответ "Вы выбрали что-то другое!".

    Варианты использования

  4. action_fetch_purchase_history

    Когда пользователь запрашивает историю своих последних покупок, срабатывает действие FetchPurchaseHistoryAction, которое запрашивает эту информацию в базе данных. Ответ будет отправлен обратно пользователю.

    Варианты использования

  5. action_fetch_joke

    Пример действия в Rasa, которое генерирует динамический ответ, получая случайную шутку из API-шутки.

    Варианты использования

  6. action_book_flight

    Действия могут быть использованы для реализации пользовательской бизнес-логики, специфичной для вашего приложения

    Например, если пользователь хочет забронировать авиабилет, можно запустить действие, которое выполнит необходимые вычисления и проверки для бронирования авиабилета.

    Варианты использования

  7. action_make_payment

    Скрипт может использоваться для интеграции с внешними сервисами, такими как платежные шлюзы или платформы обмена сообщениями.

    Например, если пользователь хочет произвести оплату, можно запустить действие, отправляющее запрос на оплату в платежный шлюз.

    Варианты использования

  8. action_store_name

    Скрипт может использоваться для поддержания и обновления состояния разговора.

    Например, если пользователь указывает свое имя, можно вызвать действие, сохраняющее это имя в состоянии разговора для последующего использования.

    Варианты использования

  9. action_schedule_reminder

    Действия могут использоваться для отправки пользователям уведомлений или предупреждений.

    Например, если пользователь запрашивает напоминание о каком-либо событии, можно запустить действие для планирования и отправки пользователю уведомления о напоминании в указанное время.

    Варианты использования