Шлюз

Документация 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/qrQR для входа, 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 пока нет.