Jak wysłać wiele wiadomości SMS z Python Flask

Najprostszym sposobem wysyłania SMS-ów z Python Flask jest użycie wbudowanego interfejsu HTTP/Rest SMS API Ozeki SMS Gateway. Kiedy używasz tego API, będziesz wysyłać wiadomości SMS poprzez wysłanie żądania HTTP Post do bramki SMS. Żądanie HTTP Post będzie zawierać wiadomość sformatowaną w formacie JSON. Bramka SMS wyśle tę wiadomość SMS na telefon odbiorcy i zwróci odpowiedź HTTP 200 OK na Twoje żądanie.

jak wysłać wiele wiadomości SMS z python flask
Rysunek 1 - Jak wysłać wiele wiadomości SMS z Python Flask

Kod Python do wysyłania SMS-ów na telefon

Poniższy przykładowy kod Python do wysyłania SMS-ów demonstruje, jak możesz wysyłać SMS-y przy użyciu interfejsu HTTP REST SMS API Ozeki SMS Gateway, korzystając z biblioteki Python ozekilibsrest. Ta biblioteka jest dostarczana bezpłatnie i możesz jej używać oraz modyfikować w dowolnym z Twoich projektów.

SendMultipleSms.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)
		
		messages_to_send = []
		logs = []
		
		
		@app.route('/', methods=['GET', 'POST'])
		def index():
		    if request.method == 'POST':
		        if request.form['submit'] == 'SEND' and len(messages_to_send) > 0:
		            log = api.send(messages_to_send)
		            logs.append(log)
		            messages_to_send.clear()
		        elif request.form['submit'] == 'ADD':
		            message = Message(
		                to_address=request.form['to_address'],
		                text=request.form['text']
		            )
		            messages_to_send.append(message)
		    return render_template('SendMultipleSms.html', logs=logs, messages=messages_to_send)
		
		
		if __name__ == '__main__':
		    app.run()
	

Kod 1 - SendMultipleSms.py

SendMultipleSms.html

		<!DOCTYPE html>
		<html lang="en">
		    <head>
		        <meta charset="UTF-8">
		        <title>Send multiple 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: 8vh; 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="ADD">
		        </form>
		        <ul style="width: 40%; margin-left: 30%;
		        margin-bottom: 30px; height: 20vh; overflow-y: scroll;"
		            class="list-group card">
		            <li class="list-group-item card"><b>Messages:</b></li>
		            {% if messages %}
		                {%for message in messages%}
		                    <li class="list-group-item">{{ message }}</li>
		                {%endfor%}
		            {% endif  %}
		        </ul>
		        <form method="POST" class="form-group"
		        style="width: 40%; margin-left: 30%;
		            display: flex; flex-direction: column;
		            height: auto; justify-content: space-evenly;">
		            <input class="btn btn-primary"
		                   style="font-weight: 600;"
		                   type="submit"
		                   name="submit"
		                   value="SEND">
		        </form>
		        <ul style="width: 40%; margin-left: 30%;
		        margin-top: 30px; height: 20vh;
		        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>
	

Kod 2 - SendMultipleSms.html

Jak używać przykładu wysyłania SMS-ów w Python Flask:

Ten przykład wysyłania SMS-ów w Python Flask może być używany w dowolnej aplikacji Python. Aby go użyć, musisz zainstalować pakiet ozekilibsrest za pomocą polecenia pip install ozekilibsrest oraz pakiet flask za pomocą polecenia pip install flask. Po zainstalowaniu pakietów musisz dodać dyrektywę from ozekilibsrest import Configuration, Message, MessageApi oraz from flask import Flask, render_template, request do sekcji nagłówkowej Twojego kodu źródłowego Python. To pozwoli Ci używać klas dostarczanych 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 albo poprzez połączenie bezprzewodowe, albo przez Internet.

Pobierz SendMultipleSms.py

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

Co znajduje się w folderze SendMultipleSms.py?

Folder SendMultipleSms.py zawiera skrypt przykładowy Pythona z użyciem Flask, który pokazuje, jak wysyłać wiele wiadomości SMS za pomocą Pythona.

