Внешний СМС-шлюз
- Тариф считается за каждое сообщение
- Телефоны и текст уходят третьей стороне
- Интеграция через SDK и личный кабинет посредника
- Отправка зависит от чужого сервиса и его доступности
Железо · коробка в вашей серверной · прошивка 1.0.0.1
Свой СМС Сервер
Автономный SMS-шлюз в вашей сети. REST API, защита от блокировки SIM, работа без интернета для отправки.
Проблема → решение
Внешний СМС-шлюз считает деньги за штуку и видит текст каждого сообщения. KiwiBOT ставится в вашей сети и работает на вашей SIM-карте.
Кому это нужно: интернет-магазины — уведомления о заказах и доставке; сервисные центры и автосервисы — «ваш заказ готов»; клиники и салоны — напоминания о записи; любой бизнес с CRM (Битрикс24, 1С, amoCRM) и потребностью в СМС.
Как это работает
Ваша система отправляет обычный HTTPS-запрос устройству. Дальше СМС уходит через сеть оператора с вашей SIM-карты.
Питание и подключение к локальной сети — Wi-Fi, DHCP или статический IP.
Любая SIM-карта с пакетом СМС. Тариф и оператора выбираете вы.
Один POST-запрос с телефоном и текстом. Ключ API берётся в панели управления.
Возможности
POST /api/sms с телом {"phone": "…", "message": "…"}.
Русский язык и эмодзи (UCS2). Длинное сообщение делится на части (до 4)
и склеивается обратно на телефоне получателя.
Входящие забираются автоматически, память SIM освобождается. Буфер на 50 сообщений плюс копия во flash. Виден номер отправителя, текст и время.
Настраиваемый интервал между сообщениями, длинная пауза после каждых N отправок, аварийный стоп при первом отказе оператора.
HTTP + JSON. Очередь отправки на 64 сообщения. К сообщению можно дописать
уникальный ID вида KWI_000042 — по нему сверяются ответы клиентов.
Веб-админка на самом устройстве: статистика, журнал событий, очередь, входящие, баланс SIM по USSD, документация API с тестером запросов.
Прошивка обновляется через браузер в панели управления. Если новая версия не запустится, загрузчик сам вернёт предыдущую.
Шифрование канала, пароль хранится солёным хешем SHA-256, двухэтапный вход кодом по СМС через сам хаб, блокировка адреса на 15 минут после 5 неверных попыток, отдельный API-ключ.
Очередь и входящие лежат во flash-памяти. После пропажи питания недоотправленное досылается само.
Сценарии
Устройство не делит сообщения на «сервисные» и «рекламные» и не считает подключённые системы. Что отправлять, откуда и сколькими системами сразу — решаете вы.
Заказ принят, оплата прошла, товар в пункте выдачи, «ваш автомобиль
готов», напоминание о записи. Столько сервисов, сколько у вас есть —
все шлют в один и тот же POST /api/sms.
Одноразовые коды для входа, подтверждение операций, выдача временных паролей сотрудникам. Само устройство так и работает: код на вход в его панель управления приходит СМС через этот же модем.
Клиент отвечает на СМС — ответ забирается по API вместе с номером и
временем. По уникальному ID вида KWI_000042 видно, на
какое именно сообщение пришёл ответ: «ДА», «ПЕРЕНЕСТИ», «СТОП».
Акции и напоминания по своей базе. Темп держит анти-бан: интервал, пауза после каждых N сообщений и аварийный стоп при первом отказе оператора — рассылка не превращается в блокировку SIM.
Zabbix, скрипты, самописные системы. СМС дойдёт до дежурного даже тогда, когда у него нет интернета — а именно в такие моменты оповещение и нужно.
На этом API можно построить собственный сервис: личный кабинет, свои правила, свои тарифы. Устройство — транспорт, логика ваша.
API не хранит сессий и не считает клиентов. CRM, 1С, интернет-магазин,
скрипт бухгалтера и мониторинг работают с устройством одновременно —
каждый шлёт свой запрос с общим ключом X-API-Key.
Сообщения складываются в общую очередь и уходят по очереди с выдержкой интервалов. Каждому запросу устройство сразу отвечает, принято ли сообщение и какое у него место в очереди.
Устройство можно оставить только в локальной сети, а можно опубликовать наружу — пробросить порт на роутере и обращаться к нему через интернет: из другого города, из филиала, из чужой организации-партнёра.
Если публикуете наружу — обязательно включите HTTPS и задайте API-ключ. Без ключа отправить СМС сможет любой, кто знает адрес устройства.
Что всё-таки ограничено — честно: одна SIM-карта — это один номер отправителя; темп отправки задаёте вы в настройках анти-бана, исходя из требований своего оператора; в очереди одновременно держится до 64 сообщений — система дозаполняет её по мере отправки. Ограничений по назначению сообщений и количеству подключённых систем в устройстве нет. Правила рассылок диктует оператор и закон: рекламу отправляйте только по своей базе и с согласия получателей.
Защита от блокировки SIM
Массовая отправка без выдержки интервалов — прямой путь к блокировке номера. Устройство держит темп само и останавливается раньше, чем оператор примет меры.
Задаётся в настройках. Устройство выдерживает его само, сколько бы запросов ни прилетело в очередь.
Пока идёт пауза, API отвечает 503 и сообщает, сколько ждать: retry_after_s.
При первом отказе устройство останавливает всю отправку и отвечает вашей системе кодом 429. Рассылка прерывается до выяснения — до блокировки SIM дело не доходит.
Надёжность
Все четыре сценария проверены на живом устройстве.
Что если пропало питание?
Очередь и входящие лежат во flash-памяти. После включения недоотправленное досылается само.
Что если отвалился модем?
Сообщения ждут в очереди, API сообщает 503 modem_down. Отправка возобновляется сама.
Что если пропал Wi-Fi?
Отправка СМС не останавливается — модему интернет не нужен. Устройство переподключается к сети бесконечно.
Что если обновление прошивки не удалось?
Загрузчик сам возвращает предыдущую версию. Устройство остаётся рабочим.
Входящие удаляются из буфера только после подтверждённой доставки ответа — забрать сообщение и потерять его по дороге нельзя.
Интеграция
Обычный HTTP-запрос. Готовые примеры есть для PHP (Битрикс24 и любая CMS) и Python; подойдёт любой язык, умеющий HTTP — curl, Postman, 1С.
$kiwi = new KiwiBotSms('https://192.168.1.100', 'ваш-ключ');
$r = $kiwi->send('+79001234567', 'Ваш заказ готов');
if ($r['ok']) {
echo "Отправлено, uid = {$r['uid']}";
} elseif ($r['stop']) {
// оператор отклонил — рассылку нужно прекратить
}
import requests
r = requests.post(
"https://192.168.1.100/api/sms",
json={"phone": "+79001234567", "message": "Ваш заказ готов"},
headers={"X-API-Key": "ваш-ключ"},
verify=False,
)
print(r.json()["uid"])
curl -k -X POST https://192.168.1.100/api/sms \
-H "Content-Type: application/json" \
-H "X-API-Key: ваш-ключ" \
-d '{"phone": "+79001234567", "message": "Ваш заказ готов"}'
Ответ устройства
{
"status": "queued",
"uid": "KWI_000042",
"queue_position": 1,
"queue_free": 63
}
Панель управления
Админка живёт на самом устройстве. Открывается по его адресу в локальной сети.
Схема интерфейса. Числа и записи журнала показаны для примера.
Отправленные и сбои, история запросов API, график отправок.
Запрос баланса по USSD, уровень сигнала, оператор, IMEI, ICCID.
Что и когда отправлено, когда была пауза анти-бана, где отказ.
Встроенная документация и отправка тестового запроса прямо из браузера. Рядом — AT-консоль модема для диагностики.
Скриншоты с работающего устройства. Листайте стрелками, точками или свайпом — на телефоне тоже.
Характеристики
| Микроконтроллер | ESP32 |
|---|---|
| LTE-модем | SIMCom A7682E |
| Стандарт связи | LTE |
| SIM-карта | одна, обычная |
| Прошивка | собственная, C (ESP-IDF), версия 1.0.0.1, обновление по воздуху с откатом |
| Сетевые интерфейсы | Wi-Fi, DHCP или статический IP |
| API | REST, HTTP + JSON, HTTPS, доступ по API-ключу |
| Ёмкость очереди отправки | 64 сообщения |
| Буфер входящих | 50 сообщений + копия во flash-памяти |
| Длинные сообщения | деление до 4 частей, склейка на телефоне получателя |
| Кодировка | UCS2 — русский язык и эмодзи |
| Хранение при сбое | очередь и входящие во flash, досылка после включения |
| Питание | 5 В через USB, блок питания в комплекте |
| Габариты корпуса | 15 × 15 × 5 см |
| Комплектация | устройство, антенна, блок питания, коробка, инструкция, гарантийный талон |
Цена
Устройство покупается один раз. Подписка на поддержку — по желанию, отдельно от покупки.
58 000 руб.
В комплекте: устройство, антенна, блок питания, коробка, инструкция, гарантийный талон.
Заказать в Telegram5 000 руб. / год
8 000 руб. / год
15 000 руб. / год
Частые вопросы
Для отправки СМС — нет, модем работает через сеть оператора. Интернет нужен только чтобы ваша система дошла до устройства по локальной сети.
Любая с пакетом СМС. Тариф выбираете сами.
Зависит от настроек анти-бана: интервал задаёте вы, исходя из требований оператора.
Устройство останавливает отправку при первом отказе и сообщает вашей системе — до блокировки дело не доходит.
Нет. Устройство работает в вашей сети, наружу ничего не отправляет.
Да, входящие забираются по API вместе с номером отправителя и временем.
Через браузер в панели управления. Если новая версия не запустится, устройство само вернёт предыдущую.
Да. Сообщения передаются в кодировке UCS2.
Связаться
Ответит служба поддержки — Константин Фатеев.
Устройство с антенной, блоком питания и документами. Подписка на поддержку — от 5 000 руб. в год.
Написать в TelegramКонстантин Фатеев
Мессенджеры на этом номере: