Онлайн сервис заказа такси. Часть 48. Внедрение GSM шлюза для СМС. Часть V
Эпопея с GSM оборудованием продолжается. Напомню, что основная задача — снижение расходов на СМС сообщения, которое планирую добиться отправкой СМС сообщений не через сторонних операторов, а через собственные каналы.
Работа со сторонними сервисами для отправки СМС создает ряд проблем.
При использовании прямых каналов — очень высокая стоимость СМС. Даже не смотря на то, что у меня хорошие тарифы на SMSC
Посчитайте, даже если использовать тарифы с платной регистрацией имен, все равно, средняя стоимость 1 СМС будет превышать ₽1, а при 3.000 СМС в сутки — это почти ₽100.000 в месяц!
Да, есть «непрямые каналы», но что это такое, я описывал в одной из своих предыдущих статей про внедрение GSM шлюза. Основная проблема — непонятки с доставкой, а так же очень большой срок доставки СМС, который зачастую достигал нескольких минут, что является недопустимым для активационных СМС. Поэтому, я решил купить оборудование и для отправки использовать SIM карты операторов сотовой связи.
Однако есть проблема — я нахожусь в Москве, где тарифы сотовых операторов на СМС крайне высокие. Минимальная стоимость получалась на уровне 20 коп. и единственное решение — это установка оборудования не в Москве. Однако, в этом случае возникают проблемы в необходимости администрировать это оборудование. В итоге было решено расширить техническую и программные части.
Прежде всего я привел в порядок свою «коммуникационную стойку». Раньше это выглядело вот так
После наведения порядка, выглядеть стало так
Прямоугольная коробочка с кучей лампочек — это SIM банк.
Далее, помимо 8 канального GSM шлюза, которым я пользовался раннее, был куплен дополнительно 1 канальный.
Для взаимодействия этого оборудования друг с другом, было принято решение использовать их родное ПО, под названием SIM Server, которое объединяет SIM банк с GSM шлюзом и управляет SIM картами.
Другое ПО, которое используется в связке — это SMS Server, через которое происходит управление отправкой СМС. С моего сервера СМС передаются через API на SMS Server.
Итоговая схема выглядит вот так:
Итак, куплен дополнительно 1 канальный GSM шлюз, Goip 1. Через Aliexpress цена вопроса около ₽3.400. Но не стал дожидаться, нашел на Avito за ₽5.000 и купил его. Все настроил и субботним утром поехал в Калугу. В принципе, еще один шлюз мной заказан. Установлю его в другом городе, в качестве резервного.
По приезду, попытался купить там местные симки Tele2 и был удивлен тем, что в городе нет обыкновенных салончиков сотовой связи, в которых обычно можно без паспорта купить SIM карты. Вообще. Ни одного! Ритейлеры вытеснили всех! Влез на Avito, нашел продавца и через 10 минут был уже у его подъезда. Ценник он заломил неприличный, но деваться некуда, отдал ₽2.500 за 20 штук, тариф «Оранжевый», без абонентской платы.
Далее, заехал к знакомым, подключил GSM шлюз, убедился что SIM Server и SMS Server его видят и поехал обратно в Москву. Вернувшись, установил SIM карты в SIM банк, заранее подключив на них необходимые тарифные опции, настроил алгоритмы замены SIM карт и ушел спать.
Встав утром, часов в 12 (а лег после 4-х утра), обнаружил, что GSM шлюз отвалился. Позвонил знакомым, оказалось, что домой они вернутся после работы, в общем, оставалось только ждать. После того, как они вернулись, передернули свой роутер, GSM шлюз появился на некоторое время, затем вновь пропал. Расспросив подробнее о их роутере понял, что у них стоит шлак от Ростелекома, который они передергивают по 2 раза в день, понял, что так дело не пойдет.
В итоге пришел к тому, что вместе с GSM шлюзом должен в комплекте идти источник интернета, надежного. Принял решение докупить роутер, с встроенным LTE. От бюджетного варианта, «роутер + USB модем» отказался, так как надежность такой связки сомнительна. После изучения актуальных моделей остановился на Huawei B315S
Примерно к 11 вечера он был уже у меня. Далее, встал вопрос, как коннектиться к самому GSM шлюзу, ведь у меня нет постоянного IP адреса. Но тут я вспомнил, что в устройствах есть такая опция, как Remote Control. Почитал документацию, нашел как пользоваться этой функцией. Оказалось, необходимо установить на VPS сервер родной софт, именуемый как Remote Control Server и в самом устройстве прописать данные моего сервера. Спустя минут 20 все было готово и я смог указав в адресной строке браузера IP адрес своего сервера, подключиться к веб интерфейсу шлюза.
Далее, возникла задача получить обратно шлюз в Москву, чтобы здесь все настроить и отправить обратно. И ведь надо это сделать быстро! В итоге нашел на сервисе Blablacar водителя, с которым договорился, что он привезет оборудование в Москву. Нашел я его в 10 вечера, а в 12 часов следующего дня шлюз был у меня дома. Обошлось все это удовольствие в ₽1000 руб.
Следующая задача, которая до конца пока что не решена — это как заставить SIM Server переключать слоты и подавать новую SIM карту в GSM шлюз, после отправки 150 SMS? В дефолте такого функционала нету.
На данный момент:
1. Я заметил, что SIM Server все же переключает SIM карты. Но так и не понял, по каким алгоритмам он это делает. Вероятно, переключение происходит после того, как получает от оператора сотовой связи ошибку. По этому случаю я сделал следующее:
на SIM картах баланс в пределах 0 руб. Через Qiwi кошелек настроил автоплатеж, на 23:59, на сумму в ₽2.01. Этой суммы достаточно, чтобы баланс был более ₽2 и чтобы в 00:00 продлилась услуга SMS-свобода, в рамках которой за ₽2 в сутки я могу получить 150 СМС. Однако, на данный момент нет возможности проверить эту теорию и на сколько все это будет работать. Надо вновь отправить в Калугу оборудование и дальше следить.
2. Я получил от технической поддержки производителя документацию по SIM Server и SMS Server и речь здесь не от User Manual, а именно документацию, которая поможет программисту разобраться в программном коде и подстроить необходимые алгоритмы переключения SIM карт.
В общем, работа продолжается и надеюсь, на этой неделе выйдет последняя часть эпопеи внедрения GSM шлюза для отправки СМС сообщений и за 3.000 СМС я буду платить по ₽40 в сутки, а сами сообщения будут доходить в течении 4-6 секунд.