Гайд 05из 06

Автоматизации: письмо → задача и вебхуки

Превращаем письма в задачи по адресу списка, настраиваем пересылку правилом, подключаем вебхук с подписью HMAC и создаём задачи через REST API.

Время
15 минут
Шаги
§ 01–07
Уровень
Для администратора
Начать с § 01тем, кто связывает DoneBy с почтой и своими системами
Схема автоматизации на экране

Что понадобится

проверьте до начала
  • Тариф «Команда» или «Бизнес»: REST API и вебхуки есть только в них — сравнение на странице Тарифы
  • Роль администратора: интеграции настраивает он
  • Сервер, который принимает POST-запросы по HTTPS
  • Немного терминала — примеры на curl и Node.js
§ 01Шаг 1 из 7 · ≈ 1 мин

Скопируйте адрес списка для писем

У каждого списка есть свой адрес вида add+код@doneby.app. Откройте список, нажмите ⋯ → Письмо → задача и скопируйте адрес.

Относитесь к адресу как к паролю: письмо с любого ящика на этот адрес станет задачей. Не публикуйте его на сайте и в рассылках.

Офис и бухгалтерия
Настройки списка
ОбщееПисьмо → задачаДоступ

Тема письма станет названием задачи, текст — описанием, файлы — вложениями.

add+k7f3q2@doneby.appСкопировать
Последнее письмо: вчера, 18:04 — «Счёт №214 за хостинг»
  1. Адрес списка
  2. Скопировать
§ 02Шаг 2 из 7 · ≈ 2 мин

Перешлите письмо — получите задачу

Отправьте или перешлите письмо на этот адрес. Тема письма станет названием задачи, текст — описанием, файлы — вложениями. Задача появится в том списке, к которому привязан адрес.

Так удобно собирать счета, заявки с сайта и письма из серии «надо не забыть ответить».

Комуadd+k7f3q2@doneby.app
ТемаСчёт №214 за хостинг — оплатить до пятницы
Добрый день! Направляем счёт за хостинг и домены на следующий месяц. Оплатить, пожалуйста, до пятницы.
schet-214.pdf112 КБ
1Счёт №214 за хостинг — оплатить до пятницы
Офис и бухгалтерияиз письма
2Описание

Добрый день! Направляем счёт за хостинг и домены на следующий месяц…

3Вложения · 1
schet-214.pdf
Срок можно поставить сразу: пт, 9 окт
  1. Тема → название
  2. Текст → описание
  3. Файл → вложение
§ 03Шаг 3 из 7 · ≈ 2 мин

Настройте пересылку правилом в почте

Чтобы не пересылать руками, создайте правило в своём почтовом ящике: например, все письма от бухгалтерии с вложением — пересылать на адрес списка «Офис и бухгалтерия». Правила есть в любом почтовом сервисе, обычно в разделе «Фильтры».

Новое правилов вашем почтовом ящике
Если
Отправительсодержитbuh@
иЕсть вложение
То
Переслать наadd+k7f3q2@doneby.app
ОтменаСоздать правило
  1. Условие
  2. Переслать на адрес списка
§ 04Шаг 4 из 7 · ≈ 2 мин

Подключите вебхук

Вебхук отправляет на ваш сервер POST-запрос, когда в DoneBy что-то происходит. Откройте Настройки пространства → Интеграции → Вебхуки, укажите адрес и отметьте события. Всего их 10: task.created, task.updated, task.completed, task.reopened, task.deleted, task.due_soon, comment.created, list.created, list.archived, member.joined.

На тарифе «Команда» можно подключить до 20 адресов, на тарифе «Бизнес» — до 100 адресов.

Интеграции · Новый вебхук
Адрес
https://hooks.example.com/doneby
События · 3 из 10
task.createdtask.updatedtask.completedtask.reopenedtask.deletedtask.due_sooncomment.createdlist.createdlist.archivedmember.joined
Секрет для подписи
••••••••••••••••••••3f9a
HMAC-SHA256, заголовок X-DoneBy-Signature
Тестовое событиеСохранить
  1. Адрес вашего сервера
  2. События
  3. Секрет для подписи
§ 05Шаг 5 из 7 · ≈ 3 мин

Проверьте подпись запроса

