Перейти к содержанию

Взаимодействие с ботом

В данной статье описаны методы взаимодействия с ботом.

sendBotEvent

Метод отправки события боту. Это основной способ обмена данными между фронтендом и бэкендом SmartApp.

Параметром запроса является объект с атрибутами.

Параметры

Параметр Тип данных Описание
method string Метод запроса, который получит бот
params object Полезные данные запроса, которые получит бот
files array Необязательный список файлов. Атрибуты файлов формируются при отправке их на сервер методом send File ССЫЛКУ!
timeout number Необязательный таймаут в мс, по умолчанию 3000
guaranteed_delivery_required bool Необязательный признак гарантированной доставки боту, по умолчанию false. Этот параметр позволяет доставить сообщение боту при выходе из оффлайна, даже если SmartApp уже выгружен

Возвращаемое значение

Возвращаемое значение содержит Promise, который вернёт объект с атрибутами после исполнения:

Параметр Тип данных Описание
ref string Уникальный идентификатор запроса
payload object Полезные данные ответа, формируемые ботом
type string Константа со значением smartapp_rpc
files array Список файлов, которые можно загрузить методом open File ССЫЛКУ!

Пример

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import * as SDK from "@expressms/smartapp-sdk";

async function test() {
  const response = await SDK.sendBotEvent({
    method: "get_news",
    params: {
      id: 1248,
    },
  });

  // Допустим по соглашению с ботом в payload ответа 
  // приходит status "success"|"error" и поле news в случае успеха

  if (response.payload.status == "success") {
    console.log(response.payload.news);
  } else {
    console.error(response.payload);
  }
}


onNotification

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

Параметры

Параметр Тип данных Описание
callback function Функция, вызываемая при поступлении сообщения от бота.
В функцию будет передан объект полученного события

Возвращаемое значение

Возвращаемое значение содержит Promise, который исполнится после успешной подписки на уведомления клиентом.

Пример

1
2
3
4
5
6
7
8
9
import * as SDK from "@expressms/smartapp-sdk";

function handleNotification(event) {
  // TODO: обработать event.payload
}

async function test() {
  const response = await SDK.onNotification(handleNotification);
}

sendBotCommand

Метод отправки текстового сообщения с метаданными боту в чате. Этот метод требуется, чтобы отправить в чат с ботом текстовое сообщение со скрытыми метаданными, которые будут видны только боту.

Параметром запроса является объект с атрибутами.

Параметры

Параметр Тип данных Описание
user_huid string ID бота, которому будет отправлено сообщение
body string Видимый текст сообщения
data object Метаданные, которые увидит только бот

Возвращаемое значение

Возвращаемое значение содержит Promise, который исполнится после успешной отправки сообщения.

Пример

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import * as SDK from "@expressms/smartapp-sdk";

async function test() {
  await SDK.sendBotCommand({
    user_huid: "31909635-3499-4163-90f4-55f7336816e2",
    body: "привет, бот!",
    data: {
      id: 1248,
    },
  });
}