Отправка сообщений с сайта
После инициализации передайте 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.