Документация API
Адрес: https://mesapi.it-complete.ru. Токен передаётся в заголовке Authorization, профиль в параметре profile_id.
| Метод | Адрес | Что делает |
|---|---|---|
| POST | /api/profiles | Создать профиль: name, messenger (whatsapp, telegram, max), webhook_url. Для Telegram ещё api_id и api_hash |
| POST | /api/profiles/credentials | Заменить ключи Telegram: api_id, api_hash |
| GET | /api/profiles | Список профилей |
| GET | /api/profiles/status | Статус профиля и период возможной потери |
| POST | /api/profiles/restart | Перезапустить профиль |
| POST | /api/profiles/logout | Выйти из аккаунта и удалить сессию |
| DELETE | /api/profiles | Удалить профиль |
| GET | /api/auth/qr | QR для входа, data-URL с картинкой |
| POST | /api/auth/code/request | Код для входа по номеру: phone. WhatsApp и Telegram |
| POST | /api/auth/code/confirm | Подтвердить вход: code и password. Telegram и MAX |
| GET | /api/auth/history | История входов и выходов |
| GET | /api/capabilities | Что умеет мессенджер этого профиля |
| POST | /api/sync/message/send | Отправить текст и дождаться результата |
| POST | /api/async/message/send | Поставить текст в очередь: timeout_from, timeout_to, ttl |
| POST | /api/sync/message/file/send | Отправить файл: url или b64_file, caption, file_name |
| POST | /api/async/message/file/send | Поставить файл в очередь |
| GET | /api/media/{token} | Скачать файл по ссылке из уведомления |
| GET | /api/events/missed | Список недоставленных событий |
| POST | /api/events/missed/ack | Отметить события обработанными: event_ids |
| POST | /api/webhooks | Добавить адрес уведомлений: url, events |
| GET | /api/webhooks | Список адресов |
| DELETE | /api/webhooks | Удалить адрес: id |
Повтор запроса
Заголовок Idempotency-Key защищает отправку от дублей на 24 часа.
Уведомления
События: incoming_message, outgoing_message_api, outgoing_message_phone, delivery_status, authorization_status, profile_status, restriction_status, incoming_call.
Мы делаем до 8 попыток за 254 секунды: через 0, 2, 6, 14, 30, 62, 126 и 254 секунды, с небольшим отклонением. Успех только при ответе 2xx. Отбрасывайте повторы по event_id, порядок восстанавливайте по sequence.
Проверка подписи: заголовок X-Signature содержит sha256= и HMAC-SHA256 от строки X-Timestamp.тело, ключ — секрет адреса.
$expected = 'sha256=' . hash_hmac('sha256', $_SERVER['HTTP_X_TIMESTAMP'] . '.' . $body, $secret);
hash_equals($expected, $_SERVER['HTTP_X_SIGNATURE']);Если адрес не ответил
После 8 неудач содержимое удаляется. Остаются ID, чат, тип и время, они доступны 30 дней через /api/events/missed. Сам текст можно посмотреть в телефоне.
Поля possible_gap_from и possible_gap_to в статусе профиля показывают период, когда события могли потеряться из-за перезапуска сервиса.
Файлы
Входящий файл приходит ссылкой media_url. Ссылка требует токен и живёт 7 дней или пока файл есть у мессенджера. Заберите нужные файлы сразу.
Ключи Telegram
Для профиля Telegram нужны ваши api_id и api_hash с my.telegram.org. API их не возвращает, а хранятся они зашифрованными.
Получатель
В recipient передаётся номер. Telegram принимает также @username. Для ответа используйте chat_id из уведомления. В WhatsApp он бывает в формате @lid, поэтому в уведомлении есть chat_phone, если номер известен.
Отличие от Wappi
Сервис не хранит сообщения. Истории и поиска по API пока нет.