Каждая доставка подписана HMAC-SHA256 секретом вебхука, подпись — в заголовке X-DoneBy-Signature. Проверяйте её до того, как что-то делать с телом запроса, — иначе кто угодно сможет прислать вам «выполненную задачу».

server.js — проверка подписи
  1. import crypto from 'node:crypto';
  2. import http from 'node:http';
  3. const SECRET = process.env.DONEBY_WEBHOOK_SECRET;
  4. http.createServer((req, res) => {
  5. let raw = '';
  6. req.on('data', (chunk) => { raw += chunk; });
  7. req.on('end', () => {
  8. const got = String(req.headers['x-doneby-signature'] || '');
  9. const want = crypto.createHmac('sha256', SECRET).update(raw).digest('hex');
  10. const ok = got.length === want.length &&
  11. crypto.timingSafeEqual(Buffer.from(got), Buffer.from(want));
  12. if (!ok) { res.writeHead(401); return res.end(); }
  13. handle(JSON.parse(raw));
  14. res.writeHead(200);
  15. res.end();
  16. });
  17. }).listen(8080);

Формат подписи и примеры на других языках — в разделе Подпись и повторы.

POSThttps://hooks.example.com/donebytask.completed
Заголовки
Content-Typeapplication/json
X-DoneBy-Signature9f2c1d84b07e5a63c4f1a2d9e8b70c35…
Тело
{
  "event": "task.completed",
  "task": {
    "title": "Отправить клиенту смету по каталогу",
    "list": "Клиент: магазин чая"
  }
}
200 OKподпись совпала · ответ за 84 мс
  1. Заголовок с подписью
  2. Ответ вашего сервера
§ 06Шаг 6 из 7 · ≈ 1 мин

Разберитесь с повторами доставки

Если ваш сервер не ответил кодом 2xx, DoneBy повторит доставку — через 1 мин, 5 мин, 30 мин, 2 ч, 12 ч. Попытки видны в журнале доставок вебхука, с кодом ответа и временем.

Из-за повторов одно событие может прийти дважды — например, если сервер обработал запрос, но не успел ответить. Сохраняйте идентификатор доставки и пропускайте уже обработанные.

Журнал доставок
hooks.example.com/doneby
повторы: 1 мин → 5 мин → 30 мин → 2 ч → 12 ч
14:02:05task.created500попытка 2 из 6повтор через 5 мин
14:01:05task.created500попытка 1 из 6
13:57:40task.updated20091 мс
13:42:11task.completed20084 мс
  1. Неудачная попытка
  2. Следующий повтор
§ 07Шаг 7 из 7 · ≈ 4 мин

Создавайте задачи через API

Обратный путь — REST API: задачи из CRM, формы на сайте или своего скрипта. Создайте токен в Настройки → API-токены: он начинается с dbp_, права можно ограничить только тем, что нужно интеграции.

Создать задачу
  1. curl -X POST https://doneby.app/api/v1/tasks \
  2. -H "Authorization: Bearer dbp_…" \
  3. -H "Content-Type: application/json" \
  4. -d '{"title": "Перезвонить по заявке с сайта", "list_id": "…"}'

Лимит — 300 запросов в минуту на тарифе «Команда» и 1200 на тарифе «Бизнес». Все методы и поля — в разделах REST API и Задачи в API.

Новый API-токен
Название
CRM → задачи
Права
Задачичтение и изменение
Подзадачичтение и изменение
Спискитолько чтение
Комментариинет доступа
Участникинет доступа
Токен
dbp_8Kq2v•••••••••••f9ZaСкопировать
Храните как пароль — в переменных окружения, не в коде
  1. Название токена
  2. Права токена
  3. Сам токен
Итоготмечено 0 из 7

Что получилось

Вернуться к § 01
  • Письма превращаются в задачи по адресу списка
  • Пересылка работает правилом в почте, без ручной работы
  • Вебхук доставляет события на ваш сервер, подпись проверяется
  • Повторные доставки обрабатываются без дублей
  • Внешние системы создают задачи через REST API
отметьте все 7 шагов — и здесь появится штамп
Купон · гайд 05

Пройдите гайд на своих задачах

Регистрация занимает минуту, тариф выбирается в кабинете. Онлайн-оплата подключается — пока оформляем подписку по почте или по счёту.