Hogyan kapjunk SMS-t Python Flask segítségével
A legegyszerűbb módja SMS fogadásának Pythonban az Ozeki SMS Gateway beépített HTTP/REST SMS API-jának használata. Ezzel az API-val HTTP GET kérések küldésével kaphatod meg az SMS üzeneteket. A HTTP POST válasz JSON formátumban fogja tartalmazni az üzeneteket. Az SMS gateway továbbítja az üzeneteket a Python konzolalkalmazásnak, és egy HTTP 200 OK választ küld vissza a kérésedre.
Python kód SMS fogadásához
Az alábbi Python SMS kódminta bemutatja, hogyan fogadhatsz SMS-t az Ozeki SMS Gateway HTTP REST SMS API-jával a Python ozekilibsrest könyvtár segítségével. Ez a könyvtár ingyenesen használható, és bármilyen projektben módosíthatod.
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()
ReceiveSms.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>SMS fogadás Ozeki SMS Gateway-vel</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">Letöltés</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>Naplók:</b></li> {% if logs %} {% for log in logs %} <li class="list-group-item">{{ log }}</li> {% endfor %} {% endif %} </ul> </body> </html>
A Python SMS példa használata:
Ez a Python SMS példa bármilyen Python alkalmazásban használható. A használathoz telepítened kell az ozekilibsrest csomagot a pip install ozekilibsrest paranccsal. A csomag telepítése után a Python forráskódod fejléc részébe be kell illesztened a from ozekilibsrest import Configuration, Message, MessageApi direktívát. Ez lehetővé teszi az ozekilibsrest könyvtár osztályainak használatát. A Message osztállyal létrehozhatod az SMS-t, a MessageApi osztállyal pedig elküldheted azt az SMS gatewaynek. Az SMS gateway továbbítja az üzenetet a mobilhálózatnak vezeték nélküli kapcsolaton vagy az interneten keresztül.
ReceiveSms.py letöltése
A cikkben ismertetett forráskód ingyenesen letölthető, használható és módosítható.
Letöltés: ReceiveSms.py.zip (1.40Kb)
Mi található a ReceiveSms.py mappában?
A ReceiveSms.py mappa tartalmazza a Python SMS példa szkriptjét, amely bemutatja, hogyan fogadhatsz SMS üzeneteket Pythonban.
Az ozekilibsrest könyvtár telepítése
Az ozekilibsrest könyvtár telepítéséhez nyisd meg a parancssort és használd a következő parancsot. Ez telepíti az ozekilibsrest könyvtárat és annak függőségeit.
pip install ozekilibsrest
A flask könyvtár telepítése
A flask könyvtár telepítéséhez nyisd meg a parancssort és használd a következő parancsot. Ez telepíti a flask könyvtárat és annak függőségeit.
pip install flask
Hogyan kapjunk SMS-t Pythonból (Gyors lépések)
SMS fogadása Pythonból:
- Töltsd le és telepítsd a Python-t
- Telepítsd az ozekilibsrest könyvtárat pip vagy conda segítségével
- Telepítsd a flask könyvtárat pip vagy conda segítségével
- Töltsd le a ReceiveSms.py.zip fájlt
- Csomagold ki a .zip fájlt a Letöltések mappából
- Nyisd meg a ReceiveSms.py fájlt bármilyen szövegszerkesztőben
- Indítsd el az Ozeki SMS Gateway-t
- Hozz létre egy HTTP API felhasználót az Ozeki-ban
- Futtasd a ReceiveSms.py kódot a parancssorból teszt SMS üzenetek küldéséhez
- Ellenőrizd a Küldött mappát az Ozeki SMS Gateway-ben
Ozeki SMS Gateway telepítése és HTTP API felhasználó létrehozása
Ahhoz, hogy SMS-t küldhess Python Flask segítségével, először HTTP SMS API felhasználói fiók létrehozása. Hozz létre egy felhasználót "http_user" felhasználónévvel és "qwe123" jelszóval, hogy a példa módosítás nélkül működjön.
A környezet beállítása után futtathatod a Python kódodat.
HTTP API URL SMS küldéséhez Python Flask-ből
SMS küldéséhez Python Flask-ből a Python kódodnak HTTP kérést kell küldenie az SMS gatewaynek. Az API URL az alábbi. Figyelj arra, hogy az IP-címet (127.0.0.1) le kell cserélni az SMS gateway IP-címére. Ha az Ozeki SMS Gateway ugyanarra a számítógépre van telepítve, ahol a Python Flask SMS alkalmazás fut, ez maradhat 127.0.0.1. Ha másik számítógépre van telepítve, akkor annak IP-címét kell megadni.
http://127.0.0.1:9509/api?action=rest
HTTP hitelesítés SMS küldéséhez Python Flask-ből
A Python Flask SMS kliens hitelesítéséhez a felhasználónevet és jelszót base64 kódolt sztringként kell elküldened a szervernek egy HTTP kérésben. A formátum: base64(username+":"+password). Pythonban a következő kóddal végezheted el ezt a kódolást:
def create_authorization_header(username, password): username_password = f'{ username }:{ password }' return f'Basic { b64encode(username_password.encode()).decode() }'
Például, ha a 'http_user' felhasználónevet és a 'qwe123' jelszót kódolod, a következő base64 kódolt sztringet kapod: aHR0cF91c2VyOnF3ZTEyMw==.
HTTP kérés fejléc SMS küldéséhez Python Flask-ből
Az SMS üzenetek küldéséhez a következő sorokat kell tartalmaznia a HTTP kérés fejlécének. Figyelj arra, hogy tartalomtípust és egy Authorization fejlécet is tartalmazunk.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
HTTP kérés SMS küldéséhez Python Flask-ből
Az SMS üzenetek elküldéséhez a Python Flask alkalmazásod egy az alábbihoz hasonló HTTP kérést fog küldeni. Figyelj arra, hogy ez a kérés tartalmaz egy HTTP fejléc részt, ahol meghatároztuk a mappát, amelyből az üzeneteket le szeretnénk tölteni, és a műveletet. Elküldtük a Base64 kódolt jelszót és felhasználónevet is a kérés hitelesítéséhez.
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==
HTTP válasz a Python Flask SMS példa által kapott
Amint az SMS gateway megkapja ezt a kérést, generál egy HTTP választ. A HTTP válasz tartalmaz egy állapotkódot, amely jelzi, hogy az SMS beküldési kérés sikeres volt-e vagy sem. Emellett egy JSON kódolt struktúrát is visszaad, amely hasznos részleteket nyújt az üzenet beküldéséről.
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": [] } ] } }
Python Flask SMS példa: ReceiveSms.py
Hogyan töltsd le a ReceiveSMS.py projektet (Videó útmutató)
A következő videóban megtanulhatod, hogyan használhatod a ReceiveSms.py Python Flask projektet. A videó a letöltési oldallal kezdődik, és végigvezet a megnyitott kódszerkesztő panelig. Megtanulod, hogyan töltsd le és nyisd meg a kódfájlt. A videó mindössze 54 másodperc hosszú, de tartalmazza az összes szükséges információt a példa kódfájl sikeres használatához.
Az alábbi példakód a ReceiveSms.py.zip mappa része.
Hogyan használd a projektet (Videó útmutató)
A következő klipben látni fogod, hogyan indíthatod el a ReceiveSms.py Python kódot. A videó a megnyitott kóddal kezdődik, és végigvezet az események lapjáig a küldött üzenet naplójával. Látni fogod, hogyan indítsd el a kódot, és mi történik, ha a kód végrehajtódik. A videó egy kicsit kevesebb, mint 1 perc hosszú, de tartalmazza az összes szükséges információt a projekt futtatásához.
Összegzés
Ez a cikk bemutatta az SMS fogadásának lépéseit egyetlen kérésben Python Flask segítségével.
Ezzel a tudással és a biztosított eszközökkel képesnek kell lenned több ügyfél elérésére egyetlen kóddal. Az Ozeki SMS Gateway fontos szerepet játszik ebben a folyamatban, mivel ez a program szervezi az üzenetküldést. Az Ozeki SMS Gateway nagy minőségben és teljesítménnyel működik, lehetővé téve akár 1000 SMS másodpercenkénti küldését.
Folytasd a tanulást az Ozeki oktató oldalain, ahol olyan témákról olvashatsz, mint az SMS törlése Python Flask-ben.
Most már csak annyi a dolgod, hogy letöltöd az Ozeki SMS Gateway-t és elkezdesz dolgozni!
More information
- Python flask SMS küldés HTTP REST API-val (kódminta)
- Python flask több SMS küldése HTTP REST API-val (kódminta)
- Python flask SMS ütemezés HTTP REST API-val (kódminta)
- Python flask SMS fogadás HTTP REST API-val (kódminta)
- Python flask SMS törlés HTTP REST API-val (kódminta)
- A legújabb Python flask SMS könyvtár letöltése Githubról