send multiple sms py directory
Rysunek 2 - Zawartość pliku SendMultipleSms.py.zip

Jak zainstalować bibliotekę ozekilibsrest

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

		pip install ozekilibsrest
	

Kod 3 - Komenda do instalacji biblioteki ozekilibsrest

Jak zainstalować bibliotekę flask

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

		pip install flask
	

Kod 2 - Komenda do instalacji biblioteki flask

Jak wysłać wiele SMS-ów z Pythona flask (Szybkie kroki)

Aby wysłać wiele SMS-ów z Pythona flask:

  1. Pobierz i zainstaluj Pythona
  2. Zainstaluj bibliotekę ozekilibsrest za pomocą pip lub codna
  3. Zainstaluj bibliotekę flask za pomocą pip lub codna
  4. Pobierz plik SendMultipleSms.py.zip
  5. Wypakuj plik .zip z folderu Pobrane
  6. Otwórz plik SendMultipleSms.py w dowolnym edytorze tekstu
  7. Uruchom Ozeki SMS Gateway
  8. Utwórz użytkownika HTTP API w Ozeki
  9. Uruchom kod SendMultipleSms.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, najpierw musisz zainstalować Ozeki SMS Gateway. Bramka SMS może być zainstalowana na tym samym komputerze, na którym tworzysz swój kod Pythona. Po instalacji kolejnym 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 Pythona.

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

Aby wysyłać SMS-y z Pythona, Twój Python będzie musiał wysłać żądanie HTTP do bramki SMS. URL API jest pokazany poniżej. Należy zauważyć, ż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, 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

Aby uwierzytelnić klienta SMS Pythona, należy wysłać nazwę użytkownika i hasło w zakodowanym ciągu 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

Aby wysłać wiadomości SMS, należy uwzględnić następujące linie jako nagłówki w żądaniu HTTP. Należy zauważyć, że zawieramy typ zawartości i nagłówek Authorization.

		Content-Type: application/json
		Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	
Żądanie HTTP do wysłania SMS-a z Pythona

Aby przesłać wiadomości SMS, Twoja aplikacja Python wyśle żądanie HTTP podobne do poniższego. Zauważ, że to żądanie zawiera część nagłówka HTTP i część ciała HTTP. Ciało HTTP to zakodowany ciąg danych JSON. Zawiera numery odbiorców i teksty wiadomości.

		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: 1027
		
		{
			"messages": [
				{
					"message_id": "cf609600-7269-46e3-ab6e-87ef5a99f848",
					"to_address": "+3620111111",
					"text": "Hello world 1!",
					"create_date": "2021-09-10T15:19:20",
					"valid_until": "2021-09-17T15:19:20",
					"time_to_send": "2021-09-10T15:19:20",
					"submit_report_requested": true,
					"delivery_report_requested": true,
					"view_report_requested": true,
					"tags": []
				},
				{
					"message_id": "8d93e43a-b4dc-493f-a243-10db358a58ec",
					"to_address": "+36202222222",
					"text": "Hello world 2!",
					"create_date": "2021-09-10T15:19:20",
					"valid_until": "2021-09-17T15:19:20",
					"time_to_send": "2021-09-10T15:19:20",
					"submit_report_requested": true,
					"delivery_report_requested": true,
					"view_report_requested": true,
					"tags": []
				},
				{
					"message_id": "35e56437-15e4-4ee7-9ad4-dfc00a8f7c3a",
					"to_address": "+36203333333",
					"text": "Hello world 3!",
					"create_date": "2021-09-10T15:19:20",
					"valid_until": "2021-09-17T15:19:20",
					"time_to_send": "2021-09-10T15:19:20",
					"submit_report_requested": true,
					"delivery_report_requested": true,
					"view_report_requested": true,
					"tags": []
				}
			]
		}
	

Odpowiedź HTTP otrzymana przez przykład SMS w Pythonie

