Como receber SMS em Python

A maneira mais simples de receber SMS em Python é usar a API HTTP/REST de SMS integrada do Ozeki SMS Gateway. Quando você usa essa API, receberá mensagens SMS enviando uma requisição HTTP GET para o gateway de SMS. A resposta HTTP Post conterá as mensagens formatadas em JSON. O gateway de SMS enviará as mensagens SMS para o aplicativo de console Python e retornará uma resposta HTTP 200 OK à sua requisição.

como receber sms em python
Figura 1 - Como receber SMS em Python

Código Python para receber SMS

O exemplo de código Python para SMS abaixo demonstra como você pode receber SMS usando a API HTTP REST de SMS 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.

ReceiveSms.py

		from ozekilibsrest import Configuration, MessageApi
		
		configuration = Configuration(
		    username="http_user",
		    password="qwe123",
		    api_url="http://127.0.0.1:9509/api"
		)
		
		api = MessageApi(configuration)
		
		results = api.download_incoming()
		
		print(results)
		
		for result in results.messages:
			print(result)
	

Como usar o exemplo de SMS em Python:

Este exemplo de SMS em Python pode ser usado em qualquer aplicação Python. Para usá-lo, você deve instalar o pacote ozekilibsrest com o comando pip install ozekilibsrest. Após a instalação do pacote, você deve incluir a diretiva "from ozekilibsrest import Configuration, Message, MessageApi" no 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 por uma conexão sem fio ou pela Internet.

Baixar ReceiveSms.py

O código-fonte explicado neste artigo pode ser baixado, usado e modificado gratuitamente.
Download: ReceiveSms.py.zip (352B)

O que há na pasta ReceiveSms.py?

A pasta ReceiveSms.py contém o script do exemplo de SMS em Python que mostrará como receber mensagens SMS usando Python.

diretório receive sms py
Figura 2 - O que há dentro de ReceiveSms.py.zip

Como instalar a biblioteca ozekilibsrest

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
	

Código 2 - Comando para instalar a biblioteca ozekilibsrest

Como receber SMS em Python (Passos rápidos)

Para receber SMS em Python:

  1. Baixe e instale o Python
  2. Instale a biblioteca ozekilibsrest usando pip ou conda
  3. Baixe o arquivo ReceiveSms.py.zip
  4. Extraia o arquivo .zip da pasta Downloads
  5. Abra o arquivo ReceiveSms.py em qualquer editor de texto
  6. Inicie o Ozeki SMS Gateway
  7. Crie um usuário de API HTTP no Ozeki
  8. Execute o código ReceiveSms.py usando o prompt de comando para enviar as mensagens SMS de teste
  9. Verifique a caixa "Enviados" no Ozeki SMS Gateway
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 de SMS pode ser instalado no mesmo computador onde você desenvolve seu código Python. 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 "http_user" e senha "qwe123" para fazer o exemplo funcionar 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 de 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 de SMS. Se o Ozeki SMS Gateway estiver instalado no mesmo computador onde o aplicativo Python 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==.

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 submeter as mensagens SMS, sua aplicação Python enviará uma requisição HTTP semelhante à abaixo. Observe que esta requisição contém uma parte de cabeçalho HTTP, no cabeçalho definimos a pasta da qual queremos baixar as mensagens e a ação. Também enviamos a senha e o nome de usuário codificados em Base64 para autenticar a requisição.

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==
	

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. Também retornará uma estrutura codificada em JSON para fornecer detalhes úteis sobre o envio da mensagem.

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": []
      }
    ]
  }
}	
	

Exemplo de SMS em Python: ReceiveSms.py

Como baixar o projeto ReceiveSMS.py (Tutorial em vídeo)

No vídeo a seguir, você aprenderá como usar o projeto Python ReceiveSms.py. O vídeo começará com a página de download e o levará até o painel do editor de código aberto. Você aprenderá como baixar e abrir o arquivo de código. O vídeo tem apenas 54 segundos, mas contém todas as informações necessárias para usar com sucesso o arquivo de código de exemplo.

Vídeo 1 - Como baixar e abrir a solução acima (Tutorial em vídeo)

O código de exemplo abaixo faz parte da pasta ReceiveSms.py.zip.

Figura 3 - ReceiveSms.py

Como usar o projeto (Tutorial em vídeo)

No seguinte clipe, você verá como pode executar o código Python ReceiveSms.py. O vídeo começará com o código aberto e o levará até a aba de eventos com o log da mensagem enviada. Você verá como executar o código e o que aconteceu se o código foi executado. O vídeo é um pouco mais curto que 1 minuto, mas contém todas as informações necessárias para executar o projeto.

Vídeo 2 - Como usar o script ReceiveSms.py (Tutorial em vídeo)

Conclusão

Este artigo mostrou os passos para receber SMS em uma única requisição usando Python.

Com este conhecimento e as ferramentas fornecidas, você deve ser capaz de alcançar vários clientes com um único código. O Ozeki SMS Gateway tem uma parte importante neste processo, pois este programa organiza a entrega das mensagens. O Ozeki SMS Gateway trabalha com alta qualidade e desempenho, permitindo que você envie até 1000 SMS por segundo.

Continue seu aprendizado nas páginas de tutorial da Ozeki, onde você pode ler sobre tópicos como exclusão de SMS em Python.

Agora, a única coisa que você precisa fazer é baixar o Ozeki SMS Gateway e começar a trabalhar!

More information