Jak odbierać SMS-y w Python Flask

Najprostszym sposobem na odbieranie SMS-ów w Pythonie jest użycie wbudowanego interfejsu HTTP/REST SMS API Ozeki SMS Gateway. Korzystając z tego API, będziesz otrzymywać wiadomości SMS poprzez wysłanie żądania HTTP GET do bramki SMS. Odpowiedź HTTP POST będzie zawierać wiadomości w formacie JSON. Bramka SMS wyśle wiadomości SMS do aplikacji konsolowej w Pythonie i zwróci odpowiedź HTTP 200 OK na Twoje żądanie.

jak odbierać sms w python flask
Rysunek 1 - Jak odbierać SMS-y w Python Flask

Kod Python do odbierania SMS-ów

Poniższy przykładowy kod Python do SMS-ów demonstruje, jak możesz odbierać SMS-y, używając interfejsu HTTP REST SMS API Ozeki SMS Gateway z biblioteką Python ozekilibsrest. Ta biblioteka jest dostarczana bezpłatnie i możesz jej używać oraz modyfikować w dowolnych swoich projektach.

ReceiveSms.py

		from flask import Flask, render_template, request
		from ozekilibsrest import Configuration, MessageApi
		app = Flask(__name__)
		
		configuration = Configuration(
		    username="http_user",
		    password="qwe123",
		    api_url="http://127.0.0.1:9509/api"
		)
		
		api = MessageApi(configuration)
		
		logs = []
		
		
		@app.route('/', methods=['GET', 'POST'])
		def index():
		    if request.method == 'POST':
		        messages = api.download_incoming()
		        message_count_string  = messages.__str__()
		        logs.append(message_count_string)
		        for message in messages.messages:
		            message_string = message.__str__()
		            logs.append(message_string)
		    return render_template('ReceiveSms.html', logs=logs)
		
		
		if __name__ == '__main__':
		    app.run()
	

Kod 1 - ReceiveSms.py

ReceiveSms.html

		<!DOCTYPE html>
		<html lang="en">
		    <head>
		        <meta charset="UTF-8">
		        <title>Odbieranie SMS-ów z Ozeki SMS Gateway</title>
		        <link rel="stylesheet"
		        href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
		        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
		        crossorigin="anonymous">
		    </head>
		    <body>
		        <form action="/" method="POST" class="form-group" style="width: 40%;
		        margin-top: 10vh; margin-left: 30%;
	            display: flex; flex-direction: column;
	            height: 10vh; justify-content: space-evenly;">
		            <button class="btn btn-primary" style="font-weight: 600;"
		                   type="submit" name="submit" value="download">Pobierz</button>
		        </form>
		        <ul style="width: 40%; margin-left: 30%; height: 70vh; overflow-y: scroll;"
		            class="list-group card">
		            <li class="list-group-item card"><b>Logi:</b></li>
		            {% if logs %}
		                {% for log in logs %}
		                    <li class="list-group-item">{{ log }}</li>
		                {% endfor %}
		            {% endif %}
		        </ul>
		    </body>
		</html>
	

Kod 2 - ReceiveSms.html

Jak używać przykładu SMS w Pythonie:

Ten przykład SMS w Pythonie może być używany w dowolnej aplikacji Python. Aby go użyć, musisz zainstalować pakiet ozekilibsrest za pomocą polecenia pip install ozekilibsrest. Po zainstalowaniu pakietu musisz dodać dyrektywę from ozekilibsrest import Configuration, Message, MessageApi do sekcji nagłówkowej swojego kodu źródłowego w Pythonie. To pozwoli Ci korzystać z klas dostarczonych przez bibliotekę ozekilibsrest. Możesz użyć klasy Message do tworzenia SMS-ów. Możesz użyć klasy MessageApi do wysyłania SMS-ów do bramki SMS. Bramka SMS przekaże Twoją wiadomość do sieci komórkowej poprzez połączenie bezprzewodowe lub przez Internet.

Pobierz ReceiveSms.py

Kod źródłowy omówiony w tym artykule można pobrać, używać i modyfikować bezpłatnie.
Pobierz: ReceiveSms.py.zip (1.40Kb)

Co znajduje się w folderze ReceiveSms.py?

Folder ReceiveSms.py zawiera skrypt przykładu SMS w Pythonie, który pokaże Ci, jak odbierać wiadomości SMS za pomocą Pythona.

zawartość folderu receive sms py
Rysunek 2 - Co znajduje się w ReceiveSms.py.zip

Jak zainstalować bibliotekę ozekilibsrest

Aby zainstalować bibliotekę ozekilibsrest, musisz otworzyć wiersz poleceń i użyć następującego polecenia. Spowoduje to zainstalowanie biblioteki ozekilibsrest oraz jej zależności.

		pip install ozekilibsrest
	

