https://a.storyblok.com/f/270183/43939/cdfac4c073/receive-an-sms-with-python.png

Como receber mensagens SMS em Python

Publicado em October 11, 2023

Tempo de leitura: 12 minutos

Este artigo foi atualizado em agosto de 2025

Introdução

Este tutorial vai mostrar como receber mensagens SMS em Python com a ajuda da API da Vonage.

A Vonage possui duas APIs diferentes para o recebimento de SMS: a SMS API, utilizada exclusivamente para mensagens SMS, e a Messages API, que permite o uso de outros canais, como o WhatsApp. Neste tutorial, utilizaremos a Messages API para receber mensagens SMS com o Python.

As mensagens SMS recebidas serão captadas por meio de um webhook. Este artigo irá orientá-lo sobre como configurar esse webhook e conectá-lo à sua conta da Vonage.

Pré-requisitos

Para criar um aplicativo em Python para receber mensagens SMS, você precisará dos seguintes programas.

Python

É necessário ter o Python instalado para usar a biblioteca Flask. Acesse a página oficial página oficial de downloads do Python para baixar uma versão do Python compatível com o seu sistema.

Frasco

Você usará o Flask para criar seu webhook. Antes de instalar o Flask, crie o diretório do seu projeto e acesse-o da seguinte maneira:

mkdir receive_sms
cd receive_sms

Você pode instalar o Flask com o gerenciador de pacotes pip, que já vem instalado com o Python. Use o seguinte comando no terminal para instalar o Flask dentro da pasta recém-criada.

pip install flask

API da Vonage

Para usar a API do Messages API, você precisará de um Account da API do Vonage. Acesse o painel da API do Vonage para localizar sua chave de API e seu segredo de API, que estão na parte superior da página.

CLI da Vonage

O CLI da Vonage pode ser usado para adquirir um número virtual da Vonage, em vez de fazer a compra pela interface do painel de controle. Ele também pode ser usado para enviar um SMS de teste.

Instale a CLI do Vonage globalmente no seu terminal executando este comando:

npm install -g @vonage/cli

Para adquirir um número de telefone da Vonage por meio do CLI, primeiro configure suas credenciais de API com vonage config:set --apiKey=XXXXXX --apiSecret=XXXXXX, depois pesquise os números disponíveis com vonage numbers:search [Alpha-2 Country Code] e compre um usando vonage numbers:buy [Number] [Country Code].

Como alternativa, adquira um número diretamente por meio do seção “Comprar número” no seu painel de controle.

Como receber mensagens SMS em Python com a API da Vonage

Depois de instalar o Python, o Flask e a CLI da Vonage, você estará pronto para começar. A seguir, explicaremos como usar essas ferramentas para que o Python possa receber mensagens de texto da API da Vonage. Para criar um aplicativo em Python que receba mensagens SMS, basta seguir estas 4 etapas:

  1. Criar um webhook para SMS recebidas

  2. Torne a URL do webhook acessível ao público

  3. Configure seu account da Vonage

  4. Enviar e receber uma mensagem SMS de teste

1. Criar o webhook para SMS recebidas

O primeiro passo para receber um SMS em Python é criar um webhook para mensagens de texto recebidas.

Ao receber uma mensagem SMS na sua conta da Vonage, a Vonage verifica se você possui um webhook configurado. Se encontrar um webhook, ela poderá encaminhar a mensagem para o seu aplicativo. Você pode configurar o webhook para funcionar com um único número ou com todos os números da sua conta.

Para processar as mensagens recebidas, seu manipulador de webhook será projetado para aceitar uma POST solicitação. Para facilitar isso, você criará um endpoint do Flask dedicado a processar as solicitações recebidas.

Crie um sms-receive.py arquivo no seu projeto Flask e adicione o seguinte código:

from flask import Flask, request, jsonify
  
app = Flask(__name__)
  
@app.route("/webhooks/inbound-message", methods=['POST'])
def inbound_message():
 if request.is_json:
    data = request.get_json()
    print(data)
 else:
    data = dict(request.form) or dict(request.args)
    print(data)
 return "200"
  
if __name__ == '__main__':
 app.run(host="", port=3000)

Vamos analisar isso para entender como esse código funciona. No trecho de código anterior:

  • Você definiu um endpoint de webhook chamado /webhooks/inbound-message. Esse endpoint é responsável por receber e analisar os dados contidos nas cargas úteis das mensagens recebidas.

@app.route("/webhooks/inbound-message", methods=['POST'])
def inbound_message():
  • O request.get_json() método é utilizado para verificar se a solicitação está no formato JSON. Caso a solicitação não esteja no formato JSON, os pares chave/valor contidos no corpo da solicitação ou na string de consulta da URL são recuperados por meio de request.form e request.args, respectivamente.

if request.is_json:
    data = request.get_json()
  • Os dados da solicitação são analisados e armazenados na data variável e, em seguida, exibidos no terminal usando print.

data = request.get_json()
print(data)

Por fim, você indica que o aplicativo seja executado e servido na porta 3000.

