Для разработчиков

Черновик вместо отправки

Отправленное сообщение уже прочитали. Если агент написал не в тот чат, не тем тоном или не тому сотруднику, удаление не спасает: уведомление ушло, в ленте остался след, а у собеседника осталось впечатление.

Черновик убирает необратимость. Агент готовит текст, тот появляется в поле ввода нужного чата, и дальше решает сотрудник: дописать, отправить или стереть.

Работает только личным токеном

Ограничение, от которого зависит вся конструкция: боту черновики недоступны. Скоупы drafts:read и drafts:write токенам ботов не выдаются, и с токеном бота метод ответит 403.

Значит агент действует личным токеном того сотрудника, за которого пишет. Такой токен даёт вход из CLI, и черновик появляется там же, где сотрудник увидел бы свой собственный.

Это не обход ограничения, а его смысл. Черновик приватен: его не видит ни собеседник, ни администратор пространства. Агент кладёт заготовку в черновик того самого сотрудника, который потом её и отправит. Значит, и отвечать за отправленное будет он.

Черновик появляется в поле ввода чата

Черновик кладётся в беседу одним запросом:

Новый черновик
pachca drafts create \  --entity-type=discussion \  --entity-id=334 \  --content='Коллеги, отчёт за неделю готов, прикладываю.' \  --json \  --token YOUR_ACCESS_TOKEN

Сотрудник открывает чат — текст уже в поле ввода, как будто он сам его набрал. Дальше обычная работа: поправить, дописать, отправить.

Чтобы черновик ушёл ответом на конкретное сообщение, добавьте --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
  • Пустой черновик создать нельзя: нужен либо текст, либо вложения