Kod 3 - Polecenie do zainstalowania biblioteki ozekilibsrest

Jak zainstalować bibliotekę flask

Aby zainstalować bibliotekę flask, musisz otworzyć wiersz poleceń i użyć następującego polecenia. Spowoduje to zainstalowanie biblioteki flask oraz jej zależności.

		pip install flask
	

Kod 4 - Polecenie do zainstalowania biblioteki flask

Jak odbierać SMS-y w Pythonie (Szybkie kroki)

Aby odbierać SMS-y w Pythonie:

  1. Pobierz i zainstaluj Python
  2. Zainstaluj bibliotekę ozekilibsrest za pomocą pip lub conda
  3. Zainstaluj bibliotekę flask za pomocą pip lub conda
  4. Pobierz plik ReceiveSms.py.zip
  5. Wypakuj plik .zip z folderu Pobrane
  6. Otwórz plik ReceiveSms.py w dowolnym edytorze tekstu
  7. Uruchom Ozeki SMS Gateway
  8. Utwórz użytkownika HTTP API w Ozeki
  9. Uruchom kod ReceiveSms.py za pomocą wiersza poleceń, aby wysłać testowe wiadomości SMS
  10. Sprawdź skrzynkę Wysłane w Ozeki SMS Gateway

Zainstaluj Ozeki SMS Gateway i utwórz użytkownika HTTP API

Aby móc wysyłać SMS-y z Pythona flask, najpierw musisz zainstalować Ozeki SMS Gateway. Bramka SMS może być zainstalowana na tym samym komputerze, na którym tworzysz swój kod w Pythonie. Po instalacji następnym krokiem jest podłączenie Ozeki SMS Gateway do sieci komórkowej. Możesz utworzenie użytkownika HTTP SMS API. Utwórz użytkownika z nazwą "http_user" i hasłem "qwe123", aby przykład działał bez modyfikacji.

Po skonfigurowaniu środowiska możesz uruchomić swój kod w Pythonie.

URL API HTTP do wysyłania SMS-ów z Pythona flask

Aby wysyłać SMS-y z Pythona flask, Twój kod w Pythonie będzie musiał wysłać żądanie HTTP do bramki SMS. URL API jest pokazany poniżej. Pamiętaj, że adres IP (127.0.0.1) powinien zostać zastąpiony adresem IP Twojej bramki SMS. Jeśli Ozeki SMS Gateway jest zainstalowany na tym samym komputerze, na którym działa aplikacja SMS Pythona flask, może to być 127.0.0.1. Jeśli jest zainstalowany na innym komputerze, powinien to być adres IP tego komputera.

		http://127.0.0.1:9509/api?action=rest
	

Uwierzytelnianie HTTP do wysyłania SMS-ów z Pythona flask

Aby uwierzytelnić klienta SMS Pythona flask, musisz wysłać nazwę użytkownika i hasło w formie zakodowanej base64 do serwera w żądaniu HTTP. Używany format to: base64(nazwa_użytkownika+":"+hasło). W Pythonie możesz użyć następującego kodu do wykonania tego kodowania:

	    def create_authorization_header(username, password):
	        username_password = f'{ username }:{ password }'
	        return f'Basic { b64encode(username_password.encode()).decode() }'
	

Na przykład, jeśli zakodujesz nazwę użytkownika 'http_user' i hasło 'qwe123', otrzymasz następujący zakodowany ciąg base64: aHR0cF91c2VyOnF3ZTEyMw==.

Nagłówek żądania HTTP do wysyłania SMS-ów z Pythona flask

Aby wysyłać wiadomości SMS, musisz uwzględnić następujące linie jako nagłówki w żądaniu HTTP. Pamiętaj, że zawieramy typ zawartości i nagłówek Authorization.

		Content-Type: application/json
		Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	

Żądanie HTTP do wysyłania SMS-ów z Pythona flask

Aby przesłać wiadomości SMS, Twoja aplikacja Pythona flask wyśle żądanie HTTP podobne do poniższego. Pamiętaj, że to żądanie zawiera część nagłówka HTTP, w nagłówku zdefiniowaliśmy folder, z którego chcemy pobrać wiadomości, oraz akcję. Wysłaliśmy również zakodowane w Base64 hasło i nazwę użytkownika w celu uwierzytelnienia żądania.

GET /api?action=receivemsg&folder=inbox HTTP/1.1
Host: 127.0.0.1:9509
User-Agent: python-requests/2.26.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
	

Odpowiedź HTTP otrzymana przez przykład SMS Pythona flask