if __name__ == '__main__':
 app.run(host="", port=3000)

Tornar a URL do Webhook acessível ao público

Para receber mensagens SMS, o endpoint do webhook do seu aplicativo Python deve estar acessível pela internet pública. Isso permite que a Vonage envie uma solicitação ao seu endpoint sempre que uma mensagem SMS for recebida.

Normalmente, no modo de produção, seria necessário um servidor com um domínio público para anexar ao endpoint. No entanto, para testes no modo de desenvolvimento, usaremos o o ngrok para simular o ambiente do servidor.

Você pode baixar ou instalar o ngrok no site oficial site. Confira o site do ngrok para obter detalhes sobre os limites do plano gratuito.


Em seguida, execute o ngrok no seu terminal:

ngrok http 3000

Assim que o ngrok for iniciado, ele gerará uma URL pública para você, semelhante à seguinte:

https://f9db-102-89-43-137.eu.ngrok.io -> http://localhost:80

Em seguida, você pode acrescentar seu endpoint às URLs do ngrok recém-geradas para formar as URLs dos seus webhooks, desta forma:

Agora, você precisará dessa URL ao criar seu aplicativo na próxima seção deste tutorial.

Configurar o Account da Vonage

Em seguida, você precisará configurar sua conta da Vonage para usar a API correta para mensagens SMS. Usaremos a Messages API para nosso aplicativo, em vez da SMS API.

Para ajustar essa configuração, acesse seu painel página de configurações . Em seguida, acesse as seção de configurações de SMS para selecionar a Messages API.

Select Messages API in the dashboard Settings pageMessages

Em seguida, acesse os página de Applications para criar um aplicativo.

Clique no botão “+ Criar aplicativo” .

Insira o nome desejado no campo .

Na seção “Recursos”, selecione Mensagens e insira seu webhook URL de entrada. Você pode conferir nosso tutorial sobre como configurar a URL de status para receber o status de entrega das SMS enviadas.

Setting webhook URLs to receive inbound messages.Messages Webhooks

Clique “Gerar novo aplicativo” para concluir o processo. Você será redirecionado para a página do aplicativo recém-criado. Nessa página, você pode vincular seu número ou pagar por um número virtual.

4. Enviar e receber uma mensagem SMS de teste

Seu aplicativo já está pronto para receber mensagens SMS de entrada!! Seu servidor ngrok está em execução na porta 3000, e você configurou seu aplicativo com um número virtual na sua conta da Vonage.

Agora, você pode iniciar o aplicativo Flask em outra janela do terminal para manter a janela anterior em execução com o ngrok.

python sms-`receive.py

Ao executar esse comando, sua aplicação Flask será iniciada na porta do seu host local 3000. Essa porta será detectada automaticamente pelo ngrok, permitindo que você disponibilize seu aplicativo na internet pública usando a URL pública do ngrok.

Agora, use o seguinte comando CLI da Vonage para enviar uma mensagem SMS de teste para o seu número da Vonage no seu terminal.

curl -X "POST" "https://rest.nexmo.com/sms/json" \ -d "from=VONAGE_VIRTUAL_NUMBER" \ -d "text=Testing SMS Webhooks!" \ -d "to=YOUR_PERSONAL_NUMBER" \ -d "api_key=XXXXXXXX" \ -d "api_secret=XXXXXXXXX"

Na janela do terminal em que sua aplicação Python está em execução, você deverá ver que seu webhook recebeu a mensagem SMS recebida:

{ "messages": [ { "to":"YOUR_PERSONAL_NUMBER", "message-id":"42f2dr19-f80a-1493-a6z3-3bhe27bu0465", "status":"0", "remaining-balance":"9.69450000", "message-price":"0.17430000", "network":"62130" } ],"message-count":"1" }

Você também receberá a mensagem SMS no seu celular, conforme mostra a captura de tela a seguir:

Screenshot of SMS received on mobile phoneSMS Screenshot

Conclusão

Ao longo deste tutorial, você aprendeu como receber mensagens SMS recebidas usando Python. Agora, você pode integrar a Messages API do Vonage às suas aplicações em Python e começar a usar esses aplicativos para lidar com mensagens de texto recebidas.

Tem alguma dúvida ou quer compartilhar o que está criando?

Fique conectado e acompanhe as últimas notícias, dicas e eventos para desenvolvedores.

Leitura complementar

Confira os recursos da Vonage para saber mais sobre a Messages API:

  1. Visão geral da Messages API

  2. Referência da Messages API

  3. Concatenação e codificação

  4. Como enviar SMS com Python

  5. Como receber confirmaciones de entrega de SMS em Python

Compartilhar:

https://a.storyblok.com/f/270183/400x397/505bfb0eb9/jekayinoluwa-olabemiwo.png
Jekayinoluwa Olabemiwo

Jẹ́káyinOlúwa is a software craftsman and product manager passionate about technology and its impact on people. He works on product management, backend development, DevOps, technical writing, and community strategy. He enjoys dealing in the intersection of software, design, and human interaction. He likes reading and music.