Разработка action-скриптов¶
Разработка action-скриптов¶
Пользовательские действия (или action-скрипты) — это действие, которое может запускать любой нужный вам код Python. Действия позволяют боту выполнять сложные задачи, такие как взаимодействие с внешними API, базами данных или другими системами.
Поскольку Wisebot построен на платформе Rasa, пользовательские действия в обеих системах работают одинаково.
Содержание инструкции:
Определение¶
Пользовательские действия (или 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
Действия могут использоваться для отправки пользователям уведомлений или предупреждений.
Например, если пользователь запрашивает напоминание о каком-либо событии, можно запустить действие для планирования и отправки пользователю уведомления о напоминании в указанное время.