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.

hogyan kapjunk sms-t python flask segítségével
1. ábra - Hogyan kapjunk SMS-t Python Flask segítségével

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()
	

1. kód - ReceiveSms.py

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>
	

2. kód - ReceiveSms.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.

receive sms py directory
2. ábra - Mi található a ReceiveSms.py.zip fájlban

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
	

3. kód - Parancs az ozekilibsrest könyvtár telepítéséhez

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
	

4. kód - Parancs a flask könyvtár telepítéséhez

Hogyan kapjunk SMS-t Pythonból (Gyors lépések)

SMS fogadása Pythonból:

  1. Töltsd le és telepítsd a Python-t
  2. Telepítsd az ozekilibsrest könyvtárat pip vagy conda segítségével
  3. Telepítsd a flask könyvtárat pip vagy conda segítségével
  4. Töltsd le a ReceiveSms.py.zip fájlt
  5. Csomagold ki a .zip fájlt a Letöltések mappából
  6. Nyisd meg a ReceiveSms.py fájlt bármilyen szövegszerkesztőben
  7. Indítsd el az Ozeki SMS Gateway-t
  8. Hozz létre egy HTTP API felhasználót az Ozeki-ban
  9. Futtasd a ReceiveSms.py kódot a parancssorból teszt SMS üzenetek küldéséhez
  10. 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.

1. videó - Hogyan töltsd le és nyisd meg a fenti megoldást (Videó útmutató)

Az alábbi példakód a ReceiveSms.py.zip mappa része.

3. ábra - ReceiveSms.py

4. ábra - A Python Flask példa alkalmazás futtatása parancssorból

5. ábra - A fenti Python kód eredménye

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.

2. videó - Hogyan használd a ReceiveSms.py szkriptet (Videó útmutató)

Ö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