Raporty doręczenia

Oprogramowanie SMSEagle pozwala na włączenie raportów doręczenia dla każdej wysyłanej wiadomości SMS. Raporty doręczenia to funkcja, która umożliwia otrzymanie potwierdzenia, że SMS został odebrany na telefonie odbiorcy.

Aby włączyć raporty doręczenia, przejdź do web-GUI > menu Settings i ustaw „Delivery Reports” na „Yes”

Po włączeniu raportów doręczenia w web-GUI możesz sprawdzić, czy SMS został dostarczony do odbiorcy:

  • W web-GUI W menu Folders > Sent items > otwórz wiadomość, którą chcesz sprawdzić. Naciśnij „Show Details“ w prawym górnym rogu wiadomości. Pole „Modem Status” zawiera informacje o statusie doręczenia

  • Przy użyciu Webhooków Funkcja CallbackURL pozwala zdefiniować webhook dla zmiany statusu doręczenia. Webhooki to standardowe punkty końcowe HTTP zaimplementowane w Twojej aplikacji zewnętrznej, które będą akceptować żądania HTTP od urządzenia SMSEagle. Webhooki oszczędzają Ci konieczności ciągłego wysyłania żądań do urządzenia SMSEagle w celu sprawdzenia statusu wiadomości. Więcej szczegółów znajdziesz w rozdziale Callback URL w niniejszej instrukcji użytkownika.

  • Przy użyciu API

Użyj metody „read_sms”, aby pobrać dane dla wybranego SMS-a w folderze sentitems. Dane będą zawierać kolumny „Status” i „DeliveryDateTime” zawierające informacje o statusie doręczenia wiadomości. Więcej informacji na temat możliwych wartości kolumny „Status” znajdziesz w tabeli „Field Description Of Response Data – Sentitems Folder” w APIv1 Reference.

Bezpośrednie łączenie się z bazą danych SMSEagle

Baza danych SMSEagle działa na silniku bazy danych PostgreSQL. Możesz skorzystać z bezpośredniego dostępu do bazy danych, aby odczytywać/zapisywać wiadomości SMS bezpośrednio z/do bazy danych za pomocą zapytań SQL.

Dostęp do bazy danych dla aplikacji zewnętrznych jest domyślnie wyłączony. Aby go włączyć, przejdź do webGUI > menu Settings i włącz następujące ustawienie:

Po włączeniu dostępu do bazy danych możliwe jest połączenie z bazą danych z aplikacji zewnętrznej przy użyciu następujących danych uwierzytelniających:

  • Host: adres IP Twojego urządzenia

  • Nazwa bazy danych: smseagle

  • Użytkownik: smseagleuser

  • Hasło: postgreeagle

Wstawianie krótkich SMS-ów przy użyciu SQL

Najprostszym przykładem jest krótka wiadomość tekstowa (ograniczona do 160 znaków):

INSERT INTO outbox (
    DestinationNumber,
    TextDecoded,
    CreatorID,
    Coding,
    Class,
    SenderID
) VALUES (
    '1234567',
    'This is a SQL test message',
    'Program',
    'Default_No_Compression',
    -1,
    'smseagle1'
);
INSERT INTO user_outbox (
    id_outbox,
    id_user
) SELECT CURRVAL(pg_get_serial_sequence('outbox','ID')), 1;

W powyższym przykładzie wiadomość będzie należeć do użytkownika o id_user 1 (domyślnie «admin»). Wartości id_user dla innych użytkowników znajdziesz w tabeli public.”user”. Pole SenderID zawiera numer identyfikacyjny modemu SMSEagle. Dla modemu 1 SenderID = smseagle1, SenderID = smseagle2 dla modemu 2, itd.

Wstawianie długich SMS-ów przy użyciu SQL

Wstawianie wiadomości wieloczęściowych jest nieco trudniejsze, musisz również skonstruować nagłówek UDH i zapisać go w postaci szesnastkowej w polu UDH. Jeśli nie masz dobrego powodu, aby robić to ręcznie, użyj API.

