ym88659208ym87991671
Действия | Документация SmartMarket
Skip to main content

Действия

С помощью объектов массива actions вы можете настроить поведение смартапа при нажатии на элемент интерфейса — кнопку или ячейку карточки.

Действия передаются в подсказках и карточках, в массиве items ответа смартапа.

Пример массива buttons (кнопок смартапа), который содержит массив действий массив actions.

{
"suggestions": {
"buttons": [
{
"title": "Кнопка",
"actions": [
{
"text": "Текст",
"type": "text"
}
]
}
]
}
}
ПолеОписание

type

Обязательное

string

Тип действия.

Возможные значения:

  • text — действие, которое обозначает отправку сообщения от имени пользователя в чат с ассистентом;

    Пример:

    { "text": "Текст", "type": "text", "should_send_to_backend": true }
  • deep_link — действие, которое обозначает обработку диплинка ассистентом или хост-приложением.

    Пример:

    { "type": "deep_link", "deep_link": "example://app/profile" }
  • server_action — произвольное сообщение для бэкенда смартапа. Действия этого типа позволяют запускать сторонние смартапы.

    Пример:

    { "type": "server_action", "message_name": "SERVER_ACTION", "server_action": { "action_id" : "example_action_name", "parameters" : { "example_usefull_field": "example_456", "example_text": "Привет" } } }

text

Обязательное

string

Передается только в действиях с типом text.

Текст сообщения от имени пользователя.

should_send_to_backend

boolean

Может передаваться только в действиях с типом text.

Указывает, что сообщение нужно не только отобразить в чате с ассистентом, но и отправить в бэкенд.

По умолчанию true.

deep_link

Обязательное

string

Передается только в действиях с типом deep_link. Работает только при вызове смартапа в мобильном приложении и в SberPortal.

Диплинк, который нужно открыть.

message_name

string

Может передаваться только в действиях с типом server_action.

Название сообщения. По умолчанию SERVER_ACTION.

server_action

Обязательное

object

Передается только в действиях с типом server_action.

Сообщение для бэкенда, представленное в виде произвольного, валидного JSON-объекта.

action_id

string

Произвольное название действия.

parameters

object

Произвольные параметры действия.

Запуск сторонних смартапов

Действия типа server_action позволяют запускать сторонние смартапы. Возможность запуска сторонних смартапов согласуется индивидуально на этапе модерации.

Чтобы запустить сторонний смартап, в поле message_name необходимо передать значение RUN_APP. При этом сообщение должно выглядеть следующим образом:

{
"type": "server_action",
"message_name": "RUN_APP",
"server_action": {
"action_id": "run_app",
"app_info": {
"projectId": "example_456",
"applicationId": "app_456_ios",
"appversionId": "app_version_456"
},
"parameters": {
"example_usefull_field": "example_456",
"example_text": "Привет"
}
}
}

В действиях, запускающих сторонние смартапы, поле action_id по умолчанию принимает значение run_app.

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

Бэкенд запускаемого смартапа получит запрос RUN_APP.

Проведение платежей

При завершении оплаты ассистент отправляет server_action c "action_id": "PAY_DIALOG_FINISHED". Это сообщение позволяет определить статус счета, переданного на оплату.

Получение сообщения PAY_DIALOG_FINISHED не означает, что счет перешел в финальный статус.

Пример сообщения:

"payload": {
...
"server_action": {
"action_id": "PAY_DIALOG_FINISHED",
"parameters": {
"payment_response":
{
"response_code": 0,
"invoice_id": "***ID****"
},
"app_info":
{
"projectId": "**",
"systemName": "**"
}
}
}
}
...
}

В сообщении передается response_code с кодом ответа. Этот код является информационным и говорит о наиболее вероятном состоянии оплаты. После получения кода ответа нужно отправить запрос на проверку статуса счета, затем можно принимать решение о формировании ответа клиенту и дальнейших шагах. В случае одностадийного платежа процесс оплаты завершается после получения этого статуса. Возможные значения response_code:

  • 0 — успешная оплата;
  • 1 — неожиданная ошибка;
  • 2 — пользователь закрыл смартап. При получении этого кода необходимо дополнительно отправить запрос на проверку статуса платежа, чтобы отобразить результат пользователю;
  • 3 — невозможно начать оплату, так как отображается другой сценарий оплаты;
  • 4 — время оплаты счета истекло;
  • 5 — оплата отклонена бэкендом;
  • 6 — состояние оплаты неизвестно;
  • 7 — оплата для данной поверхности недоступна.
Обновлено 20 апреля 2022

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней