LiveCEO · channel research · 22 июля 2026

WhatsApp и iMessage: роадмап подключения

Что делать по шагам, где подводные камни и как следить за трейд-оффами.

Engineering source of truth: ai_docs/research-whatsapp-imessage-channels.md

WhatsApp — бот

Только режим «вендора»

Условия Meta запрещают AI-провайдерам работать на платформе. Аккаунт должен принадлежать клиенту — значит, self-serve пропадает.

WhatsApp — импорт истории

Практически нет

API истории не существует. Единственный бэкфилл отдаёт 180 дней клиентского инбокса 1:1 — без групп. Остальные пути банят номер.

iMessage

Агент на Mac или ничего

Вердикт не изменился, но теперь с ценой: 6–10 недель на v1 и 2–4 недели в год на поддержку, бессрочно.

Если цель — канал «сотрудник спрашивает с телефона», дешевле бот в Teams.

Те же ~14 человеко-дней, но $0 за сообщение, безлимит, внутри тенанта клиента — без Meta, без операторов, без верификаций, без 24-часового окна. А перед любым следующим каналом стоит вынести адаптер: чат-логика уже трижды скопирована руками, и это уже приводило к продовому инциденту.

WhatsApp и iMessage: роадмап подключения

Дата: 2026-07-22. Задача владельца: «что нужно, чтобы подключить WhatsApp и iMessage». Это план работ, а не реализация — в этой ветке ни один канал не написан.

Дополняет research-personal-messaging-ingestion.md (2026-07-15), где уже разобран iMessage и построен Telegram Personal. Здесь — WhatsApp с нуля и пересмотр трёх устаревших утверждений по iMessage.

Легенда достоверности: ✅ проверено вторым агентом по первоисточнику · 📄 цитата из документа Meta/Apple/суда (один проход) · 📰 вторичный источник · 📊 оценка, не факт.


Коротко

КаналМожно ли подключитьЧто реально блокирует
WhatsApp — ботДа, но только в режиме «вендора» (аккаунт принадлежит клиенту)Условия Meta запрещают AI-провайдерам работать на платформе. Это контракт, а не техника
WhatsApp — импорт историиПрактически нетAPI истории не существует. Единственный бэкфилл отдаёт клиентский инбокс 1:1, не внутренние чаты
iMessageДа, но только через агент на MacНет облачного API. Нужно подписанное нативное приложение и его поддержка каждый год

Если нужен канал «сотрудник спрашивает с телефона» — самый дешёвый путь не WhatsApp, а бот в Microsoft Teams: $0 за сообщение, безлимит, внутри тенанта клиента, без Meta, без операторов, без верификаций и окон. Трудозатраты те же ~14 человеко-дней. (цены Azure Bot Service 📄)


Развилка 0 — юридический блокер. Читать до всего остального

WhatsApp Business Solution Terms, изменены 2026-03-06 (https://www.whatsapp.com/legal/business-solution-terms) 📄:

Providers and developers of artificial intelligence or machine learning technologies, including but not limited to large language models, generative artificial intelligence platforms, general-purpose artificial intelligence assistants… are strictly prohibited from accessing or using the WhatsApp Business Solution, whether directly or indirectly… when such technologies are the primary (rather than incidental or ancillary) functionality being made available for use, as determined by Meta in its sole discretion; provided, however, that such technologies may be made available to WhatsApp users who have registered phone numbers with a European Economic Area or Brazil country code.

Что это значит для LiveCEO:

Дверь, которая остаётся открытой — следующее предложение того же документа 📄:

Notwithstanding the foregoing, you may retain an AI Provider as your Third Party Service Provider… you may not directly or indirectly allow Business Solution Data… to be used to create, develop, train, or improve any machine learning or artificial intelligence systems…

Отсюда два возможных режима — и выбор делается до первой строчки кода:

РежимКто владеет WABA, номером, верификациейВозможен?
Платформа — LiveCEO подключает клиентов сам, self-serveLiveCEO❌ Прямо запрещён
Вендор — LiveCEO обслуживает аккаунт клиента как его подрядчикКлиент✅ Разрешён оговоркой

Цена режима «вендор»: пропадает self-serve. Каждый клиент проходит верификацию Meta руками. Это ровно то, что North Star продукта называет «zero operator touch».

Задача юристу до старта: оговорка запрещает использовать Business Solution Data для «create, develop, train, or improve» AI-систем. Мы не обучаем модели — мы пишем markdown-вики, которую агент читает в момент ответа. Это retrieval, а не обучение, но формулировка широкая, и импорт переписки в вики, которую читает ассистент — вопрос к юристу, не к инженеру.


WhatsApp — роадмап подключения

Порядок обязателен: этапы 2 и 3 нельзя начать, пока не закрыт этап 1, а код (этап 4) без этапов 2–3 негде тестировать, кроме тестового номера.

Этап 1. Решение (≈0.5 дня, владелец + юрист)

#ДействиеПодводный камень
1.1Выбрать режим «вендор» и зафиксировать, что WABA оформляется на клиентаСоблазн оформить на LiveCEO ради скорости — это прямое нарушение п. 0
1.2Проверить у юриста пункт про Business Solution DataИмпорт переписки в вики — отдельный вопрос, не тот же, что ответы бота
1.3Решить, что делаем с алертамиСпойлер: вне 24-часового окна они не работают, см. трейд-офф T1

Этап 2. Аккаунты на стороне клиента (дни–недели, делает клиент)

⚠️ Это самая слабая часть ресёрча. Агент, которому досталась тема онбординга, вернул заглушки, а бюджет веб-поиска кончился раньше, чем её удалось переделать. Последовательность ниже — стандартный флоу Meta, лид-таймы не подтверждены первоисточником в этой работе. Проверять перед тем, как давать клиенту сроки.

#ДействиеКтоПодводный камень
2.1Создать Meta Business PortfolioКлиент
2.2Пройти Business Verification (документы юрлица)КлиентБез верификации лимит остаётся 250 получателей/24ч ✅ и потолок шаблонов 250 вместо 6000 ✅
2.3Завести WhatsApp Business Account (WABA)Клиент
2.4Выделить отдельный телефонный номерКлиентНомер не должен быть привязан к действующему аккаунту WhatsApp. Забрать номер у живого корпоративного WhatsApp = сломать людям текущую переписку
2.5Пройти проверку display nameКлиентОтклоняется за несоответствие названию юрлица
2.6Выдать LiveCEO доступ к активам как Third Party Service ProviderКлиентЭто и есть юридическое основание из п. 0 — не пропускать

Лимиты, которые точно известны ✅ (изменения от 2025-10-07, документация): лимиты считаются на портфолио, а не на номер; старт — 250 получателей/24ч; следующий уровень 2 000 даётся за business verification или за 2 000 доставленных качественных шаблонов уникальным номерам за 30 дней; статус «Flagged» отменён; автоповышение проверяется каждые 6 часов.

Для Q&A-бота эти лимиты не важны: они ограничивают только сообщения вне окна.

Этап 3. Технический доступ (≈1–2 дня, LiveCEO)

#ДействиеПодводный камень
3.1Создать Meta App, добавить продукт WhatsApp
3.2Забрать App Secret — им подписываются вебхукиЭто 5-е поле креденшла; у Telegram он один
3.3Создать System User и постоянный токен с правами whatsapp_business_messaging, whatsapp_business_managementВременные токены живут 24 часа — на них нельзя запускаться
3.4Настроить вебхук: ответить на GET с hub.mode/hub.verify_token/hub.challenge, вернув hub.challenge plain textЭто третий, новый паттерн регистрации — не как у Telegram (вызов API) и не как у Slack (challenge в POST-теле). Готового кода в репозитории нет
3.5Проверить подпись X-Hub-Signature-256 (HMAC-SHA256 по сырому телу)Структурно совпадает со Slack — src/lib/slackSig.ts (62 строки) переносится почти дословно
3.6Прогнать сквозной тест на тестовом номере, потом переключить на боевой

Этап 4. Код в LiveCEO (≈14 человеко-дней 📊)

Канал в этом репозитории — не плагин. Точка расширения (OtherSourceIngester, src/lib/ingesterRegistry.ts:93-95) существует только для импорта источников, не для чатов. Telegram и Slack — параллельные рукописные реализации.

#Что писатьДней 📊Откуда копировать
4.1Вебхук-роут2.0src/app/api/webhooks/telegram/route.ts (440 строк)
4.2Исходящий клиент + логика 24ч окна1.5src/lib/telegramBot.ts (105) — окно новое, аналога нет
4.3Форматтер2.0src/lib/slackFormat.ts (519) — диалект маркерный, как в Slack
4.4Таблица org_whatsapp_bots + WHATSAPP_KEY_ENC_KEY + CRUD1.5src/lib/secretBox.ts, db.ts:1790-1899
4.5Settings UI (5 полей вместо одного токена)2.0SettingsView.tsx:1209-1441
4.6whatsapp_links — привязка номера к сотруднику1.0telegram_links, scripts/init-db.sql:1216-1229
4.7Алерты notifyWhatsApp с честной обработкой закрытого окна1.0alertNotify.ts:41-132
4.8Тесты1.5test/telegramFormat.test.ts
4.9Сквозная проверка, документация1.5

Хорошая новость по 4.6: чат WhatsApp — это 1:1 с номером телефона, структурно как chat_id у Telegram, а не как общий канал Slack. Поэтому WhatsApp не унаследует дыру Slack, где для orgs с управлением доступом бот жёстко отказывает (src/app/api/webhooks/slack/route.ts:361-376), а пуш алертов подавлен целиком (src/lib/alertNotify.ts:233-250).

Плохая новость по 4.3: в WhatsApp нет ссылок с текстом-якорем. Сегодня telegramFormat.ts:76-88 превращает [label](url) в настоящий <a href>. В WhatsApp каждая ссылка на источник в вики превратится в голый URL внутри текста. Для продукта, ценность которого — ответы со ссылками на источники, это заметная деградация.

Этап 4-альтернатива. Сначала вынести адаптер (≈22.5 дня 📊)

Каждый рукописный канал стоит ~2 400 строк в ~15–20 файлах: Telegram ~2 400, Slack ~2 370. Совпадение и есть доказательство — общего адаптера нет, каждый канал выводит одну и ту же форму заново.

ПутьЧеловеко-дней 📊
WhatsApp как 5-я копия~14
Вынести адаптер + перевести на него Telegram и Slack + WhatsApp~22.5 (+8.5)

Окупаемость +8.5 дней — на втором канале после WhatsApp. Но у рефакторинга есть и самостоятельный аргумент: src/lib/chatGate.ts:1-7 прямо описывает уже случившийся продовый инцидент — руками скопированные предикаты разъехались и на несколько дней закрыли оргам чат.

Этап 5. Приёмка перед запуском


WhatsApp — импорт истории. Что реально возможно

Общего API истории нет. У ресурса messages единственный метод — POST ✅. Документация Graph API говорит прямо ✅:

You will not be able to query historical webhook event notification data, so be sure to capture and store any webhook payload content that you want to keep.

Сообщения Cloud API хранятся у Meta максимум 30 дней ради ретрансляции, без эндпоинта на чтение 📄. Для обычного и Business-приложения сквозное шифрование означает, что у Meta читаемого контента нет вообще — поэтому отчёт «Request account info» дословно сообщает: «This report does not include your messages» 📄.

Единственный настоящий бэкфилл — Coexistence ✅ (документация):

ПараметрЗначение
Глубинадо 180 дней
Что входиттолько чаты 1:1 — групповые исключены полностью 📄
Медиатолько за последние 14 дней, остальное потеряно навсегда 📄
Как отдаётсяодноразовый поток вебхуков в 3 фазы, не запрашиваемый эндпоинт
Дедлайнсинхронизация обязана уложиться в 24 часа после онбординга, иначе всё заново 📄

Почему это не решает нашу задачу. Coexistence отдаёт историю номера WhatsApp Business App, то есть клиентский инбокс компании. Это не личные чаты сотрудников, и групповые чаты — где и живёт внутреннее обсуждение — исключены явно. Для «мозга компании» это корпус поддержки клиентов, а не институциональное знание. Источник реальный и легальный, но не тот.


iMessage — роадмап подключения

Вердикт от 2026-07-15 не изменился: агент на Mac или ничего. Ниже — во что это обходится.

Что изменилось с прошлого отчёта

Утверждение (2026-07-15)Статус сейчас
«Messages for Business закрыт для новых партнёров в 2026»Не подтверждается. Страница онбординга Apple по-прежнему описывает открытый путь: заявка → ревью → Integration → Brand Onboarding → Launch 📄. Прежний вывод опирался на один недатированный пост на форуме. Но канал всё равно нерелевантен — он только входящий, бизнес «cannot identify or message customers by phone number alone» 📄
«ЕС не признал iMessage гейткипером, Февр. 2024»Подтверждено и усилено. Суд ЕС 2026-07-08 (дела T-1079/23, T-1080/23, T-214/24) признал жалобу Apple по классификации iMessage неприемлемой 📄. Решение от 12.02.2024 в силе, обязательств по интероперабельности у iMessage нет. Срок на апелляцию — примерно до конца сентября 2026
«текст в macOS 26 лежит в attributedBody, а не в text»✅ Подтверждено. Парсер imessage-exporter жив: v4.2.0 от 2026-06-18, релизы каждые 3–6 недель, поддержка Tahoe 26.5.2 📄

Шаги

#ДействиеСколько 📊Подводный камень
1Apple Developer Program — $99/год 📄дниДля организации нужен D-U-N-S. Официального SLA по срокам проверки Apple не публикует
2Написать агент: Swift, menu-bar + LaunchAgent, чтение chat.db, парсинг typedstream, курсор по max ROWID, HTTPS-выгрузка6–10 недельRust/Tauri/Electron не экономят: FDA, регистрация login item, подпись и нотаризация — требования ОС, а не UI-фреймворка
3Подписать Developer ID + включить Hardened Runtime (обязателен) + нотаризовать notarytool + stapler 📄часыНотаризация быстрая: «most software within 5 minutes, 98% within 15 minutes», лимит 75 отправок/день 📄
4Раздать и получить Full Disk AccessзависитApp Store исключён категорически: MAS требует App Sandbox, а entitlement на чужие данные (com.apple.security.files.all) убран после OS X 10.11 📄
4a— на управляемом парке: PPPC-профиль через MDM (com.apple.TCC.configuration-profile-policy, ключ SystemPolicyAllFiles) 📄Это реальный путь для компании с корпоративными маками
4b— на личном Mac: сотрудник кликает сам в System SettingsНужны права админа: Apple разрешает самостоятельное согласие обычному пользователю только для ListenEvent и ScreenCapture 📄
5Приёмный эндпоинт в LiveCEO, привязанный к орг + человеку~3 дня 📊
6Автообновление Sparkle~2 дня 📊Отдельная пара ключей EdDSA, не связанная с подписью Apple; ротация возможна только если меняется один ключ за раз 📄
7Поддержка: 2–4 недели/год, навсегда 📊ежегодноchat.db — приватная схема без версионирования и без контракта

Предупреждение, которое стоит прочесть до старта

BlueBubbles — ближайший технический аналог этого агента (open source, Full Disk Access, читает chat.db в фоне). Его раздача через Homebrew отключается 2026-09-01, потому что сборка не проходит Gatekeeper: Apple пометила аккаунт разработчика мейнтейнера и подпись сломалась (issue #790 от 2026-04-07, не закрыт) 📰. Отдельно: поломки под macOS 26 у них открыты почти год, минимум шесть issue, а macOS 27 уже в публичной бете 📰.

Читать это так: ежегодный налог на поддержку — наблюдаемый факт, и аккаунт разработчика может быть помечен за софт этой категории. Наш дизайн безопаснее (только чтение, ничего не отправляем, Apple ID не трогаем, устройство не подделываем), но прецедент стоит знать заранее.

Готовой замены нет: Decipher TextMessage ($29.99) — ручной экспорт на одной машине 📄; LeapXpert / TeleMessage / Theta Lake / Smarsh архивируют iMessage для комплаенса, но своей архитектурой, цены не публикуют, вход через demo 📄.


Трейд-оффы и как за ними следить

Главное правило — доктрина репозитория: никаких молчаливых деградаций. Каждый сбой ниже обязан всплывать в логе как ошибка, а не «тихо не отправилось».

#Трейд-оффЧто сломается на практикеСигнал / метрикаГде смотретьПорогДействие
T124-часовое окноАлерт, отправленный позже 24ч после последнего сообщения сотрудника, не доставится. Q&A при этом работает нормальноОшибка отправки вне окнаЛог alert.notify_failed + счётчик отказов исходящихлюбой >0Сразу решить продуктово: либо алерты только в Telegram, либо шаблон со ссылкой на веб
T2Шаблоны не вмещают ответОбход «отправим шаблоном» не работает: тело 1024 символа ✅, в переменных запрещены переводы строк и табы ✅Отклонения шаблоновВебхук message_template_status_update, поле reasonлюбое отклонениеНе пытаться «сделать шаблон пообщее» — это отдельная причина отказа
T3Цена с 2026-10-01Сегодня Q&A-бот стоит $0 (сервисные сообщения бесплатны с 2024-11-01 📄). С 1 октября 2026 Meta начинает брать за них деньги 📄Счёт MetaBilling + pricing_analyticsпоявление ненулевого счётаПересчитать юнит-экономику. Тарифы Meta обещала опубликовать до 2026-09-01, на дату работы их нет
T4Качество номераПадение рейтинга → ограничения на исходящиеphone_number_quality_updateВебхук + WhatsApp ManagerжёлтыйРазбираться сразу; статус «Flagged» отменён с 2025-10-07 ✅, но рейтинг остался
T5Лимиты рассылкиУпор в лимит блокирует сообщения вне окна; ответы в окне продолжают работатьmax_daily_conversations_per_businessВебхук (заменил старое поле на номер) ✅приближение к тируДля Q&A не критично — но алерты упрутся первыми
T6Трактовка «primary functionality»Meta может в одностороннем порядке решить, что мы AI Provider, и отключить аккаунт клиентаМетрики нет. Это контрактный рискРевизия условийизменение редакции TermsПоставить календарное напоминание на пересмотр business-solution-terms; аккаунт оформлен на клиента — значит и риск на клиенте, это надо проговорить
T7Ссылки без якорейВсе цитаты источников станут голыми URL в текстеКачественный, не метрикаРевью ответовПоказать владельцу реальный ответ до релиза
T8iMessage: релиз macOSКаждый осенний релиз ломает чтение chat.dbРост ошибок парсинга агентомОшибки приёмного эндпоинталюбой всплеск после релиза ОСДержать 2–4 недели/год в плане; следить за релизами imessage-exporter
T9iMessage: аккаунт разработчикаApple может пометить аккаунт → подпись и обновления встают (прецедент BlueBubbles)Сбой нотаризации в CInotarytool в пайплайнепервый отказПлан Б на раздачу заранее
T10Неофициальные клиенты WhatsAppБан номера клиента, без апелляцииНе делать. См. ниже

Вебхуки, на которые подписаться сразу

messages (входящие) · message_template_status_update (T2) · phone_number_quality_update (T4) · account_update / лимиты (T5). Историю вебхуков Meta не отдаёт ✅ — что не сохранили в момент доставки, то потеряно.


Чего не делать

Неофициальные клиенты (Baileys, whatsapp-web.js, WPPConnect, whatsmeow). Технически работают: привязка по QR или 8-символьному коду, затем синхронизация истории 📰. Но это прямое нарушение Terms of Service, где названы реверс-инжиниринг и автоматизированный доступ 📄. Принуждение — техническое, не судебное: в мае 2025 волна банов и предупреждений накрыла пользователей whatsmeow и Baileys без разбора, включая аккаунты с малым объёмом, которые только отвечали на входящие; мейнтейнер закрыл issue как «not planned», потому что решения нет 📰 (whatsmeow#810).

Худший исход здесь — молчаливый бан номера якорного клиента.

Для ориентира, кто есть кто: 2Chat и Wassenger — настоящие сертифицированные BSP на официальном Cloud API. Whapi.cloud, Periskope, TimelinesAI, Unipile, Maytapi — обёртки над неофициальным WhatsApp Web; Maytapi так и пишет на главной: «Unofficial WhatsApp API» 📰.

Путь через DMA не существует. Обязательство по интероперабельности — это статья 7, а не 6(7) 📄, и запросить её может только «поставщик услуг межличностной коммуникации, не использующих номера». LiveCEO таким не является: на другом конце разговора нет человека. Для масштаба: к запуску в ноябре 2025 интеграцию довели ровно двое — BirdyChat и Haiket 📰, а Matrix/Element, реально подходящий проект, так и не выпустил её, назвав условия «economically unviable» 📄.

Локальные базы устройств (msgstore.db.crypt15, ChatStorage.sqlite) расшифровываются, но требуют root, 64-символьного ключа пользователя или незашифрованного локального бэкапа — и недоступны вовсе, если включено сквозное шифрование бэкапов 📰. Это разовый форензик-снимок, а не конвейер.


Итоговые цифры

ЧтоСколько
WhatsApp-бот, как 5-я рукописная копия~14 человеко-дней 📊
То же, но сначала вынести адаптер и перевести Telegram + Slack~22.5 человеко-дней 📊
Стоимость сообщений сегодня$0 (сервисные бесплатны с 2024-11-01) 📄
Стоимость сообщений с 2026-10-01по прайсу за сообщение, тарифы ещё не опубликованы 📄
iMessage: агент v16–10 недель 📊 + $99/год 📄
iMessage: поддержка2–4 недели в год, бессрочно 📊
Teams-бот (альтернатива)~14 человеко-дней 📊, $0 за сообщение 📄

Достоверность этой работы

Исследование выполнено веером из 11 параллельных агентов по первоисточникам, с последующей состязательной проверкой, где второй агент обязан был опровергнуть каждое ключевое утверждение.

Проверка прошла не полностью: аккаунт упёрся в месячный лимит расходов, из 139 агентов упало 95. Состязательную проверку прошли механика Cloud API и раздел про окно и шаблоны (отсюда большинство значков ✅). Не прошли: цены, iMessage, Mac-агент, неофициальный импорт, DMA, альтернативы — там стоит 📄 или 📰.

Две темы вернули мусор вместо результата и переделаны вручную: пункт про AI-политику (цитата в развилке 0 получена напрямую с whatsapp.com) и онбординг — из-за него этап 2 помечен предупреждением, лид-таймы там не подтверждены.

Отдельно: ни одна долларовая цифра не является цитатой Meta. Их прайс отдаётся JS-подгружаемым CSV/PDF, который не достаётся ни одним способом (проверено и на живой странице, и на снимке Wayback от 2026-06-20: ноль тегов <table>, ноль ссылок на .csv/.pdf в ~1.2 МБ HTML) 📄.


Ссылки

Meta / WhatsApp. Business Solution Terms · Terms of Service · Messaging Policy · Messages API · Webhooks · Отправка и 24ч окно · Компоненты шаблонов · Ревью шаблонов · Цены · Платные сервисные сообщения с 01.10.2026 · history webhook · Coexistence onboarding · Лимиты с 07.10.2025 · Хранение и приватность · Request account info

Apple. Messages framework · App Sandbox · Hardened Runtime · Нотаризация · PPPC / MDM · SMAppService · Стоимость программы · Full Disk Access · Messages for Business — онбординг · Messages for Business — FAQ

Суд ЕС и DMA. Решение 08.07.2026, пресс-релиз 96/26 · Назначение гейткиперов 06.09.2023 · Matrix об условиях Meta

Альтернативы и проекты. Azure Bot Service — цены · Telegram Bot API · imessage-exporter · BlueBubbles issue #790 · whatsmeow issue #810 · Sparkle