Dla długiej wiadomości tekstowej nagłówek UDH zaczyna się od 050003, po którym następuje bajt jako referencja wiadomości (można tam wstawić dowolną wartość hex, ale powinna być inna dla każdej wiadomości, D3 w poniższym przykładzie), bajt określający liczbę wiadomości (02 w przykładzie, powinien być unikalny dla każdej wiadomości wysyłanej do tego samego numeru telefonu) oraz bajt określający numer bieżącej wiadomości (01 dla pierwszej wiadomości, 02 dla drugiej, itd.).

Na przykład długa wiadomość tekstowa złożona z dwóch części mogłaby wyglądać następująco:

INSERT INTO outbox (
    "DestinationNumber",
    "CreatorID",
    "MultiPart",
    "UDH",
    "TextDecoded",
    "Coding",
    "Class",
    "SenderID"
) VALUES (
    '1234567',
    'Program',
    'true',
    '050003D30201',
    'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, qui',
    'Default_No_Compression',
    -1,
    'smseagle1'
)
INSERT INTO outbox_multipart (
    "ID",
    "SequencePosition",
    "UDH",
    "TextDecoded",
    "Coding",
    "Class"
) SELECT
    CURRVAL(pg_get_serial_sequence('outbox','ID')),
    2,
    '050003D30202',
    's nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
    'Default_No_Compression',
    -1;
INSERT INTO user_outbox (
    id_outbox,
    id_user
) SELECT
    CURRVAL(pg_get_serial_sequence('outbox','ID')),
    1;

Uwaga: Dodanie UDH oznacza, że masz mniej miejsca na tekst, w powyższym przykładzie możesz użyć tylko 153 znaków w pojedynczej wiadomości.

Skrypty czyszczenia bazy danych

Dodaliśmy kilka przydatnych skryptów, które mogą być użyte do usuwania wiadomości SMS z bazy danych poprzez Linux CLI. Skrypty znajdują się w następującym katalogu: /opt/scripts/

  • db_delete – skrypt do usuwania wiadomości SMS z folderów Inbox, SentItems starszych niż podana data. Użycie: ./db_delete YYYYMMDDhhmm

  • db_delete_7days – skrypt do usuwania wiadomości SMS z folderów Inbox, Sentitems starszych niż 7 dni. Użycie: ./db_delete_7days

  • db_delete_allfolders – skrypt do czyszczenia folderów bazy danych PostgreSQL (Inbox, SentItems, Outbox). Zaprojektowany specjalnie do okresowego uruchamiania przez cron. Użycie: ./db_delete_allfolders

  • db_delete_select - skrypt do usuwania wiadomości SMS z wybranego folderu bazy danych (Inbox, Outbox, SentItems, Trash). Użycie: ./db_delete_select {inbox|outbox|sentitems|trash}

Dodawanie skryptu do demona cron systemu

  1. Utwórz plik wewnątrz katalogu /etc/cron.d/ o wybranej przez siebie nazwie (np. pico db_cleaner)

  2. Przykładowa zawartość tego pliku: 0 0 1 * * root /opt/scripts/db_delete_allfolders

Spowoduje to uruchamianie skryptu czyszczącego każdego 1szego dnia miesiąca.

Agent SNMP

„Simple Network Management Protocol (SNMP) to internetowy protokół standardowy służący do zarządzania urządzeniami w sieciach IP. Jest wykorzystywany głównie w systemach zarządzania siecią do monitorowania urządzeń podłączonych do sieci pod kątem warunków wymagających uwagi administracyjnej” (źródło: Wikipedia).

Urządzenie SMSEagle posiada wbudowanego agenta Net-SNMP. Agent SNMP zapewnia dostęp do drzewa Linux Host MIB urządzenia, a dodatkowo (za pomocą rozszerzenia NET-SNMP-EXTEND-MIB) umożliwia dostęp do niestandardowych metryk specyficznych dla SMSEagle.

Dostępne metryki SNMP opisujące stan urządzenia SMSEagle to:

Nazwa metryki

Opis

OID

GSM_Signal1

Zwraca siłę sygnału 3G/4G w procentach dla modemu 1. Zakres wartości: 0-100. Jeśli modem jest odłączony od sieci komórkowej, GSM_Signal zwraca 0.

