Как я смски получал с помощью ИИ

Disclaimer: эта история не про код, а про использование ИИ для упрощения и ускорения написания мелких pet-проектов (и не только).

Я живу в деревне и как практически в любой деревне на постсоветском пространстве у нас интернет идёт через модем с сим-картой.

900x1200.webp

В моём случае это NR-400

У моего модема на борту есть LUCI.

Возникла необходимость читать смски с этого модема не заходя в web-интерфейс (слишком много времени на это тратится). Но писать самому этот код не очень хотелось. Поэтому решил использовать ChatGPT как помощника.

Задача №1. Получить смски на модеме

Найти код в самом модеме отвечающий за чтение смсок. Тут я справился сам (т.к. уже копался в потрохах LUCI на этом модеме). Нашёл команду которая читает все смс: at -S modem at-sms-list all. Результат был в виде json данных. Дальше встал вопрос парсинга данных и перекодировки самих сообщений.

Задача №2. Разобрать данные

Из кода web-интерфейса я узнал что значат часть полей json. Но хотелось узнать что значат все поля. Задал этот вопрос чату. И он на удивление всё расписал как надо:

Hidden text

Данные в предоставленной JSON строке представляют собой информацию о SMS-сообщениях, включая метаданные и содержимое сообщений. Вот как расшифровать структуру данных:

  1. "mem": Объект с информацией о памяти.

    • "type": Тип памяти («ME» — внутренняя память телефона).

    • "used": Использованная память в единицах.

    • "total": Общий объем памяти в единицах.

  2. "sms": Список объектов SMS-сообщений.

    • "idx": Индекс сообщения.

    • "stat": Статус сообщения («read» — прочитано).

    • "fail": Признак ошибки отправки («False» — не было ошибки).

    • "smsc": Сервисный центр SMS.

    • "sender": Отправитель сообщения.

    • "ts": Временная метка сообщения.

    • "date": Дата сообщения.

    • "time": Время сообщения.

    • "zone": Часовой пояс сообщения.

    • "c_ref": Счетчик ссылок (если есть).

    • "c_cur": Текущий номер сообщения.

    • "c_tot": Общее количество частей сообщения.

    • "dcs": Кодировка данных.

    • "data": Содержимое SMS в виде строки.

Каждый объект в списке "sms" представляет одно SMS-сообщение. Важные поля:

  • "sender": Имя отправителя.

  • "ts", "date", "time", "zone": Дата и время отправки сообщения с учетом часового пояса.

  • "data": Содержимое сообщения (текст).

Кодировка "dcs" указывает на способ кодирования данных в поле "data". Значение 2 указывает на кодировку UCS-2 (16-бит Unicode), которая обычно используется для текстовых сообщений на кириллице.

Обратите внимание, что часть информации может быть неполной или сокращенной, так как эти данные представляют собой сжатую версию длинных SMS-сообщений.

Если у вас есть какие-либо дополнительные вопросы или вы хотите более подробно разобраться с каким-либо аспектом данных, пожалуйста, уточните.

Задача №3. Написать рабочий код

Пришло время писать код. Но писать с нуля не очень хотелось. Поэтому был взят код из web-интерфейса модема, написанного на JS. Попросил чат конвертировать этот код из JS в PHP (лучше наверно в python, но опыта маловато). Он сделал это, но предупредил что часть кода пропала, т.к. в PHP не получится работать с DOM деревом страницы

© Habrahabr.ru