Разработка action-скриптов#
- Определение
- Где хранятся action-скрипты?
- Формат action-скриптов
- Добавление 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.
Каждый класс должен реализовать два метода:
name: Возвращает имя действия, которое должно совпадать с именем, указанным вdomain.yml.run: Содержит логику, которая выполняется при вызове действия.
Добавление action-скрипта#
Шаг 1. Создание действия#
-
Создайте файл
actions-name.pyсо скриптом в каталогеactions.Пример кода скрипта, который отправляет ответ в виде сообщения: «Это сообщение из action скрипта».

⚠️ Для названия действий не существует строгих правил. Тем не менее, для организованности кода рекомендуется использовать префиксы, чтобы классифицировать различные типы действий. Например, для пользовательских действий можно применять префикс
action_. -
Пропишите название скрипта в файле
init.py.
Шаг 2. Добавление действия в домен#
- Перейдите в раздел Настройки → Домен по умолчанию.
-
Добавьте созданное действие. Если действие присутствует в списке, пропустите этот шаг.

-
Сохраните изменения.
Шаг 3. Настройка Action-сервера#
Action Server — это отдельный сервер, который запускает и выполняет action-скрипт.
В файле endpoints.yml укажите адрес Action-сервера:
Шаг 4. Добавление действия в историю#
Добавьте вызов действия в историю.
🔍 Подробнее читайте в инструкции Добавление действия в историю и протестируйте помощника для того, чтобы убедиться, что он отвечает правильно.
Варианты использования#
-
action_api_callЭто событие аналогично пользовательскому действию, но специально предназначено для выполнения вызовов API и получения данных из внешних источников. Оно позволяет получать данные, обрабатывать их и отправлять результат в виде ответа пользователю. Как и для пользовательских действий, необходимо создать класс на языке Python, наследующий класс Action.
В методе
runпишется код для взаимодействия с API и извлечения необходимой информации из ответа.
-
action_validate_emailПроверка введенных пользователем данных. Действия могут использоваться для проверки введенных пользователем данных перед тем, как перейти к дальнейшему взаимодействию.
Например, если пользователь вводит неверный формат электронной почты, можно запустить действие, которое проверит введенные данные и попросит пользователя указать правильный адрес электронной почты.

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

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

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

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

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

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

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