.1.3.6.1.4.1.8072.1.3.2.3.1.2.11.71.83.77.95.83.105.103.110.97.108.49

GSM_Signal[X]

Zwraca siłę sygnału 3G/4G w procentach dla modemu X. Zakres wartości: 0-100. Jeśli modem jest odłączony od sieci komórkowej, GSM_Signal zwraca 0.

.1.3.6.1.4.1.8072.1.3.2.3.1.2.11.71.83.77.95.83.105.103.110.97.108.[48+X]

GSM_NetName1

Zwraca nazwę sieci komórkowej na modemie 1

.1.3.6.1.4.1.8072.1.3.2.3.1.2.12.71.83.77.95.78.101.116.78.97.109.101.49

GSM_NetName[X]

Zwraca nazwę sieci komórkowej używanej na modemie X

.1.3.6.1.4.1.8072.1.3.2.3.1.2.12.71.83.77.95.78.101.116.78.97.109.101.[48+X]

GSM_ModemState[X] gdzie X to numer modemu

Zwraca informację o stanie modemu enabled/disabled

.1.3.6.1.4.1.8072.1.3.2.3.1.2.11.77.111.100.101.109.83.116.97.116.101.49 (dla 1. modemu)
.1.3.6.1.4.1.8072.1.3.2.3.1.2.11.77.111.100.101.109.83.116.97.116.101.50 (dla 2. modemu)
itd.

FolderOutbox_Total

Zwraca liczbę wiadomości SMS w folderze Outbox (długość kolejki wychodzącej)

.1.3.6.1.4.1.8072.1.3.2.3.1.2.18.70.111.108.100.101.114.79.117.116.98.111.120.95.84.111.116.97.108

FolderInbox_Total

Zwraca liczbę wiadomości SMS w folderze Inbox

.1.3.6.1.4.1.8072.1.3.2.3.1.2.17.70.111.108.100.101.114.73.110.98.111.120.95.84.111.116.97.108

FolderSent_Last24H

Zwraca liczbę wiadomości SMS wysłanych z urządzenia w ciągu ostatnich 24 godzin

.1.3.6.1.4.1.8072.1.3.2.3.1.2.18.70.111.108.100.101.114.83.101.110.116.95.76.97.115.116.50.52.72

FolderSent_Last1M

Zwraca liczbę wiadomości SMS wysłanych z urządzenia w ciągu ostatniego miesiąca

.1.3.6.1.4.1.8072.1.3.2.3.1.2.17.70.111.108.100.101.114.83.101.110.116.95.76.97.115.116.49.77

FolderSent_Last24HSendErr

Zwraca liczbę wiadomości SMS wysłanych z błędem w ciągu ostatnich 24h. Błąd występuje, gdy modem 3G nie może wysłać wiadomości SMS lub wiadomość zostaje odrzucona przez operatora 3G/4G (zdarza się to najczęściej, gdy środki na karcie SIM typu pre-paid się skończą)

.1.3.6.1.4.1.8072.1.3.2.3.1.2.25.70.111.108.100.101.114.83.101.110.116.95.76.97.115.116.50.52.72.83.101.110.100.69.114.114

SIM_State[X] gdzie X to numer modemu

Zwraca informację o fizycznym stanie karty SIM

.1.3.6.1.4.1.8072.1.3.2.3.1.2.10.83.73.77.95.83.116.97.116.101.49 (dla 1-go modemu)
.1.3.6.1.4.1.8072.1.3.2.3.1.2.10.83.73.77.95.83.116.97.116.101.50 (dla 2-go modemu)
itd.

SIM_RegState[X] gdzie X to numer modemu

Zwraca informację o stanie rejestracji karty SIM w sieci komórkowej.

.1.3.6.1.4.1.8072.1.3.2.3.1.2.13.83.73.77.95.82.101.103.83.116.97.116.101.49 (dla 1-go modemu)
.1.3.6.1.4.1.8072.1.3.2.3.1.2.13.83.73.77.95.82.101.103.83.116.97.116.101.50 (dla 2-go modemu)
itd.

