Разработка мобильного чат-бота для Одноклассников
OK API выдаёт 403 Forbidden при первом же запросе, если не понять тонкость с форматом подписи. Большинство проектов спотыкаются ещё на этапе аутентификации — до реальной логики бота дело не доходит неделями.
Как устроена интеграция с OK API
Одноклассники используют собственную схему подписи запросов. Каждый вызов к api.ok.ru/fb.do требует вычисления MD5-хэша от конкатенации отсортированных параметров + сессионного ключа + секрета приложения. Пропустишь сортировку — подпись неверна, ответ invalid_session.
Мобильное приложение работает с ботом через промежуточный сервер: клиент отправляет сообщение → сервер получает webhook от OK → обрабатывает логику → отвечает через messages.send. Хранить application_secret_key на устройстве нельзя.
Webhook-событие от OK приходит в формате:
{
"type": "NEW_MESSAGE",
"senderId": "123456789",
"groupId": "70000000000001",
"object": {
"body": "Привет",
"mid": "MESSAGE_ID"
}
}
На стороне мобильного приложения это обычный REST-клиент: Retrofit на Android или Alamofire на iOS, который опрашивает ваш сервер или подключается через WebSocket для получения ответов в реальном времени.
Что реально нужно реализовать
Авторизация через OK OAuth. Если бот действует от имени пользователя (не группы), нужен access_token с правами MESSAGES. Мобильный SDK OK для Android (one-sdk-android) упрощает OAuth-флоу, но для кастомного UX придётся использовать WebView с перехватом redirect URI.
Рассылки по подписчикам группы. notifications.sendSimple работает только если пользователь вступил во взаимодействие с группой. Попытка слать без предварительного контакта → user_not_invited_to_group. Это ограничение платформы, обходить нельзя.
Автоответы в группе. Бот мониторит GROUP_MESSAGE_NEW через Long Polling или Callback API. Callback API надёжнее — Long Polling требует держать постоянное соединение, что на мобильном сервере неоптимально.
Процесс работы
Регистрация приложения в OK Dev Center, настройка прав группы и webhook-endpoint.
Серверная часть: обработка подписи запросов OK, роутинг входящих событий, хранение диалогов.
Мобильный клиент: UI чата (RecyclerView + DiffUtil на Android, UICollectionView с compositional layout на iOS), интеграция с вашим API.
Тестирование на реальных аккаунтах OK — эмулятор здесь не помогает, нужны живые профили.
Ориентиры по срокам
Базовый бот с автоответами в группе и мобильным интерфейсом — 3–5 дней. Если нужны рассылки, аналитика диалогов, интеграция с CRM — 2–3 недели.







