InquirerFishers call for aid amid health impact of El NiñoESPNRB Barkley, WR Smith among 5 Eagles ruled out for London game vs. JagsThe Jerusalem PostUK man charged with plot against Farage motivated by extreme left-wing mindsetESPN DeportesBrunetta reaparece y devuelve la ventaja a TigresPunchA’Court rejects El-Rufai’s bail applicationZDF heuteAktuelle Pressemitteilungen des ZDFSouth China Morning PostCould Indonesia’s ‘content governor’ rival Prabowo for the presidency in 2029?GIGAZINE病院の給水システムが原因で患者40人が細菌に感染RapplerNobel Committee leaders, Agnés Callamard to speak at Social Good Summit 2026경향신문당근 무조건 크고 굵은 것?…굵기에 따라 맛이 달라요The South AfricanLIVE SCORING | URC: Stormers vs Sharks in Cape TownBBC News'Airlines sound alarm on costs crisis' and 'King's £1.5m bailout'
The Daily Newsstand · Free, Always
Saturday, October 10, 2026

Общаемся с ИИ по СМС

Translate

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

В двух словах схема проста - пишите смс, получаете ответ от ИИ.

Сейчас, с развитием ИИ, при появлении какой-то идеи, исследовательский процесс строится простым образом. Спросить у ИИ, существует ли уже такой продукт. Если нет, узнать, насколько сложно будет его реализовать. И если соотношение сложности к профиту (или просто интересу) оказывается выше определённых субъективных цифр, то реализации быть. Так случилось и тут. Первым пунктом, конечно, была идея. После того, как агент ясно дал понять, что реализовать это вполне возможно, составили архитектуру и план.

К слову, такие сервисы уже существуют, например Voxie AI. Но он в США, и слать туда смс будет дороговато. Плюс неизвестно, как модель дружит с русским языком. Но если у вас есть такая возможность, будет интересно почитать ваш опыт использования в комментариях.

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

Что нам понадобится

  1. Второй смартфон на андроиде версии 5+, оптимально 8 - 11

  2. Вторая симка, которая будет принимать смс от вас и отправлять вам ответ от ИИ

  3. VPS в РФ (KVM-виртуализация, 2 vCPU / 2-4 ГБ / 20 ГБ SSD, ubuntu 22 / 24)

  4. Домен

  5. Доступ к интернету на телефоне из п.1

  6. 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

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.