Como enviar SMS a partir do Python flask
A maneira mais simples de enviar SMS a partir do Python flask é usar a API de SMS HTTP/Rest integrada do Ozeki SMS Gateway. Ao usar esta API, você enviará mensagens SMS emitindo uma solicitação HTTP Post para o gateway de SMS. A solicitação HTTP Post conterá uma mensagem formatada em formato json. O gateway de SMS enviará este SMS para o telefone do destinatário e retornará uma resposta HTTP 200 OK para sua solicitação.
O exemplo de código Python para SMS abaixo demonstra como você pode enviar SMS usando a API de SMS HTTP Rest do Ozeki SMS Gateway com a biblioteca Python ozekilibsrest. Esta biblioteca é fornecida gratuitamente e você pode usá-la e modificá-la em qualquer um de seus projetos.
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()
SendSms.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Enviar SMS com 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>Para endereço:</b> <input class="form-control" type="text" name="to_address" placeholder="+36201111111" autocomplete=false> <b>Texto:</b> <input class="form-control" type="text" name="text" placeholder="Olá mundo!" autocomplete=false> <input class="btn btn-primary" style="font-weight: 600;" type="submit" name="submit" value="ENVIAR"> </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>
Como usar o exemplo de SMS em Python:
Este exemplo de SMS em Python flask pode ser usado em qualquer aplicação Python. Para usá-lo, você deve instalar o pacote ozekilibsrest com o comando pip install ozekilibsrest e o pacote flask com o comando pip install flask. Após a instalação dos pacotes, você deve incluir a diretiva from ozekilibsrest import Configuration, Message, MessageApi e a diretiva from flask import Flask, render_template, request na seção de cabeçalho do seu código-fonte Python. Isso permitirá que você use as classes fornecidas pela biblioteca ozekilibsrest. Você pode usar a classe Message para criar o SMS. Você pode usar a classe MessageApi para enviar o SMS para o gateway de SMS. O gateway de SMS encaminhará sua mensagem para a rede móvel, seja através de uma conexão sem fio ou pela Internet.
Baixar SendSms.py
O código-fonte explicado neste artigo pode ser baixado, usado e modificado gratuitamente.
Download: SendSms.py.zip (1.42Kb)
A pasta SendSms.py contém o script do exemplo de SMS em Python que mostrará como enviar múltiplas mensagens SMS usando Python.
Para instalar a biblioteca ozekilibsrest, você deve abrir o prompt de comando e usar o seguinte comando. Isso instalará a biblioteca ozekilibsrest e as dependências necessárias.
pip install ozekilibsrest
Para instalar a biblioteca flask, você deve abrir o prompt de comando e usar o seguinte comando. Isso instalará a biblioteca flask e as dependências necessárias.
pip install flask
Como enviar SMS a partir do Python (Diretrizes simples)
Para enviar SMS a partir do Python:
- Baixe e instale o Python
- Instale a biblioteca ozekilibsrest usando pip ou codna
- Instale a biblioteca flask usando pip ou codna
- Instale um usuário de API HTTP
- Ative os eventos de comunicação de log na guia Avançado
- Baixe o SendSMS.py
- Abra o arquivo SendSms.py no bloco de notas do Windows
- Altere os dados para os seus próprios
- Inicie o aplicativo Ozeki SMS Gateway
- Execute o código Python SendSms.py abrindo-o
- Verifique os logs para ver se o SMS foi enviado
Instale o Ozeki SMS Gateway e crie um usuário de API HTTP
Para poder enviar SMS a partir do Python, primeiro você precisa instalar o Ozeki SMS Gateway. O gateway SMS pode ser instalado no mesmo computador onde você desenvolve seu código Python no Python IDLE ou no Bloco de Notas. Após a instalação, o próximo passo é conectar o Ozeki SMS Gateway à rede móvel. Você pode enviar um SMS de teste a partir da interface gráfica do Ozeki para verificar se sua conexão com a rede móvel está funcionando. O passo final para preparar seu ambiente é criar um usuário de API HTTP para SMS. Crie um usuário com o nome de usuário "User1" e senha "qwe123" para que o exemplo funcione sem modificações.
Após a configuração do ambiente, você pode executar seu código Python.
URL da API HTTP para enviar SMS a partir do Python
Para enviar SMS a partir do Python, seu código Python terá que fazer uma requisição HTTP para o gateway SMS. A URL da API é mostrada abaixo. Observe que o endereço IP (127.0.0.1) deve ser substituído pelo endereço IP do seu gateway SMS. Se o Ozeki SMS Gateway estiver instalado no mesmo computador onde o aplicativo Python de SMS está sendo executado, pode ser 127.0.0.1. Se estiver instalado em um computador diferente, deve ser o endereço IP desse computador.
http://127.0.0.1:9509/api?action=rest
Autenticação HTTP para enviar SMS a partir do Python
Para autenticar o cliente de SMS em Python, você precisa enviar o nome de usuário e senha em uma string codificada em base64 para o servidor em uma requisição HTTP. O formato usado é: base64(nome de usuário+":"+senha). Em Python, você pode usar o seguinte código para fazer essa codificação:
def create_authorization_header(username, password): username_password = f'{ username }:{ password }' return f'Basic { b64encode(username_password.encode()).decode() }'
Por exemplo, se você codificar o nome de usuário 'http_user' e a senha 'qwe123', você obterá a seguinte string codificada em base64: aHR0cF91c2VyOnF3ZTEyMw==. Para enviar
Cabeçalho da requisição HTTP para enviar SMS a partir do Python
Para enviar as mensagens SMS, você precisa incluir as seguintes linhas como cabeçalhos na requisição HTTP. Observe que incluímos um tipo de conteúdo e um cabeçalho de Autorização.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Requisição HTTP para enviar SMS a partir do Python
Para enviar o SMS, seu aplicativo Python enviará uma requisição HTTP semelhante à mostrada abaixo. Observe que esta requisição contém uma parte de cabeçalho HTTP e uma parte de corpo HTTP. O corpo HTTP é uma string de dados codificada em JSON. Ela contém o número do destinatário e o texto da mensagem.
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": [] } ] }
Resposta HTTP recebida pelo exemplo de SMS em Python
Assim que o gateway SMS receber esta requisição, ele gerará uma resposta HTTP. A resposta HTTP conterá um código de status, para indicar se a requisição de envio de SMS foi bem-sucedida ou não. Ela também retornará uma estrutura codificada em JSON para fornecer detalhes úteis sobre o envio da mensagem.
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" } ] } }
Conecte seu gateway SMS à rede móvel e crie uma conta de usuário de API HTTP
Assumimos que você já instalou o Ozeki SMS Gateway, e que você conectou-o à rede móvel. Para poder enviar SMS para um telefone móvel a partir do Python, você precisa configurar uma conta de usuário de API HTTP no Ozeki SMS Gateway.
Criar um novo usuário (Tutorial em vídeo)
Este vídeo apresenta como configurar uma nova conta de usuário da API HTTP. Ele começará com a página inicial do Ozeki SMS Gateway e terminará com a aba de Eventos do novo usuário. O vídeo mostrará como criar e configurar seu novo usuário. O melhor deste vídeo é que ele tem apenas 30 segundos de duração mas contém todas as informações necessárias para criar um novo usuário da API HTTP.
Como enviar SMS do Python usando a API de SMS Python (Tutorial em vídeo)
Este vídeo mostra como baixar o arquivo SendSms.py.zip desta página e como abrir o conteúdo do arquivo incluído em qualquer editor de texto, como o Bloco de Notas do Windows. Se assistir ao vídeo, você notará que o conteúdo do SendSms.py.zip é colocado na área de trabalho do Windows.
Exemplo de SMS em Python: SendSms.py
O código de exemplo abaixo faz parte do arquivo SendSms.py.zip.
Para enviar um SMS com o projeto de exemplo acima, você deve executar o script Python usando o comando python SendSms.py. Após a execução do script, você notará que o prompt de comando indica que você deve abrir o URL http://127.0.0.1:5000. Lá, você poderá ver seu primeiro projeto em Python Flask, capaz de enviar uma mensagem SMS para o Ozeki SMS Gateway.
Após o envio do SMS, é uma boa ideia verificar seu gateway de SMS para ver o que foi recebido. Você pode verificar o log abrindo os detalhes do usuário HTTP no console de gerenciamento do Ozeki SMS Gateway. O vídeo a seguir mostra o que procurar. O vídeo começará com o código aberto e terminará com os detalhes da mensagem enviada. Você aprenderá como iniciar o projeto, como o projeto se parece durante a execução e como o arquivo de log aparece depois. O vídeo tem apenas 42 segundos e é fácil de entender. Você não terá problemas para acompanhá-lo.
Como verificar se o SMS foi enviado para a rede móvel
O passo final para verificar o procedimento é olhar os logs da conexão com a rede móvel. Talvez seja necessário ativar o log na configuração da conexão antes de enviar a mensagem para ver os logs. Se o log estiver ativado, você verá o número de telefone e o texto da mensagem que enviou.
Testar se a solicitação foi aceita (Tutorial em vídeo)No vídeo a seguir, você verá como verificar se o cliente SMPP teve sucesso ao enviar sua mensagem. Você aprenderá como abrir a aba de Eventos do usuário SMPP e o que procurar. O vídeo tem apenas 18 segundos de duração, mas será muito útil.
SMS recebido no telefone (Tutorial em vídeo)
No vídeo a seguir, você verá como é uma mensagem recebida enviada do Ozeki SMS Gateway. Ele começará com a tela inicial de um telefone Android e terminará com a mensagem aberta. Tem apenas 18 segundos de duração e você pode ver todo o processo de recebimento de uma mensagem.
Resumo
O guia acima explicou os passos para enviar SMS a partir do Python Flask. Como pode ser visto, o Ozeki fornece todas as ferramentas necessárias para o envio de mensagens, portanto, se os passos foram seguidos cuidadosamente, enviar mensagens a partir do Python não é mais um problema. O Ozeki SMS Gateway desempenha um papel enorme no envio, você não conseguiria alcançar os usuários móveis sem este programa. É importante notar que o Ozeki SMS Gateway funciona em qualquer país, assim, as mensagens podem ser enviadas internacionalmente com esta solução.
Não termine a leitura aqui, navegue pela página de tutoriais do Ozeki e aprenda sobre recebimento de SMS em Python.
A próxima coisa a fazer é baixar o Ozeki SMS Gateway e começar a trabalhar!
More information
- Enviar SMS em Python Flask com a API REST HTTP (exemplo de código)
- Enviar múltiplos SMS em Python Flask com a API REST HTTP (exemplo de código)
- Agendar SMS em Python Flask com a API REST HTTP (exemplo de código)
- Receber SMS em Python Flask com a API REST HTTP (exemplo de código)
- Excluir SMS em Python Flask com a API REST HTTP (exemplo de código)
- Como baixar a última biblioteca de SMS em Python Flask do Github