Автоматична робота із SMS на модеміZTE-MF823
Цей модем не є модемом, як таким. Це роутер із процесором arm v7 на базі Linux, в системі відображається у вигляді мережевої карти, без проблем заводиться в Лінуксі (мережевий інтерфейс usb0, мережа 192.168.0.0).
До пристрою можна підключатися telnet (ip: 192.168.0.1, login: root, password: zte9x15), далі впроваджувати свої iptables, вішати скрипти в crontab і багато іншого, навіть встановлювати власне, але сьогодні мова не про це.
goform >notCallback=trueNumber=номер абонентаsms_time=дата у форматі y;m;d;h;i;sMessageBody=текст повідомлення>encode_type=UNICODE
У відповідь ми отримаємо масив усіх SMS у форматі JSON.
З видаленням sms все просто, а ось з отриманням і відправкою наступне лихо - кожен символ кодується HEX-кодом UTF, отримуємо код символу функцією ord(), переводимо те, що вийшло в 16-річну систему числення і добиваємо нулями до 4х сивол, для зворотної розкодування повідомлень ділимо текст по 4 символи, переводимо в 10-річну систему числення і отримуємо символ за номером функцією chr(). Здавалося б, все так просто, та ось тільки php не особливо добре працює з юнікодів, тому довелося винаходити якісь велосипеди і бидлокодить, в результаті 3х годинних дослідів вийшов PHP клас для роботи з sms на даному модемі.
Передбачається, що скрипти на php будуть отримувати всі повідомлення, а потім робити зачистку пам'яті модему. Цей модем підключений до Raspberry Pi, в кронтабі висітимуть різні обробники sms та бот, який реагуватиме на команди, відправлені з довірених номерів та приймати певні рішення.
Хардкорна конфа за С++. Ми запрошуємо лише профі.