Wartości wynikowe

  • Używając OID

Wartości wynikowe dla każdej niestandardowej metryki są dostępne i można je pobrać z OID podanego w tabeli powyżej.

  • Używając nazwy tekstowej

Alternatywnie wartości wynikowe dla każdej niestandardowej metryki można pobrać, używając nazw tekstowych z drzewa OID pod: NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”[METRIC NAME]”

Na przykład: Wartość wynikowa dla parametru GSM_Signal1: NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”GSM_Signal1”

Jeśli wybrane przez Ciebie narzędzie SNMP nie może uzyskać dostępu do obiektów NET-SNMP-EXTEND-MIB, możesz pobrać definicje MIB z: https://www.smseagle.eu/download/NET-SNMP-EXTEND-MIB.txt

Odczyt wartości wynikowych Aby testowo odczytać wartości parametrów z agenta SNMP, możesz użyć dowolnych narzędzi dostępnych dla protokołu SNMP (na przykład: biblioteki NET-SNMP dla systemu Linux lub iReasoning MiB-Browser dla systemu Windows).

Przykład odczytu wartości GSM_Signal1 przy użyciu biblioteki NET-SNMP

a) Komenda do odczytu wartości wyniku:

snmpget -v 2c -c public localhost .1.3.6.1.4.1.8072.1.3.2.3.1.2.11.71.83.77.95.83.105.103.110.97.108.49

Wynik:

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”GSM_Signal1” = STRING: 54

Komentarz: Wartość siły sygnału 3G/4G wynosi 54%

Przykład odczytu wartości GSM_NetName1 za pomocą biblioteki NET-SNMP

a) Komenda do odczytu wartości wyniku:

snmpget -v 2c -c public localhost .1.3.6.1.4.1.8072.1.3.2.3.1.2.12.71.83.77.95.78.101.116.78.97.109.101.49

Wynik:

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”GSM_NetName1” = STRING: PLAY

Komentarz: Aktualnie używaną siecią dla karty SIM #1 jest PLAY

Przykład odczytu wartości FolderOutbox_Total przy użyciu biblioteki NET-SNMP (oraz tekstowej nazwy metryki)

a) Komenda do odczytu wartości wyniku:

snmpget -v 2c -c public ip-of-smseagle «NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”FolderOutbox_Total”»

Wynik:

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”FolderOutbox_Total” = STRING: 0

Komentarz: Liczba wiadomości SMS czekających w kolejce wysyłania (outbox) wynosi 0

Przykład odczytu czasu działania systemu (uptime) z hosta Linux przy użyciu biblioteki NET-SNMP

a) Komenda do odczytu wartości wyniku:

snmpget -v 2c -c public ip-of-smseagle system.sysUpTime.0

Wynik:

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (216622) 0:36:06.22

Komentarz: System Linux działa od 36 godzin, 6.22 minuty

Przykład przeglądania parametrów rozszerzenia SMSEagle w drzewie MIB przy użyciu biblioteki NET-SNMP

a) Komenda do odczytu wartości wyniku:

snmpwalk -v 2c -c public ip-of-smseagle .1.3.6.1.4.1.8072.1.3.2.3.1.2

Wynik:

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”GSM_Signal1” = STRING: 54

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”GSM_Signal2” = STRING: 54

…

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”GSM_NetName1” = STRING: PLAY

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”GSM_NetName2” = STRING: PLAY

…

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”FolderInbox_Total” = STRING: 15

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”FolderSent_Last1M” = STRING: 19

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”FolderOutbox_Total” = STRING: 0

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.”FolderSent_Last24H” = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutputFull.” FolderSent_Last24HSendErr” = STRING: 0

Przykład przeglądania parametrów rozszerzenia SMSEagle w drzewie MIB przy użyciu mib-browser

Konfiguracja kontroli dostępu SNMP v3

