Action — одна из сущностей DSL, которая представляет собой реакцию на какое-либо событие. Например, отправка сообщения, запрос данных у внешней системы, изменение состояния и т.д.
Actions, которые будут использоваться многократно, хранятся в static/references/actions
.
Ниже описаны основные Actions, которые передаются в поле type:
- Actions по умолчанию
- Составные Actions
- Actions для управления сценарием
- Actions для интеграции с внешними системами
- Actions для взаимодействия с пользователем
- Actions для взаимодействия с счетчиками
- Actions для взаимодействия с переменными
Виды Actions
Actions по умолчанию
Тип | Описание |
---|---|
None |
|
{
"type": null
}
Составные Actions
Ниже представлено описание Actions, которые комбинируют другие Actions.
Тип | Описание |
---|---|
requirement |
Используемые параметры:
|
{
"type": "requirement",
"action": {
"type": "do_nothing",
"command": "ANSWER_TO_USER",
"nodes": {
"text": "Номер указан не верно, введите еще раз."
}
},
"requirement": {
"type": "external",
"requirement": "number_is_wrong"
}
}
Тип | Описание |
---|---|
else |
Используемые параметры:
|
{
"type": "else",
"requirement": {
"type": "external",
"requirement": "callcenter_white_list"
},
"action": {
"type": "external",
"action": "nothing_found"
},
"else_action": {
"type": "external",
"action": "just_callcenter_action"
}
}
Тип | Описание |
---|---|
choice |
Если не выполнен ни один из requirement_action и при этом указан else_action, то будет выполнен else_action (его использование необязательно, ключ может быть пропущен). Используемые параметры:
|
{
"type": "choice",
"requirement_actions": [
{
"requirement": {
"type": "external",
"requirement": "number_is_ok"
},
"action": {
"nodes": {
"answer": [
[
"Ваш номер {{main_form_phone_number}} введен верно"
]
]
}
}
},
{
"requirement": {
"type": "external",
"requirement": "number_is_wrong"
},
"action": {
"nodes": {
"answer": [
[
"Номер указан не верно, введите еще раз"
]
]
}
}
}
],
"else_action": {
"nodes": {
"answer": [
[
"Ваш номер и не ok, и не ok. Странно это"
]
]
}
}
}
Тип | Описание |
---|---|
external |
Используемые параметры:
|
{
"type": "external",
"action": "approve"
}
Тип | Описание |
---|---|
composite |
Используемые параметры:
|
{
"type": "composite",
"actions": [
{
"nodes": {
"answer": [
[
"Сейчас переведем вас на оператора"
]
]
}
},
{
"type": "external",
"action": "callcenter_action"
}
]
}
Actions для управления сценарием
Ниже представлено описание Actions, которые позволяют управлять сценарием и его компонентами.
Тип | Описание |
---|---|
clear_form_by_id |
Используемые параметры:
|
{
"type": "clear_form_by_id",
"form": "hello_app_form"
}
Тип | Описание |
---|---|
clear_inner_form_by_id |
Используемые параметры:
|
{
"type": "clear_form_by_id",
"form": "hello_app_form",
"inner_form": "inner_hello_app_form"
}
Тип | Описание |
---|---|
break_scenario |
По умолчанию форма сценария не очищается. Для этого необходимо использовать action |
{
"type": "break_scenario"
}
Тип | Описание |
---|---|
remove_form_field |
Используемые параметры:
|
{
"type": "remove_form_field",
"form": "form_name",
"field": "field_name"
}
Тип | Описание |
---|---|
remove_composite_form_field |
Используемые параметры:
|
{
"type": "remove_composite_form_field",
"form": "form_name",
"inner_form": "inner_form_name",
"field": "field_name"
}
Тип | Описание |
---|---|
run_scenario |
Используемые параметры:
|
{
"type": "run_scenario",
"scenario": "hello_app_scenario"
}
Тип | Описание |
---|---|
fill_field |
Используемые параметры:
|
{
"type": "fill_field",
"form": "form_name",
"field": "field_name",
"data_path": "data"
}
Тип | Описание |
---|---|
composite_fill_field |
Используемые параметры:
В качестве данных в |
{
"type": "composite_fill_field",
"form": "form_name",
"internal_form": "internal_form_name",
"field": "field_name",
"data_path": "data"
}
Тип | Описание |
---|---|
clear_scenario_by_id |
Используемые параметры:
|
{
"type": "clear_scenario_by_id",
"scenario_id": "SF_Vacations"
}
Тип | Описание |
---|---|
run_last_scenario |
|
{
"type": "run_last_scenario"
}
Тип | Описание |
---|---|
|
Используемые параметры:
|
{
"type": "reset_current_node",
"node_id": "your_node_id"
}
Тип | Описание |
---|---|
clear_current_scenario |
|
{
"type": "clear_current_scenario_form"
}
Тип | Описание |
---|---|
clear_current_scenario_form |
|
{
"type": "clear_current_scenario_form"
}
Тип | Описание |
---|---|
choice_scenario |
|
{
"type": "choice_scenario",
"scenarios": [
{
"scenario": {...},
"requirement": {...}
},
...
{
"scenario": {...},
"requirement": {...}
}
],
"else_action": {...}
}
Actions для интеграции с внешними системами
Ниже представлено описание Actions, которые позволяют сделать запрос из DSL и получить данные из внешних систем.
Название | Описание |
---|---|
save_behavior |
Используемые параметры:
|
{
"type": "save_behavior",
"check_scenario": true,
"behavior": "behavior_name"
}
Название | Описание |
---|---|
self_service_with_state |
Используемые параметры:
|
{
"type": "self_service_with_state",
"behavior": "common_behavior",
"command_action": {
"command": "INTEGRATIO_REQUEST",
"request_type": "kafka",
"request_data": {
"topic_key": "integration"
},
"nodes": {
"uniqueId": "test123"
}
}
}
Название | Описание |
---|---|
proccess_behavior |
|
{
"type": "process_behavior"
}
Название | Описание |
---|---|
http_request |
Используемые параметры:
|
{
"type": "http_request",
"behavior": "some_behavior",
"params": {
"url": "http://127.0.0.1",
"method": "post",
"json": {
"type": "unified_template",
"template": "{{data|to_json}}"
},
"some_request_param": 123
},
"store": "some_variable"
}
Actions для взаимодействия с пользователем
Ниже представлено описание Actions, которые позволяют взаимодействовать с пользователем.
Тип | Описание |
---|---|
string |
Используемые параметры:
|
Описание в DSL
{
"type": "string",
"command": "ANSWER_TO_USER",
"nodes": {
"pronounceText": "",
"items": [
{
"bubble": {
"text": "Чтобы прослушивать музыку, нужно авторизоваться в приложении Сбер"
}
}
],
"finished": true
}
}
Результат выполнения
[
{
"message_name": "RECHARGE_MOBILE",
"payload": {
"phone": "+79173213232",
"amount": 100
}
}
]
Тип | Описание |
---|---|
ask_again | AskAgainAction — это action, который позволяет повторно задать вопрос пользователю из последнего сценария и поля, к которому был задан последний вопрос. |
Описание в DSL
{
"type": "ask_again"
}
Тип | Описание |
---|---|
sdk_answer |
Используемые параметры:
|
Описание в DSL
{
"type": "sdk_answer",
"pronounceText": [
"Вот.",
"Смотрите."
],
"items": [
{
"bubble": {
"text": [
"Вот.",
"Смотрите.",
"Пожалуйста."
]
}
},
{
"card": {
"type": "unified_template",
"template": "{{ main_form.start.cards_to_show|tojson }}",
"loader": "json"
}
}
],
"suggestions": {
"buttons": [
{
"title": [
"Почему по карте минус"
],
"action": {
"text": "Почему по карте минус",
"type": "text"
}
}
]
}
}