На этой страницеAPI composer
Черновик сообщения
Прочитайте текущий черновик и замените выделение с проверкой версии.
API composer
Для чтения нужен composer.read / activeComposer, для замены — composer.transform / activeComposer. Операции используют текущий чат и явное действие пользователя.
Получить черновик
const draft = await api.composer.getActiveDraft();
if (!draft) return;
Результат содержит handle, непрозрачную строку revision, text, selection, entities, entitiesComplete и plainTextComplete.
interface TextRange {
start: number;
end: number;
}
Индексы выделения измеряются в UTF-16, как у JavaScript String.slice.
Заменить выделение
const draft = await api.composer.getActiveDraft();
if (!draft) return;
await api.composer.replaceSelection({
composer: draft.handle,
expectedRevision: draft.revision,
range: draft.selection,
text: "Мой шаблон"
});
Без range используется захваченное выделение. Это изменение локального поля ввода, а не отправка сообщения.
Защита от устаревших данных
Пользователь может изменить текст, чат или выделение между чтением и применением. Нативный адаптер сравнивает черновик перед записью. Не вычисляйте следующую revision самостоятельно и не повторяйте действие со старым handle.
Форматированный текст
Снимок не гарантирует полноту entities и структуры rich content. Не интерпретируйте пустой массив entities как доказательство безопасности замены сложного черновика. Адаптер может отказаться от изменения, если не способен сохранить нужную структуру.
Рабочий пример — templates, очищение ссылки — quiet-links из SDK.