enВойти в Senler

Отправка сообщений с сайта

После инициализации передайте message в SenlerWidget.open(...) или SenlerWidget.updateRuntime(...). Это сообщение посетителя, а не сообщение автоматизации.

Подготовьте сообщение

message принимает { text, requestId?, startNewDialog?, autoSend? }. Текст должен быть непустой строкой до 10 000 символов, requestId — непустой строкой до 200 символов. autoSend: true отправляет сообщение после готовности виджета; false или отсутствие параметра только подставляет текст в поле ввода. Для черновика не передавайте requestId: события результата предназначены для автоматической отправки, иначе загрузчик будет ждать отправку и сообщит об ошибке через 10 секунд.

message.startNewDialog: true отправляет сообщение без текущего dialog_id. Не сочетайте создание нового диалога и выбор dialogId в одном вызове: новый диалог имеет приоритет. Остальные параметры.

Отследите отправку и ответ

Если передать message.requestId, скрипт-загрузчик отправляет событие senler-widget:runtime-message-result. Оно связывает запрос сайта с отправкой и ответом без опроса истории.

const requestId = crypto.randomUUID();

window.addEventListener("senler-widget:runtime-message-result", (event) => {
  if (event.detail.request_id !== requestId) return;

  if (event.detail.status === "message_sent") {
    console.log("Диалог", event.detail.dialog_id);
  }

  if (event.detail.status === "answered") {
    console.log("Ответ готов");
  }

  if (["message_send_failed", "message_answer_failed", "preview_failed"].includes(
    event.detail.status,
  )) {
    console.error(event.detail.error_message);
  }
});

SenlerWidget.open({
  message: {
    text: "Сделай текст понятнее.",
    requestId,
    startNewDialog: true,
    autoSend: true,
  },
});

Возможные статусы:

СтатусЗначение
acceptedКонфигурация автоматически отправляемого сообщения принята виджетом, но отправка ещё не началась.
sendingНачалась отправка.
message_sentСообщение отправлено; в событии доступен dialog_id.
answeredОтвет завершён.
message_send_failedСообщение не удалось отправить.
message_answer_failedФормирование ответа завершилось ошибкой.
preview_failedНе удалось сформировать preview для связанного сценария правки.

В detail всегда есть request_id и status, а dialog_id и error_message появляются там, где применимы. Скрипт-загрузчик контролирует два отдельных этапа: у iframe есть 10 секунд, чтобы стать готовым и принять запрос; после передачи у виджета есть ещё 10 секунд, чтобы сообщить о начале отправки. Тайм-аут на любом из этапов приводит к message_send_failed. Диалог можно открыть через SenlerWidget.open({ dialogId }) или SenlerWidget.selectDialog(dialogId).

Для правок текста используйте inline-controller: он сам отслеживает requestId и возвращает готовый preview.