Hogyan ütemezhetünk SMS-t Python Flask-ben

A legegyszerűbb módja az ütemezett SMS küldésének Pythonbó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 telefonjára, és egy HTTP 200 OK választ küld vissza a kérésedre.

hogyan ütemezhetünk sms-t python flask-ben
1. ábra - Hogyan ütemezhetünk SMS-t Python Flask-ben

Python kód mobilra ütemezett SMS küldéséhez

Az alábbi Python SMS kód minta bemutatja, hogyan küldhetsz ütemezett 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ő, és bármely projektjében használhatod és módosíthatod.

SendScheduledSms.py

		from flask import Flask, render_template, request
		from ozekilibsrest import Configuration, Message, MessageApi
		from datetime import datetime
		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'],
		            time_to_send=datetime.strptime(request.form.get('time_to_send'),
		            "%Y-%m-%d %H:%M:%S")
		        )
		        log = api.send(message)
		        logs.append(log)
		    return render_template('SendScheduledSms.html', logs=logs)
		
		
		if __name__ == '__main__':
		    app.run()
	

1. kód - SendScheduledSms.py

SendScheduledSms.html

		<!DOCTYPE html>
		<html lang="en">
		    <head>
		        <meta charset="UTF-8">
		        <title>Send scheduled 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: 40vh;
		        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>
		            <b>Time to send:</b>
		            <input class="form-control"
		                   type="text" name="time_to_send"
		                   placeholder="2021-08-06 16:30:00"
		                   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: 38vh; 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 - SendScheduledSms.html

Hogyan használd a Python SMS példát:

Ez a Python SMS példa bármely Python alkalmazásban használható. A használatához telepítened kell az ozekilibsrest csomagot a pip install ozekilibsrest paranccsal. A csomag telepítése után be kell illesztened a from ozekilibsrest import Configuration, Message, MessageApi utasítást a Python forráskódod fejléc részébe. Ez lehetővé teszi az ozekilibsrest könyvtár által nyújtott osztályok használatát. A Message osztály segítségével hozhatod létre az SMS-t. A 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ózat felé vezeték nélküli kapcsolaton vagy az interneten keresztül.

SendScheduledSms.py letöltése

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

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

A SendScheduledSms.py mappa tartalmazza a Python SMS példa szkriptjét, amely bemutatja, hogyan küldhetsz ütemezett SMS üzeneteket Python használatával.

send scheduled sms py könyvtár
2. ábra - Mi található a SendScheduledSms.py.zip fájlban

Hogyan telepítsd az ozekilibsrest könyvtárat

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égeit.

		pip install ozekilibsrest
	

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

Hogyan telepítsd a flask könyvtárat

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égeit.

		pip install flask
	

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

Hogyan küldj ütemezett SMS-t Pythonból (Gyors lépések)

Ütemezett SMS küldése Pythonból:

  1. Töltsd le és telepítsd a Python-t
  2. Telepítsd az ozekilibsrest könyvtárat pip vagy conda használatával
  3. Töltsd le a SendScheduledSms.py.zip fájlt
  4. Csomagold ki a .zip fájlt a Letöltések mappából
  5. Nyisd meg a SendScheduledSms.py fájlt bármely szövegszerkesztőben
  6. Indítsd el az Ozeki SMS Gateway-t
  7. Hozz létre egy HTTP API felhasználót az Ozeki-ben
  8. Futtasd a SendScheduledSms.py kódot a parancssorból teszt SMS üzenetek küldéséhez
  9. Ellenőrizd a Küldött mappát az Ozeki SMS Gateway-ben

Telepítsd az Ozeki SMS Gateway-t és hozz létre egy HTTP API felhasználót

Ahhoz, hogy SMS-t tudj küldeni Pythonbó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. A telepítés után a következő lépés az, hogy csatlakoztathatod az Ozeki SMS Gateway-t a mobil hálózathoz. Küldhetsz egy teszt SMS-t az Ozeki GUI-ból annak ellenőrzésére, hogy a mobil hálózati kapcsolatod működik. Az utolsó lépés a környezet előkészítéséhez az, hogy létrehozol egy HTTP SMS API felhasználói fiókot. 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.

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

