Hogyan küldjünk SMS-t Python Flask-ből

A legegyszerűbb módja az SMS küldésének Python Flask-ből az Ozeki SMS Gateway beépített HTTP/Rest SMS API-jának használata. Amikor ezt az API-t használod, SMS üzeneteket küldhetsz HTTP POST kérések kiadásával az SMS gateway felé. A HTTP POST kérés egy JSON formátumban formázott üzenetet fog tartalmazni. Az SMS gateway továbbítja ezt az SMS-t a címzett telefonszámára, és egy HTTP 200 OK választ küld vissza a kérésedre.

hogyan küldjünk sms-t python flask-ből
1. ábra - Hogyan küldjünk SMS-t Python Flask-ből

Python kód SMS küldésére mobilra

Az alábbi Python SMS kód minta bemutatja, hogyan küldhetsz 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 elérhető számodra, és bármilyen projektben felhasználhatod és módosíthatod.

SendSms.py

		from flask import Flask, render_template, request
		from ozekilibsrest import Configuration, Message, 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':
		        message = Message(
		            to_address=request.form['to_address'],
		            text=request.form['text']
		        )
		        log = api.send(message)
		        logs.append(log)
		    return render_template('SendSms.html', logs=logs)
		
		
		if __name__ == '__main__':
		    app.run()
	

1. kód - SendSms.py

SendSms.html

		<!DOCTYPE html>
		<html lang="en">
		    <head>
		        <meta charset="UTF-8">
		        <title>Send SMS with 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: 30vh; justify-content: space-evenly;">
		            <b>To address:</b>
		            <input class="form-control" type="text"
		                   name="to_address" placeholder="+36201111111"
		                   autocomplete=false>
		            <b>Text:</b>
		            <input class="form-control"
		                   type="text" name="text"
		                   placeholder="Hello world!"
		                   autocomplete=false>
		            <input class="btn btn-primary"
		                   style="font-weight: 600;"
		                   type="submit"
		                   name="submit"
		                   value="SEND">
		        </form>
		        <ul style="width: 40%; margin-left: 30%; height: 40vh; overflow-y: scroll;"
		            class="list-group card">
		            <li class="list-group-item card"><b>Logs:</b></li>
		            {% if logs %}
		                {%for log in logs%}
		                    <li class="list-group-item">{{ log }}</li>
		                {%endfor%}
		            {% endif  %}
		        </ul>
		    </body>
		</html>
	

2. kód - SendSms.html

A Python SMS példa használata:

Ez a Python Flask SMS példa bármilyen Python alkalmazásban használható. A használathoz telepítened kell az ozekilibsrest csomagot a pip install ozekilibsrest paranccsal és a flask csomagot a pip install flask paranccsal. A csomagok telepítése után a from ozekilibsrest import Configuration, Message, MessageApi és a from flask import Flask, render_template, request direktívákat kell elhelyezned a Python forráskódod fejléc részébe. Ez lehetővé teszi az ozekilibsrest könyvtár által biztosított osztályok használatát. Az Message osztály segítségével hozhatod létre az SMS-t. Az MessageApi osztály segítségével küldheted az SMS-t az SMS gateway felé. Az SMS gateway továbbítja az üzenetedet a mobil hálózatnak vezeték nélküli kapcsolaton vagy az interneten keresztül.

SendSms.py letöltése

A cikkben ismertetett forráskód ingyenesen letölthető, felhasználható és módosítható.
Letöltés: SendSms.py.zip (1.42Kb)

Mi található a SendSms.py mappában?

A SendSms.py mappa tartalmazza a python sms példa szkriptjét, amely bemutatja, hogyan küldhetsz több SMS üzenetet Python használatával.

send sms py könyvtár
2. ábra - Mi található a SendSms.py.zip-ben

Az ozekilibsrest könyvtár telepítése

