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