Gdy bramka SMS otrzyma to żądanie, wygeneruje odpowiedź HTTP. Odpowiedź HTTP będzie zawierać kod statusu, aby wskazać, czy żądanie wysłania SMS-a zakończyło się sukcesem, czy nie. Zwróci również strukturę zakodowaną w JSON, aby dostarczyć Ci przydatne szczegóły dotyczące przesłania wiadomości.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf8
Last-Modified: Fri, 17 Sep 2021 08:36:07 GMT
Server: 10/10.3.124 Microsoft-HTTPAPI/2.0
User-Agent: OZEKI 10.3.124 (www.myozeki.com)
Access-Control-Allow-Origin: *
Date: Fri, 17 Sep 2021 07:08:11 GMT

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "",
  "data": {
    "folder": "inbox",
    "limit": "1000",
    "data": [
      {
        "message_id": "31bc2fe0-c2a6-4ebe-afcd-6bcd9ea341fb",
        "from_connection": "admin@localhost",
        "from_address": "",
        "from_station": "%",
        "to_connection": "http_user@localhost",
        "to_address": "http_user",
        "to_station": "%",
        "text": "Hello world 1!",
        "create_date": "2021-09-17 09:07:14",
        "valid_until": "2021-09-24 09:07:14",
        "time_to_send": "2021-09-17 09:07:14",
        "submit_report_requested": true,
        "delivery_report_requested": false,
        "view_report_requested": false,
        "tags": []
      },
      {
        "message_id": "b7b8d592-e182-4e96-a375-b4a6aa73e483",
        "from_connection": "admin@localhost",
        "from_address": "",
        "from_station": "%",
        "to_connection": "http_user@localhost",
        "to_address": "http_user",
        "to_station": "%",
        "text": "Hello world 2!",
        "create_date": "2021-09-17 09:07:23",
        "valid_until": "2021-09-24 09:07:23",
        "time_to_send": "2021-09-17 09:07:23",
        "submit_report_requested": true,
        "delivery_report_requested": false,
        "view_report_requested": false,
        "tags": []
      },
      {
        "message_id": "b0308970-a3c9-45c4-bf97-14a914a66f57",
        "from_connection": "admin@localhost",
        "from_address": "",
        "from_station": "%",
        "to_connection": "http_user@localhost",
        "to_address": "http_user",
        "to_station": "%",
        "text": "Hello world 3!",
        "create_date": "2021-09-17 09:07:33",
        "valid_until": "2021-09-24 09:07:33",
        "time_to_send": "2021-09-17 09:07:33",
        "submit_report_requested": true,
        "delivery_report_requested": false,
        "view_report_requested": false,
        "tags": []
      }
    ]
  }
}	
	

Przykład SMS Pythona flask: ReceiveSms.py

Jak pobrać projekt ReceiveSMS.py (Samouczek wideo)

W poniższym filmie dowiesz się, jak możesz wykorzystać projekt ReceiveSms.py w Python flask. Film rozpocznie się od strony pobierania i przeprowadzi Cię przez cały proces aż do otwarcia panelu edytora kodu. Nauczysz się, jak pobrać i otworzyć plik z kodem. Film trwa tylko 54 sekundy, ale zawiera wszystkie niezbędne informacje, abyś mógł skutecznie wykorzystać przykładowy plik z kodem.

Wideo 1 - Jak pobrać i otworzyć powyższe rozwiązanie (Samouczek wideo)

Przykładowy kod poniżej jest częścią folderu ReceiveSms.py.zip.

Rysunek 3 - ReceiveSms.py

Rysunek 4 - Uruchamianie przykładowej aplikacji Python flask w wierszu poleceń

Rysunek 5 - Wynik działania powyższego kodu Python

Jak używać projektu (Samouczek wideo)

W poniższym klipie zobaczysz, jak możesz uruchomić kod Python ReceiveSms.py. Film rozpocznie się od otwartego kodu i przeprowadzi Cię przez cały proces aż do zakładki zdarzeń z logiem wysłanej wiadomości. Zobaczysz, jak uruchomić kod i co się stanie, gdy kod zostanie wykonany. Film jest nieco krótszy niż 1 minuta, ale zawiera wszystkie informacje niezbędne do uruchomienia projektu.

Wideo 2 - Jak używać skryptu ReceiveSms.py (Samouczek wideo)

Podsumowanie

W tym artykule pokazano kroki odbierania SMS w jednym żądaniu z Python flask.

Dzięki tej wiedzy i dostarczonym narzędziom powinieneś być w stanie dotrzeć do wielu klientów za pomocą jednego kodu. Ozeki SMS Gateway odgrywa ważną rolę w tym procesie, ponieważ ten program organizuje dostarczanie wiadomości. Ozeki SMS Gateway działa z wysoką jakością i wydajnością, pozwalając na wysyłanie do 1000 SMS na sekundę.

Kontynuuj naukę na stronach samouczków Ozeki, gdzie możesz przeczytać o tematach takich jak usuwanie SMS w Python flask.

Teraz jedyne, co musisz zrobić, to pobrać Ozeki SMS Gateway i zacząć pracę!

More information