Как всем известно, в последнее время интернет на улице работает достаточно нестабильно. В определённых регионах ситуация наиболее критическая. Про привычные сервисы я вообще молчу, но спросить что-то у ИИ происходит на регулярной основе. Иногда вопросы, которые возникают в голове, требуют немедленного ответа. Но когда ваш смартфон превращается в сенсорную звонилку - выбор ограничен звонками и смс. Именно со вторым мы и будем работать.
В двух словах схема проста - пишите смс, получаете ответ от ИИ.

Сейчас, с развитием ИИ, при появлении какой-то идеи, исследовательский процесс строится простым образом. Спросить у ИИ, существует ли уже такой продукт. Если нет, узнать, насколько сложно будет его реализовать. И если соотношение сложности к профиту (или просто интересу) оказывается выше определённых субъективных цифр, то реализации быть. Так случилось и тут. Первым пунктом, конечно, была идея. После того, как агент ясно дал понять, что реализовать это вполне возможно, составили архитектуру и план.
К слову, такие сервисы уже существуют, например Voxie AI. Но он в США, и слать туда смс будет дороговато. Плюс неизвестно, как модель дружит с русским языком. Но если у вас есть такая возможность, будет интересно почитать ваш опыт использования в комментариях.
В этой статье нет рекламы никакого сервиса, но всё же укажу, что именно использовал я. Вы можете взять любой аналогичный. Сразу оговорюсь, бОльшая часть работы была проделана с помощью ИИ агента. Проект и реализация не претендуют на технически идеальные и безопасные. Он создавался больше в исследовательских целях.
Что нам понадобится
Второй смартфон на андроиде версии 5+, оптимально 8 - 11
Вторая симка, которая будет принимать смс от вас и отправлять вам ответ от ИИ
VPS в РФ (KVM-виртуализация, 2 vCPU / 2-4 ГБ / 20 ГБ SSD, ubuntu 22 / 24)
Домен
Доступ к интернету на телефоне из п.1
LLM гигачат (бесплатный)
Что взял я:
По пункту 1 у меня завалялась старая Nokia 7 TA-1041, Android 7.1.1, её и взял. На авито подходящий смартфон вполне можно найти за 1-2 т.р.

Сим карту я оформил от т-мобайл. Если оформлять через сайт, есть конструктор тарифов. 0 минут, 0 гб, только пакет безлимитных смс за 49 р./месяц. Пришлось, правда, немного попотеть, чтобы оформить этот тариф, но в итоге получилось.

VPS арендовал от селектел - 2 vCPU - 2 ГБ RAM - 40 ГБ за 400 р./месяц

Домен уже был, приобретал для личного vpn в прошлом году. Подойдёт любой самый дешёвый - 100-200 р./год
Интернет - домашний вай-фай.
LLM был выбран гигачат от сбера по рекомендации агента. Бесплатные 250 млн токенов в год. - 0 р.
Приложение
Наша архитектура выглядит так.

Код был написан за несколько итераций: код - проверка - исправление - проверка - … до тех пор, пока проверка не даст положительное заключение. После полного написания - ревью всего проекта по той же схеме. Стек получился примерно такой - Python, FastAPI, SQLite, Caddy.
Приложение настроено на работу именно с гигачатом от сбера. А мне важно было проверить работоспособность. Суть в том, что при регистрации вы получаете токен. С ним отправляется запрос, и в ответе получаете токен доступа, с которым уже можете отправлять запросы ИИ. Действует этот токен 30 минут. После протухания новый не запрашиваем, пока не придёт смс.
Конфиги
Одно смс на кириллице это максимум 70 символов. Но если их, например, 80, то сообщение склеивается в одно, но платите вы за 2. С тарифом безлимитных смс меня это не особо волнует, но имейте в виду. По-моему, максимальное количество склеиваемых сообщений - 10 штук. И далее мы подходим к конфигам.
system_prompt - “Отвечай по-русски кратко, до 200 символов, без эмодзи и markdown.” Эти 200 символов это условное ограничение, которое модель может проигнорировать и выдать несколько больше.
max_reply_units = 201 А это как раз жёсткий лимит. Сообщение склеивается из частей по 67, т.к. заголовок конкатенации съедает 3 символа.
max_tokens = 500 - лимит ответа гигачата. Тут теоретически лимита нет, но это чтобы он заканчивал мысль и успевал укладываться в наши 200 символов. К слову, у нашего гигачата лимит контекста около 8к.
max_sessions = 10 - лимит живых сессий. Это заложено в нашем коде. Каждая сессия живёт 24ч без активности. Плюсы разных сессий расписывать нет особо смысла. Если хотим переключиться на другую сессию, просто пишем "#2 " и сразу после ваш запрос. При появлении 11 сессии затирается самая давно неактивная и так далее.
history_messages = 10 - лимит сообщений в сессии. Тут, в принципе, как и везде. Модель ничего не помнит про наши прошлые сообщения. Поэтому мы отправляем ей последние 10 сообщений (наших и модели), чтобы напомнить контекст.
Дальше по шагам
Гигачат. Регистрируемся в GigaChat API. Идём в настройки API, получаем ключ авторизации. Сохраняем себе куда-то, он понадобится позже.

Домен. Нам необходимо будет прописать 2 записи DNS. Если у вас уже был домен до этого, можно добавить в него. Я сделал именно так, и они прописались сразу, не пришлось ждать несколько часов. У меня он зарегистрирован на cloudflare. Что важно - Type - A (A-запись сопоставляет поддомен с IPv4-адресом VPS), Proxy status - DNS only (прокси мешает Let’s Encrypt и SSE-соединению телефона), TTL - Auto. Для домена domain.ru прописываем app.domain.ru и sms.domain.ru. И конечно ip вашего VPS.

VPS. После покупки заходим на сервер. Обновляем систему, ставим докер.
apt update && apt upgrade -y curl -fsSL https://get.docker.com | sh
Далее настраиваем фаервол.
ufw allow ssh && ufw default deny incoming # Разрешаем входящий SSH (22) и запрещаем всё остальное входящее по умолчанию. Снаружи останутся только SSH, 80 и 443 ufw default allow outgoing # Разрешаем исходящие (deny сломает apt/docker pull/GigaChat) ufw allow 80/tcp && ufw allow 443/tcp # 80 нам нужен для выпуска и продления сертификатов Let's Encrypt, а 443 для всего остального ufw --force enable # Применяем timedatectl set-ntp true # Включаем NTP. Каждый вебхук подписан с меткой времени, приёмник принимает только в окне ±5 минут от часов сервера. Если дрейф сильнее - все вебхуки отбиваются с 401
Ставим проект, который агент любезно написал, и заполняем креды.
git clone https://github.com/VladSmr/sms-ai-gateway.git /opt/sms-ai-gateway cd /opt/sms-ai-gateway cp config.example.yaml config.yaml cp .env.example .env && nano .env
Более подробно есть в ридми проекта, ссылка в конце статьи.
Запускаем.
! Тут и далее domain заменяем на свой домен
docker compose up -d --build && docker compose ps # 3 healthy + caddy running; app рестартует - это ок (ждёт креды из телефона) curl https://sms.domain.ru/api/3rdparty/v1/health
Телефон. Нам понадобится apk SMS Gateway for Android. Если что, я к нему никакого отношения не имею. А это ссылка на скачивание прямо с телефона - https://github.com/capcom6/android-sms-gateway/releases/download/v1.77.1/app-release.apk (последняя версия на момент написания статьи) Нужна именно app-release.apk, а не app-insecure.apk, т.к. он отдаёт http
Устанавливаем, идём в настройки, облачный сервер, заполняем креды. URL API - https://sms.domain.ru/api/mobile/v1 Приватный токен - GATEWAY_PRIVATE_TOKEN из .env Подключаемся, сразу после сгенерируются имя пользователя и пароль. Сохраняем их себе куда-нибудь.
Снова идём в настройки приложения. Вебхуки, ключ подписи - вставляем GATEWAY_HMAC_SECRET (тот же, что и в .env) Пинг, интервал - 14 мин (840 сек) Система, оптимизация батареи - off. Сообщения, обработка - FIFO (у меня по дефолту стояла LIFO)
Возвращаемся на наш VPS.
Дописываем оставшиеся креды
nano .env # GATEWAY_USERNAME и GATEWAY_PASSWORD из прошлого пункта docker compose up -d app docker compose ps # все 5 стартанули, приложение больше не рестартит curl https://app.domain.ru/healthz # должно быть {“status”:“ok”, …}
Регистрируем вебхуки
set -a; source .env; set +a for EVENT in "sms:received" "sms:delivered" "sms:failed" "system:ping" "app:started"; do curl -X POST -u "$GATEWAY_USERNAME:$GATEWAY_PASSWORD" \ -H "Content-Type: application/json" \ -d "{\"url\": \"https://app.domain.ru/webhook\", \"event\": \"$EVENT\"}" \ https://sms.domain.ru/api/3rdparty/v1/webhooks done
Проверяем, что всё работает. Должно показать все 5 событий
curl -u “GATEWAY_PASSWORD” \ https://sms.domain.ru/api/3rdparty/v1/webhooks
Белый список. В config.yaml в whitelist вписываем свой основной номер, с которого и будем слать смс. Мы же не хотим тратить токены, чтобы ответить МЧС. И вдобавок, если мы будем хранить ПД третьих лиц, об этом необходимо будет уведомить РКН.
Первая смс.
Конечно, у меня уже не первая, но, на удивление, и первая обработалась успешно.
Общаемся с ИИ