Domyślnie urządzenia SMSEagle wykorzystują kontrolę dostępu SNMP v2. Użycie wersji v3 może zwiększyć bezpieczeństwo, jednak nie jest to obowiązkowe. Aby łatwo przełączyć się na kontrolę dostępu SNMP v3, przygotowaliśmy specjalny skrypt shell znajdujący się w katalogu /opt/smseagle.

  1. Zaloguj się przez SSH używając konta root

  2. Przejdź do: cd /opt/smseagle/

  3. Skrypt konfiguracyjny: ./snmpv3

  4. Skrypt można uruchomić z następującymi parametrami:

    1. add

    2. del

    3. enablev2

    4. disablev2

  5. Aby dodać USERA v3, uruchom:

./snmpv3 add USERNAME PASSWORD ENCRYPTIONPASSWORD

  1. Aby usunąć USERA, uruchom:

./snmpv3 del

  1. Aby wyłączyć politykę dostępu v2, uruchom:

./snmpv3 disablev2

  1. Aby włączyć politykę dostępu v2, uruchom:

./snmpv3 enablev2

Przekazywanie logów na zewnętrzny serwer

Nasze urządzenia używają rsyslog do zarządzania logami. Tutaj opisujemy, jak skonfigurować dodatkowe reguły dla demona rsyslog: rsyslogd. Jest to jedynie krótki fragment z podręcznika rsyslog dostępnego na stronie internetowej. Pełne informacje są dostępne pod adresem: https://www.rsyslog.com/

Konfiguracją rsyslogd zarządza się za pomocą pliku konfiguracyjnego znajdującego się w /etc/rsyslog.conf

  • Na dole pliku konfiguracyjnego dodaj:

    *.* action(type=”omfwd” target=”SERVER_IP” port=”PORT” protocol=”PROTOCOL”

action.resumeRetryCount=”10”

queue.type=”linkedList” queue.size=”10000”)

gdzie: SERVER_IP – adres IP (lub FQDN) serwera odbierającego PORT – port na serwerze odbierającym PROTOCOL jedna z wartości: tcp, udp

  • Przykład:

*.* action(type=”omfwd” target=”192.168.0.250” port=”10514” protocol=”tcp”

action.resumeRetryCount=”10”

queue.type=”linkedList” queue.size=”10000”)

Automatyczne sprawdzanie aktualizacji oprogramowania

Oprogramowanie SMSEagle jest w procesie ciągłego udoskonalania. Słuchamy naszych klientów, a nowe wydania powstają na podstawie ich sugestii/żądań. Aktualizacje oprogramowania są wydawane często i oferują dostęp do nowych funkcji oraz poprawki zgłoszonych problemów. Web-GUI umożliwia automatyczne sprawdzanie dostępności nowych aktualizacji oprogramowania. Można to zrobić na dwa sposoby:

Ręczne SPRAWDZANIE

Aby ręcznie sprawdzić dostępność aktualizacji oprogramowania, przejdź do menu Settings > zakładka Updates. Kliknij przycisk „Check for software update now”. U góry pojawi się czerwony dymek z informacją, czy oprogramowanie jest aktualne.

Automatyczne sprawdzanie

Aby uruchomić automatyczne sprawdzanie aktualizacji oprogramowania, przejdź do menu Settings > zakładka Updates i zaznacz opcję „Automatically check for software updates”. Umożliwi to okresowe sprawdzanie (raz w miesiącu) dostępności aktualizacji oprogramowania. Jeśli dostępna jest nowa aktualizacja, w menu Settings> Sysinfo pojawi się komunikat „Update Available” – obok numeru aktualnej wersji oprogramowania.

Jeśli zaznaczysz opcję „Notify Admin about new software version by SMS”, urządzenie dodatkowo wyśle SMS do domyślnego konta administratora (jeśli w koncie podany jest numer telefonu) z powiadomieniem o nowej aktualizacji oprogramowania.

Zrzut ekranu komputera

Zrzut ekranu z „General settings-Updates”

Uwaga: Aby ta funkcja działała, urządzenie SMSEagle musi mieć łączność HTTPS z adresem updates.smseagle.eu.

Baza wiedzy i portal wsparcia

Więcej informacji i przydatnych wskazówek dotyczących konfiguracji urządzenia SMSEagle można znaleźć w naszej internetowej bazie wiedzy i na portalu wsparcia: https://support.smseagle.eu