Az ozekilibsrest könyvtár telepítéséhez meg kell nyitnod a parancssort és a következő parancsot kell használnod. Ez telepíti az ozekilibsrest könyvtárat és a szükséges függőségeket.

		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 meg kell nyitnod a parancssort és a következő parancsot kell használnod. Ez telepíti a flask könyvtárat és a szükséges függőségeket.

		pip install flask
	

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

Hogyan küldjünk SMS-t Python-ból (Egyszerű útmutató)

Az SMS küldéséhez Python-ból:

  1. Töltsd le és telepítsd a Python-t
  2. Telepítsd az ozekilibsrest könyvtárat pip vagy codna használatával
  3. Telepítsd a flask könyvtárat pip vagy codna használatával
  4. Hozz létre egy HTTP API felhasználót
  5. Kapcsold be a "Log communication events" opciót az Advanced fülön
  6. Töltsd le a SendSMS.py-t
  7. Nyisd meg a SendSms.py fájlt a Windows Jegyzettömbben
  8. Módosítsd az adatokat a sajátjaidra
  9. Indítsd el az Ozeki SMS Gateway alkalmazást
  10. Futtasd a SendSms.py Python kódot a megnyitásával
  11. Ellenőrizd a naplókat, hogy az SMS elküldésre került-e

Ozeki SMS Gateway telepítése és HTTP API felhasználó létrehozása

Ahhoz, hogy SMS-t tudj küldeni Python-ból, először telepítened kell az Ozeki SMS Gateway-t. Az SMS gateway telepíthető ugyanarra a számítógépre, ahol a Python kódodat fejleszted Python IDLE-ben vagy Jegyzettömbben. A telepítés után a következő lépés az, hogy csatlakoztad az Ozeki SMS Gateway-t a mobil hálózathoz. létrehozol egy HTTP SMS API felhasználói fiókot. Hozz létre egy felhasználót "User1" felhasználónévvel és "qwe123" jelszóval, hogy a példa módosítás nélkül működjön.

Miután a környezet be van állítva, futtathatod a Python kódodat.

HTTP API URL az SMS küldéséhez Python-ból

Az SMS küldéséhez Python-ból a Pythonodnak HTTP kérést kell küldenie az SMS gateway felé. Az API URL az alábbiakban látható. Fontos, hogy az IP cím (127.0.0.1) helyére az SMS gateway IP címét írd. Ha az Ozeki SMS Gateway ugyanarra a számítógépre van telepítve, ahol a Python SMS alkalmazás fut, ez lehet 127.0.0.1. Ha másik számítógépre van telepítve, akkor annak az IP címét kell megadni.

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

HTTP hitelesítés az SMS küldéséhez Python-ból

A Python SMS kliens hitelesítéséhez a felhasználónevet és a jelszót base64 kódolt formában kell elküldened a szervernek egy HTTP kérésben. A használt 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==. A küldéshez

HTTP kérés fejléc az SMS küldéséhez Python-ból

Az SMS üzenetek küldéséhez a következő sorokat kell tartalmaznia a HTTP kérés fejlécének. Figyelj rá, hogy tartalomtípust és egy Authorization fejlécet is tartalmazunk.

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

HTTP kérés az SMS küldéséhez Python-ból

Az SMS beküldéséhez a Python alkalmazásod egy olyan HTTP kérést fog küldeni, mint az alábbi. Figyelj rá, hogy ez a kérés tartalmaz egy HTTP fejléc részt és egy HTTP törzs részt. A HTTP törzs egy JSON kódolt adatsztring. Tartalmazza a címzett számát és az üzenet szövegét.

		POST /api?action=sendmsg HTTP/1.1
		Connection: Keep-Alive
		Content-Length: 336
		Content-Type: application/json
		Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
		Host: 127.0.0.1:9509
		
		{
		  "messages": [
		    {
		      "message_id": "b570dbae-3a05-456d-9dad-a02161b16f1c",
		      "to_address": "+36201111111",
		      "text": "Hello, World!",
		      "create_date": "2021-06-11 11:20:02",
		      "valid_until": "2021-06-18 11:20:02",
		      "time_to_send": "2021-06-11 11:20:02",
		      "submit_report_requested": true,
		      "delivery_report_requested": true,
		      "view_report_requested": true,
		      "tags": []
		    }
		  ]
		}
	