А тут вся небольшая статистика за все время тестов

Какие были сложности
На самом деле, как таковых и не было особо.
Первая - уехал по делам, отправил смс, ответа нет. Не знаю, как на других андроидах, но у меня спящий режим включается через 30 минут - это самое большое, что можно поставить. После этого они попадают в буфер, и приложение ретраит их с нарастающим интервалом (14 попыток в течение 45 часов). Решилось легко и просто - в режиме разработчика поставил галочку “не выключать экран”. Нюанс - это работает только во время зарядки. т.е. чтобы оставить телефон, его надо оставлять на зарядке. Если уезжаешь на несколько часов, то проблем никаких. Если оставить его на несколько дней или недель, непонятно, что произойдёт с телефоном, в частности, с аккумулятором.
Вторая проблема - отправил смс, она пришла, телефон отправил ответ, но мне он не пришёл. Писал в поддержку, говорят, всё у нас окей. Погуглил, есть такая вероятность, что новая “не прогретая” симка может вытворять такое из-за антифрод-фильтров оператора, и сообщения застряли у того самого оператора. Но это лишь гипотеза, точная причина так и осталась загадкой. Пока больше не повторялось.
Вторая проблема


В заключение
Этот проект, по сути, пробная версия. И вся его суть - лишь проверка его работоспособности. И он прошёл эту проверку. Можно было бы, например, прикрутить RAG и поиск в интернете. Можно переделать на работу с другим ИИ. А можно и просто поставить это всё на свой номер, поменять промт и переадресовывать общение с кем-то надоедливым. Идеи развития ограничиваются лишь вашим воображением и законами страны, в которой вы проживаете. И не стоит забывать, что все смс ваш оператор может прочитать.
Сам проект лежит тут - https://github.com/VladSmr/sms-ai-gateway
Спасибо за прочтение, буду рад обратной связи.
Комментарии (3)

dontpanicops
10.10.2026 06:32Как вариант можно придумать какую то отечественную обертку для всего этого
Единый MCP или сервис)

DerTosser
10.10.2026 06:32Неправильно ты, дядя Фёдор (с) сообщения настраиваешь. Берешь СМС, прикручиваешь к ним LLM, вставляешь симку, оформленную на твой паспорт... А надо делать свои независимые от больших дядь каналы связи - децентрализованные mesh-сети, LoRA, WiMAX, netsukuku и т. п.
Markscheider
От мысли, что дома осталось устройство с литием внутри, находящееся в активном (не спящем) режиме и стоящее на зарядке, у любого ответственного за ПБ волосы на жопе спине начинают шевелиться.
Как проверка концепции - интересно, но в прод я бы выпускал такое же, но на малинке с убунтой и usb модемом. Библиотеки там точно есть (таким способом делал пересылку смс в корп.мессенджер). И по бюджету недорогой усб-модем типа "свисток" тоже пройдет...