HTTP API URL SMS küldéséhez Pythonból

Ahhoz, hogy SMS-t küldj Pythonból, a Pythonodnak HTTP kérést kell küldenie az SMS gateway felé. Az API URL az alábbiakban látható. Figyelj arra, hogy az IP cím (127.0.0.1) helyettesíthető az SMS gateway IP címével. 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, annak az IP címét kell megadni.

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

HTTP hitelesítés SMS küldéséhez Pythonból

A Python SMS kliens hitelesítéséhez a felhasználónevet és a jelszót base64 kódolt karakterláncként kell elküldened a szervernek egy HTTP kérésben. A használt formátum: base64(username+":"+password). Pythonban a következő kódot használhatod a kódoláshoz:

	    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 karakterláncot kapod: aHR0cF91c2VyOnF3ZTEyMw==.

HTTP kérés fejléc SMS küldéséhez Pythonból

Az SMS üzenetek küldéséhez a következő sorokat kell belefoglalnod fejlécnek a HTTP kérésbe. 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 Pythonból

Az SMS üzenetek beküldéséhez a Python alkalmazásod egy HTTP kérést fog küldeni, amely hasonlít az alábbihoz. Figyelj arra, 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 adat karakterlánc. Tartalmazza a címzett számát és az üzenet szövegét.

POST /api?action=sendmsg 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==
Content-Type: application/json
Content-Length: 349

{
	"messages": [
		{
			"message_id": "cd0067bf-0797-489e-8796-325dacc68552",
			"to_address": "+3620111111",
			"text": "Hello world!",
			"create_date": "2021-09-17T08:20:15",
			"valid_until": "2021-09-24T08:20:15",
			"time_to_send": "2021-09-17T08:25:00",
			"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, hogy jelezze, sikeres volt-e az SMS beküldési kérés vagy sem. 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: Thu, 16 Sep 2021 09:14:44 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 06:20:15 GMT

{
  "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": "cd0067bf-0797-489e-8796-325dacc68552",
        "from_station": "%",
        "to_address": "+3620111111",
        "to_station": "%",
        "text": "Hello world!",
        "create_date": "2021-09-17 08:20:15",
        "valid_until": "2021-09-24 08:20:15",
        "time_to_send": "2021-09-17 08:25:00",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      }
    ]
  }
}
	

Python SMS példa: SendScheduledSms.py

Hogyan töltsd le a SendScheduledSMS.py projektet (Videó útmutató)

A következő videóban megtanulhatod, hogyan használhatod a SendScheduledSms.py Python 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ód fájlt. A videó mindössze 34 másodperc hosszú, de tartalmazza az összes szükséges információt, amelyre szükséged van a példa kód fájl sikeres használatához.

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

Az alábbi példa kód a SendScheduledSms.py.zip mappa része.

sendscheduledsms.py
3. ábra - SendScheduledSms.py

Ahhoz, hogy SMS-t küldj 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 ütemezett SMS-t küldeni az Ozeki SMS Gateway felé.

send scheduled sms python fájl
4. ábra - A SendScheduledSms.py szkript kimenete

send scheduled sms html fájl
5. ábra - A SendScheduledSms.py szkript eredménye

Hogyan használd a projektet (Videó útmutató)

A következő klipben látni fogod, hogyan indíthatod el a SendScheduledSms.py Python kódot. A videó a megnyitott kóddal kezdődik, és végigvezet az események lapig 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ódott. A videó egy kicsit hosszabb mint 1 perc, de tartalmazza az összes szükséges információt a projekt futtatásához.

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

Összegzés

Ez a cikk bemutatta az ütemezett SMS küldésének lépéseit egy kérésben Pythonból.

Ezzel a tudással és a nyújtott 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 üzenet kézbesítését. Az Ozeki SMS Gateway nagy minőségben és teljesítménnyel működik, lehetővé téve számodra 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 SMS fogadása Pythonban.

Most már csak annyi a dolgod, hogy letöltöd az Ozeki SMS Gateway-t és elkezdesz dolgozni!

More information