HTTP válasz, amit a Python SMS példa kap

Amint az SMS gateway megkapja ezt a kérést, generál egy HTTP választ. A HTTP válasz tartalmaz egy státuszkódot, amely jelzi, hogy az SMS beküldési kérés sikeres volt-e vagy sem. Visszaad egy JSON kódolt struktúrát is, amely hasznos részleteket nyújt az üzenet beküldéséről.

		HTTP/1.1 200 OK
		User-Agent: OZEKI 10.3.116 (www.myozeki.com)
		Content-Type: application/json; charset=utf8
		Last-Modified: Fri, 11 Jun 2021 11:17:49 GMT
		Server: 10/10.3.116
		Transfer-Encoding: chunked
		
		{
		  "http_code": 200,
		  "response_code": "SUCCESS",
		  "response_msg": "Messages queued for delivery.",
		  "data": {
		    "total_count": 1,
		    "success_count": 1,
		    "failed_count": 0,
		    "messages": [
		      {
		        "message_id": "b570dbae-3a05-456d-9dad-a02161b16f1c",
		        "from_station": "%",
		        "to_address": "+36201111111",
		        "to_station": "%",
		        "text": "Hello, World!",
		        "create_date": "2021-06-11 11:20:02",
		        "valid_until": "2021-06-18 11:20:02",
		        "time_to_send": "2021-06-11 11:20:02",
		        "submit_report_requested": true,
		        "delivery_report_requested": true,
		        "view_report_requested": false,
		        "tags": [
		          {
		            "name": "Type",
		            "value": "SMS:TEXT"
		          }
		        ],
		        "status": "SUCCESS"
		      }
		    ]
		  }
		}
	

Csatlakoztasd az SMS gateway-t a mobil hálózathoz és hozz létre egy HTTP API felhasználói fiókot

Feltételezzük, hogy már telepítetted az Ozeki SMS Gateway-t, és csatlakoztattad a mobil hálózathoz. Ahhoz, hogy SMS-t tudj küldeni mobiltelefonra Python-ból, létre kell hoznod egy HTTP API felhasználói fiókot az Ozeki SMS Gateway-ben.

Új felhasználó létrehozása (Videó útmutató)

Ez a videó bemutatja, hogyan állíthatsz be egy új HTTP API felhasználói fiókot. Az Ozeki SMS Gateway kezdőlapjáról indul, és az új felhasználó Események lapjával ér véget. A videó megmutatja, hogyan hozhatod létre és konfigurálhatod az új felhasználót. A videó nagy előnye, hogy mindössze 30 másodperc hosszú, de tartalmazza az összes szükséges információt egy új http api felhasználó létrehozásához.

1. videó - Hogyan állítsunk be egy HTTP API felhasználói fiókot (Videó útmutató)

Hogyan küldjünk SMS-t Python-ból a Python SMS API használatával (Videó útmutató)

Ez a videó bemutatja, hogyan töltheted le a SendSms.py.zip fájlt erről az oldalról, és hogyan nyithatod meg a benne található fájl tartalmát bármilyen szövegszerkesztőben, például a Windows Jegyzettömbben. Ha megnézed a videót, észreveszed, hogy a SendSms.py zip tartalma a Windows asztalra kerül.

2. videó - Hogyan töltsük le és nyissuk meg a példa projektet (Videó útmutató)

Python SMS példa: SendSms.py

Az alábbi példakód a SendSms.py.zip fájl része.

hogyan küldjünk sms-t python szkripttel
3. ábra - SendSms.py