Gdy brama SMS odbierze 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ż zakodowaną strukturę JSON, aby dostarczyć 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, 10 Sep 2021 10:22:37 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, 10 Sep 2021 13:19:19 GMT
		
		{
		  "http_code": 200,
		  "response_code": "SUCCESS",
		  "response_msg": "Wiadomości zakolejkowane do wysłania.",
		  "data": {
		    "total_count": 3,
		    "success_count": 3,
		    "failed_count": 0,
		    "messages": [
		      {
		        "message_id": "cf609600-7269-46e3-ab6e-87ef5a99f848",
		        "from_station": "%",
		        "to_address": "+3620111111",
		        "to_station": "%",
		        "text": "Hello world 1!",
		        "create_date": "2021-09-10 15:19:20",
		        "valid_until": "2021-09-17 15:19:20",
		        "time_to_send": "2021-09-10 15:19:20",
		        "submit_report_requested": true,
		        "delivery_report_requested": true,
		        "view_report_requested": false,
		        "tags": [
		          {
		            "name": "Type",
		            "value": "SMS:TEXT"
		          }
		        ],
		        "status": "SUCCESS"
		      },
		      {
		        "message_id": "8d93e43a-b4dc-493f-a243-10db358a58ec",
		        "from_station": "%",
		        "to_address": "+36202222222",
		        "to_station": "%",
		        "text": "Hello world 2!",
		        "create_date": "2021-09-10 15:19:20",
		        "valid_until": "2021-09-17 15:19:20",
		        "time_to_send": "2021-09-10 15:19:20",
		        "submit_report_requested": true,
		        "delivery_report_requested": true,
		        "view_report_requested": false,
		        "tags": [
		          {
		            "name": "Type",
		            "value": "SMS:TEXT"
		          }
		        ],
		        "status": "SUCCESS"
		      },
		      {
		        "message_id": "35e56437-15e4-4ee7-9ad4-dfc00a8f7c3a",
		        "from_station": "%",
		        "to_address": "+36203333333",
		        "to_station": "%",
		        "text": "Hello world 3!",
		        "create_date": "2021-09-10 15:19:20",
		        "valid_until": "2021-09-17 15:19:20",
		        "time_to_send": "2021-09-10 15:19:20",
		        "submit_report_requested": true,
		        "delivery_report_requested": true,
		        "view_report_requested": false,
		        "tags": [
		          {
		            "name": "Type",
		            "value": "SMS:TEXT"
		          }
		        ],
		        "status": "SUCCESS"
		      }
		    ]
		  }
		}
	

Przykład SMS w Pythonie: SendMultipleSms.py

Jak pobrać projekt SendMultipleSMS.py (Samouczek wideo)

W poniższym filmie dowiesz się, jak możesz wykorzystać projekt SendMultipleSms.py w Pythonie. 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 kodu. Film trwa tylko 54 sekundy, ale zawiera wszystkie niezbędne informacje, które pozwolą Ci skutecznie wykorzystać przykładowy plik kodu.

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

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

jak wysłać wiele SMS-ów za pomocą Pythona
Rysunek 3 - SendMultipleSms.py

Aby wysłać SMS za pomocą powyższego projektu przykładowego, należy uruchomić skrypt Pythona za pomocą polecenia python SendSms.py. Po uruchomieniu skryptu zauważysz, że wiersz poleceń informuje o konieczności otwarcia adresu URL http://127.0.0.1:5000. Tam zobaczysz swój pierwszy projekt w Python Flask, który umożliwia wysłanie wielu wiadomości SMS do bramki SMS Ozeki.

wynik działania skryptu Pythona
Rysunek 4 - Wynik działania skryptu Pythona SendMultipleSms.py

wynik działania skryptu Pythona
Rysunek 5 - Strona internetowa SendMultipleSms.html

Jak używać projektu (Samouczek wideo)

W poniższym klipie zobaczysz, jak można uruchomić kod Pythona SendMultipleSms.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 SendMultipleSms.py (Samouczek wideo)

Podsumowanie

W tym artykule pokazano kroki wysyłania wielu SMS-ów w jednym żądaniu z Pythona Flask.

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

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

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

More information