Черновик вместо отправки
Отправленное сообщение уже прочитали. Если агент написал не в тот чат, не тем тоном или не тому сотруднику, удаление не спасает: уведомление ушло, в ленте остался след, а у собеседника осталось впечатление.
Черновик убирает необратимость. Агент готовит текст, тот появляется в поле ввода нужного чата, и дальше решает сотрудник: дописать, отправить или стереть.
Работает только личным токеном
Ограничение, от которого зависит вся конструкция: боту черновики недоступны. Скоупы drafts:read и drafts:write токенам ботов не выдаются, и с токеном бота метод ответит 403.
Значит агент действует личным токеном того сотрудника, за которого пишет. Такой токен даёт вход из CLI, и черновик появляется там же, где сотрудник увидел бы свой собственный.
Это не обход ограничения, а его смысл. Черновик приватен: его не видит ни собеседник, ни администратор пространства. Агент кладёт заготовку в черновик того самого сотрудника, который потом её и отправит. Значит, и отвечать за отправленное будет он.
Черновик появляется в поле ввода чата
Черновик кладётся в беседу одним запросом:
Сотрудник открывает чат — текст уже в поле ввода, как будто он сам его набрал. Дальше обычная работа: поправить, дописать, отправить.
Чтобы черновик ушёл ответом на конкретное сообщение, добавьте --parent-message-id. Сообщение должно быть в том же чате.
Что должен знать агент
На повторное создание приходит 409. Номер уже существующего черновика придёт в errors[].payload.draft_id. Правильная реакция — не повторять запрос, а дописать существующий методом PUTРедактирование черновика. Агент, который на 409 пробует снова, будет биться в ту же ошибку.
Черновик перезаписывается целиком по переданным полям. Прислали content — заменится текст, вложения останутся. Прислали пустой files — вложения снимутся. Проверки на то, что черновик успел поправить сам сотрудник, нет: побеждает последняя запись. Поэтому переписывать заготовку вслепую, когда сотрудник уже мог её открыть, не стоит — сначала прочитайте её методом GETИнформация о черновике.
Свои черновики агент видит списком — GETСписок черновиков. Полезно, чтобы не плодить заготовки и понимать, что уже подготовлено.
Отправить черновик запросом нельзя. Метода «отправить черновик» в API нет: отправка — это обычное POSTНовое сообщение, а черновик после неё убирают методом DELETEУдаление черновика. Так же работает и интерфейс, когда сотрудник нажимает «Отправить сейчас». Для приёма это не ограничение, а его суть: кнопку нажимает сотрудник.
Черновик не создаёт уведомления. Сотрудник находит заготовку в поле ввода чата и в разделе «Черновики», но Пачка не сообщает, что она там появилась. Сказать, что готово и в каком чате, — задача той стороны, которая черновик положила.
Отложенное сообщение
У того же метода есть поле schedule. С ним получается уже не черновик: сообщение уйдёт само в назначенное время, и сотрудник не увидит его до отправки. Дописывать и нажимать «Отправить» будет некому, поэтому текст должен быть готов сразу.
Внутри schedule три поля. start_date — первая отправка, и из неё же берутся время суток, число месяца и день недели, по которым дальше строится повтор. repetition — правило повтора. Необязательная end_date обрывает повтор после названной даты, без неё он идёт бессрочно.
Чтобы сообщение ушло однократно, передайте в repetition.interval значение once. Для повтора есть daily, weekly, monthly и более редкие периодичности вплоть до yearly. У недельного повтора дни задаются списком days, где 0 — воскресенье. У месячного вместо числа можно указать порядковый день недели: nth_day от 1 до 4, а 5 означает последний. Так получается «каждый последний вторник месяца».
Сотрудник видит такие сообщения не в поле ввода, а в отдельном разделе «Отложенные», и может там открыть, поправить или удалить любое.
Разница с черновиком принципиальная. «Подготовь ответ клиенту, я проверю» — черновик. «Напомни команде в понедельник утром» — отложенное сообщение. Путать их не стоит: во втором случае проверить текст будет некому.
Превратить отложенное сообщение обратно в черновик нельзя, и отменить отправку тоже можно только удалением: снять расписание правкой не выйдет, метод ответит 422.
Ограничения
- Обычный черновик в чате, треде или личной переписке может быть только один
- Отложенных сообщений на один чат — до 50
- Вложений в черновике — до 10
- Пустой черновик создать нельзя: нужен либо текст, либо вложения