Az SMS küldéséhez a fenti példa projekttel futtatnod kell a python szkriptet a python SendSms.py paranccsal. A szkript futása után észreveszed, hogy a parancssor azt mondja, hogy meg kell nyitnod a http://127.0.0.1:5000 URL-t. Itt láthatod az első python flask projektet, amely képes SMS üzenetet küldeni az Ozeki SMS Gateway felé.

a sendsms python szkript futtatása
4. ábra - A SendSms.py python szkript kimenete

a python szkript eredménye
5. ábra - A SendSms.html weboldal

Hogyan ellenőrizzük, hogy az SMS-t elfogadta-e a HTTP felhasználó (Videó útmutató)

Az SMS beküldése után jó ötlet ellenőrizni az SMS gateway-t, hogy lássuk, mit kapott. A naplót az Ozeki SMS Gateway kezelőfelületén az HTTP felhasználó részleteinek megnyitásával ellenőrizheted. A következő videó bemutatja, hogy mire kell figyelni. A videó a megnyitott kóddal kezdődik, és az elküldött üzenet részleteivel ér véget. Megtanulod, hogyan indítsd el a projektet, hogyan néz ki a projekt futás közben, és hogyan néz ki a naplófájl utána. A videó mindössze 42 másodperc hosszú és könnyen érthető. Nem lesz gondod a követésével.

3. videó - Hogyan küldjünk SMS-t a fenti Python szkripttel (Videó útmutató)

Hogyan ellenőrizzük, hogy az SMS el lett-e küldve a mobil hálózatnak

A folyamat ellenőrzésének utolsó lépése, hogy megnézzük a mobil hálózati kapcsolat naplóit. Lehet, hogy be kell kapcsolnod a naplózást a kapcsolat beállításaiban, mielőtt elküldöd az üzenetet, hogy lásd a naplókat. Ha a naplózás be van kapcsolva, látni fogod a telefonszámot és az elküldött üzenet szövegét.

Teszteld, hogy a kérést elfogadták-e (Videó útmutató)

A következő videóban látni fogod, hogyan ellenőrizheted, hogy az SMPP kliens sikeresen elküldte-e az üzenetedet. Megtanulod, hogyan nyithatod meg az SMPP felhasználó Események lapját és hogy mire kell figyelni. A videó mindössze 18 másodperc hosszú, de nagyon hasznos lesz.

4. videó - Hogyan teszteljük, hogy a kérést elfogadta-e az SMPP kliens (Videó útmutató)

SMS érkezik a telefonra (Videó útmutató)

A következő videón láthatod, hogyan néz ki egy bejövő üzenet, amelyet az Ozeki SMS Gateway küldött. Egy android telefon kezdőképernyőjével kezdődik, és az üzenet megnyitásával ér véget. Mindössze 18 másodperc hosszú, és láthatod az egész üzenet fogadási folyamatát.

5. videó - Hogyan néz ki az SMS üzenet a mobiltelefonon (Videó útmutató)

Összefoglalás

A fenti útmutató elmagyarázta az SMS küldésének lépéseit Python Flask-ből. Amint látható, az Ozeki minden szükséges eszközt biztosít az üzenetküldéshez, így ha gondosan követed a lépéseket, az üzenetküldés Python-ból már nem lesz probléma. Az Ozeki SMS Gateway hatalmas szerepet játszik a kézbesítésben, enélkül a program nélkül nem tudnál elérni a mobil felhasználókhoz. Fontos megjegyezni, hogy az Ozeki SMS Gateway bármely országban működik, így nemzetközi szinten is küldhetsz üzeneteket ezzel a megoldással.

Ne állj meg itt, böngészd az Ozeki oktatóanyagait és tanulj meg SMS fogadásáról Python-ban.

A következő lépés, hogy letöltöd az Ozeki SMS Gateway-t és elkezded a munkát!

More information