Как подключить пользовательский аккаунт Telegram к webhook: код и QR
Чтобы подключить существующий пользовательский аккаунт Telegram к webhook, получите собственные api_id и api_hash, зарегистрируйте webhook до начала авторизации, создайте messaging account Telegram в UnifyPort и завершите вход по коду или QR. Для входа по коду нужен номер телефона, а Telegram может запросить пароль двухэтапной аутентификации. Для QR тоже нужны API-реквизиты, но вход подтверждает владелец аккаунта в уже авторизованном приложении Telegram.
Главное
- Пользовательский аккаунт подключается с помощью
api_idиapi_hash, а не bot token от BotFather. - Webhook следует создать первым, чтобы принимать события авторизации и новые сообщения.
- Выбирайте
auth_mode: "code", если оператор может ввести код Telegram, иauth_mode: "qrcode", если удобнее подтвердить вход в действующем приложении. api_hash, коды, пароль двухэтапной аутентификации, QR, API key иsigning_secretявляются секретами.- После авторизации обрабатывайте только проверенные события
message.receivedс направлением inbound.
Если модель реквизитов пока неясна, сначала прочитайте сравнение Telegram API ID/API hash и bot token.
Полная настройка webhook для пользовательского аккаунта Telegram
У решения четыре границы: реквизиты приложения Telegram, контролируемый вами получатель, messaging account UnifyPort и интерактивная авторизация. Такое разделение упрощает диагностику.
1. Получите реквизиты собственного приложения Telegram
Официальная инструкция Telegram указывает, что для авторизации пользователя нужны api_id и api_hash. Создайте их в API development tools на my.telegram.org. Храните hash в менеджере секретов, а не в репозитории или журналах.
Это не Bot API. Telegram описывает официальный Bot API как HTTP-интерфейс для ботов. Если нужен отдельный бот и его команды, используйте официальный путь. Если нужно подключить существующий пользовательский аккаунт или направить его входящие сообщения в общий обработчик с другими каналами, подходит описанный здесь неофициальный интерфейс.
Если проект использует демонстрационный или опубликованный application ID, сначала проверьте его происхождение. Инструкция по восстановлению после API_ID_PUBLISHED_FLOOD поможет заменить неподходящие реквизиты, не раскрывая новые.
2. Зарегистрируйте подписанный webhook до входа
У UnifyPort нет REST API для чтения истории сообщений и гарантированного повторного получения пропущенных payload. Поэтому получатель должен работать заранее и сохранять нужные события при поступлении.
curl -X POST https://api.unifyport.ai/v1/webhook-endpoints \
-H "X-Api-Key: $UNIFYPORT_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"url\": \"$PUBLIC_WEBHOOK_URL\",
\"status\": \"active\",
\"subscribed_events\": [\"message.received\", \"account.auth.required\", \"account.auth.succeeded\", \"account.auth.failed\", \"account.status.updated\"],
\"signing_secret\": \"$WEBHOOK_SIGNING_SECRET\"
}"
Точный контракт приведён на странице Create webhook endpoint. При включённой подписи проверяйте X-Device-Signature: это шестнадцатеричный HMAC-SHA256 от строки, составленной из X-Device-Timestamp, точки и необработанного тела запроса. Руководство по HMAC, повторам и защите от повторного воспроизведения объясняет работу с raw body, временной меткой и идемпотентностью.
3A. Авторизация по коду
При создании аккаунта передайте provider_data.api_id, provider_data.api_hash и provider_data.phone:
curl -X POST https://api.unifyport.ai/v1/accounts \
-H "X-Api-Key: $UNIFYPORT_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"Telegram Support\",
\"provider\": \"telegram\",
\"region\": \"global\",
\"status\": \"active\",
\"auth_mode\": \"code\",
\"capabilities\": [\"send_message\", \"receive_message\"],
\"provider_data\": {
\"api_id\": $TELEGRAM_API_ID,
\"api_hash\": \"$TELEGRAM_API_HASH\",
\"phone\": \"$TELEGRAM_PHONE\"
}
}"
Сохраните id аккаунта из ответа, запустите вход и передайте полученный от Telegram код:
curl -X POST "https://api.unifyport.ai/v1/accounts/$ACCOUNT_ID/auth/start" \
-H "X-Api-Key: $UNIFYPORT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
curl -X POST "https://api.unifyport.ai/v1/accounts/$ACCOUNT_ID/auth/code" \
-H "X-Api-Key: $UNIFYPORT_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"code\": \"$TELEGRAM_LOGIN_CODE\"}"
Официальная документация авторизации Telegram описывает дополнительный этап 2FA. Отправляйте пароль в /v1/accounts/{account_id}/auth/password только после перехода состояния UnifyPort в awaiting_password. Не записывайте пароль в журналы.
3B. Авторизация по QR
Для QR создайте аккаунт с auth_mode: "qrcode", provider_data.api_id и provider_data.api_hash. Поле phone для этого режима не требуется. Запустите процесс:
curl -X POST "https://api.unifyport.ai/v1/accounts/$ACCOUNT_ID/auth/qr/start" \
-H "X-Api-Key: $UNIFYPORT_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Получайте состояние через GET /v1/accounts/{account_id}/auth или проверяйте его запросом POST /v1/accounts/{account_id}/auth/qr/check. Показывайте auth_payload.qr_code только владельцу аккаунта. Согласно официальной спецификации QR-входа Telegram, QR должен быть отсканирован и подтверждён в уже авторизованном приложении, а истёкший token требуется создать заново. Если API вернул новый payload, обновите QR на экране.
Все ветви — код, QR, 2FA и session import — собраны в справочнике авторизации Telegram.
4. Подтвердите состояние и принимайте сообщения
После account.auth.succeeded сверяйте аккаунт через GET /v1/accounts/{account_id}. После успешной авторизации runtime обычно запускается автоматически, однако приложение должно проверять фактический runtime_status, а не предполагать готовность соединения.
Входящее сообщение Telegram приходит в стандартном envelope:
{
"id": "evt_b1a7c3e5f8",
"type": "message.received",
"provider": "telegram",
"account_id": "acc_8c21d0",
"occurred_at": "2026-06-08T12:37:00Z",
"data": {
"conversation": { "id": "5005", "type": "user" },
"sender": { "id": "4004", "type": "user", "name": "Jordan Lee" },
"message": {
"id": "3003",
"text": "Can you check my order?",
"direction": "inbound",
"sent_at": "2026-06-08T12:37:00Z"
},
"event": { "kind": "message_received" }
}
}
Сначала проверьте подпись. Затем маршрутизируйте только события с type равным message.received и data.message.direction равным inbound. Используйте ID события для идемпотентности, возвращайте 2xx на корректную доставку и сохраняйте нужные поля.
Ограничения и выбор подхода
Подключение пользовательского аккаунта не заменяет все сценарии ботов. Для отдельной идентичности бота, команд и интерфейса Telegram для ботов лучше официальный Bot API. Для существующего пользовательского аккаунта или единого обработчика Telegram, WhatsApp, LINE, TikTok, Zalo и X лучше подходит поток UnifyPort.
UnifyPort — неофициальный интерфейс, поэтому поведение и доступность вышестоящего сервиса могут различаться для разных аккаунтов. Необходимо соблюдать Telegram API Terms of Service, а также собственные требования безопасности и конфиденциальности. Реквизиты, QR и session-данные следует показывать только владельцу аккаунта, который завершает вход.
Частые вопросы
Нужен ли Telegram bot token?
Нет. Пользовательский аккаунт использует api_id и api_hash; bot token относится к официальному Bot API.
Нужны ли API ID и API hash для QR-входа?
Да. QR-процесс UnifyPort всё равно требует provider_data.api_id и provider_data.api_hash; меняется только способ подтверждения входа.
Что делать, если Telegram запросил 2FA?
Дождитесь состояния awaiting_password, затем отправьте пароль в /v1/accounts/{account_id}/auth/password. Не сохраняйте его в журнале или открытом виде после запроса.
Когда создавать webhook — до или после подключения?
До подключения. Статусы авторизации и сообщения приходят как события, а повторная отправка пропущенного payload не гарантируется.
Какое событие запускает входящий процесс?
Используйте message.received и проверяйте, что data.message.direction равно inbound. HMAC-подпись нужно проверить до разбора данных и выполнения действий.
Следующий шаг
Откройте руководство по авторизации Telegram и выберите код или QR. Сначала зарегистрируйте защищённый webhook, затем создайте messaging account и завершите вход.
Источники
Официальные материалы проверены 2026-08-13: