Есть ли API для USSD запросов на usb модем - PullRequest
0 голосов
/ 29 августа 2018

Я начинаю небольшое пополнение бизнеса в моей стране, и по разным причинам мне пришлось использовать USB-модем, чтобы сделать USSD-запрос, от которого зависит мое дело

Лучший модем, который я нашел - Huwaui e3531 USB-модем

То, как я думал о создании своего веб-сайта, - это создание небольшого демона, который постоянно проверяет веб-сайт на наличие новых заказов и выполняет USSD-запросы, используя mmcli (это лучшая утилита, которую я мог найти, но я открыт для предложений)

Проблема с этим решением Мне нужно отредактировать mmcli исходный код, чтобы вывести только ответ USSD (в обычном ответе много лишних слов), а также mmcli отменить запрос USSD не работает (не знаю почему), не говоря уже о том, что может пойти Неправильно и остановить Деймон, которые влияют на бизнес

второй вариант, который у меня есть, - это использование прошивки Hilink, которая дает мне API для выполнения USSD-запроса непосредственно с моего сайта (именно то, что я ищу), но у него также есть 2 небольшие проблемы, во-первых, это не дает мне возможности отменить USSD-запрос, а во-вторых, это медленное выполнение запросов

Так что я ищу что-то посередине, возможность иметь API, чтобы я мог запускать USSD-команды с моего сайта, чтобы он был быстрым и надежным

лучшее, что я смог найти, это проект , но после прочтения источника я обнаружил, что он использует API-интерфейс прошивки Hilink.

1 Ответ

0 голосов
/ 29 ноября 2018

Мы должны были сделать «хакерское» решение для этого в нашей компании. Поскольку у нас не было достаточно времени для изучения библиотеки mmcli, наше решение состояло в том, чтобы передать команды терминала linux с использованием 'popen' в C ++ и проанализировать ее для получения и адекватного ответа на команды USSD, которые мы передавали; то есть. мы отправили команду USSD через «popen», проанализировали ответ и отправили требуемый ответ. Мы запустили наш сервер в Ubuntu, который был установлен по умолчанию с установленной библиотекой mmcli, что мы и использовали. Поэтому нам не нужно было смотреть на исходный код, мы просто использовали простые каналы для передачи наших команд на терминал. Я должен отметить, что он дает только идеальный результат, который мы ожидаем, и никакой дополнительной информации, и вы можете установить количество повторов в случае ошибок.

Вот как мы настраиваем нашу архитектуру на случай, если она поможет:

Веб-сервер

  • Имеет открытую веб-сокет, работающий на выделенном порту, который прослушивает входящий запрос от сервера и отправляет запросы всем подключенным к нему клиентам (локальным серверам).

Локальный терминал Linux

  • Имеет клиент websocket, ожидающий сообщения от сервера
  • Получив сообщение, он анализирует и выполняет код USSD, а затем отправляет нашему API обратного вызова обратного вызова сообщение о состоянии выполнения.

    Мы выполняем это уже несколько месяцев, и наши беспокоит только сила и стабильное подключение к интернету; наш локальный сервер всегда должен быть включен и подключен к сети.

Я был бы рад поделиться кодом, который мы использовали для команд linux, он на github.

...