Parte 1: Se você não tem tempo para ler
- Responder a um comando desconhecido, isso pode ser uma instrução ou sua mensagem de boas-vindas;
- Enviar mensagem regular;
- Enviar imagem;
- Enviar arquivo;
- Enviar vídeo;
- Enviar contato (vCard);
- Enviar produto;
- Criar novo grupo, enviar convite e enviar mensagem para o grupo;
- Receber e ler mensagens recebidas;
E se precisar de ajuda, é só escrever para nós no chat de suporte em qualquer página do site.
Se você estiver decidindo qual provedor escolher ou não entender completamente a diferença entre a API do WhatsApp Business e a API do WhatsApp, será útil estudar nosso guia, no qual comparamos provedores, funcionalidades, preços e soluções atuais. Isso será útil para que todos possam decidir qual API e qual provedor escolher. Portanto, mergulhe em nosso artigo "Como escolher a API do WhatsApp. Comparação."
Parte 2: Automação do WhatsApp usando Python
- Interação com a API do WhatsApp usando Python;
- Integração com Whapi.Cloud e automação de qualquer funcionalidade;
- Usando Flask para processar mensagens recebidas e respondê-las;
Preparando para o desenvolvimento
- Instalação do Python. Se você ainda não instalou o Python, visite o site oficial do Python e siga as instruções de instalação. Recomendamos o uso da versão Python 3.6 ou superior.
- Token do Whapi.Cloud WhatsApp API. Você precisará de uma conta Whapi.Cloud para obter um token que permitirá ao seu bot interagir com o WhatsApp via API. Após o registro, você receberá um canal gratuito com um token único. Atualmente, o Whapi.Cloud é o provedor mais funcional e estável, oferecendo acesso acessível à API do WhatsApp.
- Instalação do Flask. Flask é um framework web leve em Python que usaremos para configurar nosso servidor e processar os webhooks do WhatsApp. Você pode instalar o Flask com o seguinte comando: pip install Flask
- Configuração do webhook. Para que seu servidor possa receber mensagens e eventos do WhatsApp, você precisará configurar um webhook. No Whapi.Cloud, você poderá indicar vários ganchos (URLs do seu servidor) para diferentes eventos, onde as notificações serão enviadas. Abordaremos este tópico em mais detalhes mais adiante no artigo.
- Ambiente de trabalho. É recomendado usar um ambiente virtual (por exemplo, virtualenv) para isolar as dependências e garantir a portabilidade do seu projeto.
Integração com o WhatsApp API via Whapi.Cloud em Python
Após a ativação do canal, na seção de limites, encontre seu token da API. Esse token é crucial para autenticação ao acessar a API. Geralmente, ele é enviado nos cabeçalhos das solicitações como um Bearer Token ou como um parâmetro, dependendo de como você acessa a API.
A API Whapi.Cloud oferece uma ampla variedade de métodos para interagir com o WhatsApp, realmente permitindo que você automatize as principais características e funções do mensageiro. Na página do canal, você pode estudar e testar todos os métodos disponíveis. Para facilitar o desenvolvimento, é fornecido um hub especializado para desenvolvedores, onde cada função é acompanhada de exemplos de código e a capacidade de testar no local, mostrando resultados e respostas do servidor. Isso simplifica e acelera muito o processo de integração, você vai adorar! Uma das vantagens do Whapi.Cloud é a simplicidade e rapidez de conexão, permitindo que você comece a interagir com o WhatsApp em apenas alguns minutos.
O que é Webhook e como configurá-lo?
Exploramos todos os detalhes do trabalho com webhooks em mais detalhes na nossa base de conhecimento: Ver artigo sobre webhooks
Criando a base do Bot de WhatsApp em Python
Enviar mensagem do WhatsApp usando Python
import requests
url = "https://gate.whapi.cloud/messages/text?token=bg3FeZJ6jWGw32g03PRnoNkKO7k03GtX"
payload = {
"typing_time": 0,
"to": "[email protected]",
"body": "Hello, world!"
}
headers = {
"accept": "application/json",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
Recebendo mensagens via Flask Webhook
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def whatsapp_webhook():
incoming_message = request.json
# Process the message here
return jsonify(status='success'), 200
import requests
url = "https://gate.whapi.cloud/settings?token=YOUR_TOKEN"
payload = {
"callback_persist": True,
"webhooks": [
{
"events": [
{
"type": "messages",
"method": "post"
},
{
"type": "ack",
"method": "post"
}
],
"mode": "body",
"url": "Webhook URL, http or https"
}
]
}
headers = {
"accept": "application/json",
"content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)
Código-fonte do bot do WhatsApp em Python
TOKEN=Your_token # API token from your channel
API_URL=https://gate.whapi.cloud # API endpoint URL
BOT_URL=https://your_bot_url_here/messages # Webhook Link to your server. At ( {server link}/messages ), when POST is requested, processing occurs
PRODUCT_ID=6559353560856703 # The ID of the product we will send for the example. Create a product in your WhatsApp and find out the product ID: https://whapi.readme.io/reference/getproducts
[email protected] # The ID of the group to which we will send the message. Use to find out the ID: https://whapi.readme.io/reference/getgroups
PORT=80 # example, 80 or 443
from flask import Flask, request, jsonify
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
import os
from dotenv import load_dotenv
load_dotenv() # Load environment variables from a .env file
app = Flask(__name__)
COMMANDS = {
'TEXT': 'Simple text message',
'IMAGE': 'Send image',
'DOCUMENT': 'Send document',
'VIDEO': 'Send video',
'CONTACT': 'Send contact',
'PRODUCT': 'Send product',
'GROUP_CREATE': 'Create group',
'GROUP_TEXT': 'Simple text message for the group',
'GROUPS_IDS': "Get the id's of your three groups"
}
FILES = {
'IMAGE': './files/file_example_JPG_100kB.jpg',
'DOCUMENT': './files/file-example_PDF_500_kB.pdf',
'VIDEO': './files/file_example_MP4_480_1_5MG.mp4',
'VCARD': './files/sample-vcard.txt'
}
def send_whapi_request(endpoint, params=None, method='POST'):
headers = {
'Authorization': f"Bearer {os.getenv('TOKEN')}"
}
url = f"{os.getenv('API_URL')}/{endpoint}"
if params:
if 'media' in params:
details = params.pop('media').split(';')
with open(details[0], 'rb') as file:
m = MultipartEncoder(fields={**params, 'media': (details[0], file, details[1])})
headers['Content-Type'] = m.content_type
response = requests.request(method, url, data=m, headers=headers)
elif method == 'GET':
response = requests.get(url, params=params, headers=headers)
else:
headers['Content-Type'] = 'application/json'
response = requests.request(method, url, json=params, headers=headers)
else:
response = requests.request(method, url, headers=headers)
print('Whapi response:', response.json())
return response.json()
def set_hook():
if os.getenv('BOT_URL'):
settings = {
'webhooks': [
{
'url': os.getenv('BOT_URL'),
'events': [
{'type': "messages", 'method': "post"}
],
'mode': "method"
}
]
}
send_whapi_request('settings', settings, 'PATCH')
@app.route('/messages', methods=['POST'])
def handle_new_messages():
try:
messages = request.json.get('messages', [])
endpoint = None
for message in messages:
if message.get('from_me'):
continue
sender = {'to': message.get('chat_id')}
command_input = message.get('text', {}).get('body', '').strip()
command = list(COMMANDS.keys())[int(command_input) - 1] if command_input.isdigit() else None
if command == 'TEXT':
sender['body'] = 'Simple text message'
endpoint = 'messages/text'
elif command == 'IMAGE':
sender['caption'] = 'Text under the photo.'
sender['media'] = FILES['IMAGE'] + ';image/jpeg'
endpoint = 'messages/image'
elif command == 'DOCUMENT':
sender['caption'] = 'Text under the document.'
sender['media'] = FILES['DOCUMENT'] + ';application/pdf'
endpoint = 'messages/document'
elif command == 'VIDEO':
sender['caption'] = 'Text under the video.'
sender['media'] = FILES['VIDEO'] + ';video/mp4'
endpoint = 'messages/video'
elif command == 'CONTACT':
sender['name'] = 'Whapi Test'
with open(FILES['VCARD'], 'r') as vcard_file:
sender['vcard'] = vcard_file.read()
endpoint = 'messages/contact'
elif command == 'PRODUCT':
# Example: You need to replace config.product with an actual product ID
product_id = os.getenv('PRODUCT_ID') # Replace with your product ID
endpoint = f'business/products/{product_id}'
elif command == 'GROUP_CREATE':
# Example: You need to replace config.phone with an actual phone number
participants = [message.get('chat_id').split('@')[0]] # Replace with the phone number
response = send_whapi_request('groups', {'subject': 'Whapi.Cloud Test', 'participants': participants})
sender['body'] = f"Group created. Group id: {response.get('group_id')}" if response.get('group_id') else 'Error'
endpoint = 'messages/text'
elif command == 'GROUP_TEXT':
sender['to'] = os.getenv('GROUP_ID') # Replace with your group ID
sender['body'] = 'Simple text message for the group'
endpoint = 'messages/text'
elif command == 'GROUPS_IDS':
groups_response = send_whapi_request('groups', {'count': 3}, 'GET')
groups = groups_response.get('groups', [])
sender['body'] = ',\n '.join(f"{group['id']} - {group['name']}" for group in groups) if groups else 'No groups'
endpoint = 'messages/text'
else:
sender['body'] = "Hi. Send me a number from the list. Don't forget to change the actual data in the code!\n\n" + \
'\n'.join(f"{i + 1}. {text}" for i, text in enumerate(COMMANDS.values()))
endpoint = 'messages/text'
if endpoint is None:
return 'Ok', 200
response = send_whapi_request(endpoint, sender)
print(f"Response from Whapi: {response}")
return 'Ok', 200
except Exception as e:
print(e)
return str(e), 500
@app.route('/', methods=['GET'])
def index():
return 'Bot is running'
if __name__ == '__main__':
set_hook()
port = os.getenv('PORT') or (443 if os.getenv('BOT_URL', '').startswith('https:') else 80)
app.run(port=port, debug=True)
Capacidades avançadas
Enviar uma mensagem com imagem multimídia
import requests
url = "https://gate.whapi.cloud/messages/image?token=bg3FeZJ6jWGw32g03PRnoNkKO7k03GtX"
payload = {
"to": "[email protected]",
"media": "data:image/png;name=android-chrome-192x192.png;base64,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"
}
headers = {
"accept": "application/json",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
Enviar um arquivo através da API do WhatsApp
import requests
url = "https://gate.whapi.cloud/messages/document?token=bg3FeZJ6jWGw32g03PRnoNkKO7k03GtX"
payload = {
"to": "[email protected]",
"media": "data:application/octet-stream;name=site.webmanifest;base64,ewogICAgIm5hbWUiOiAiIiwKICAgICJzaG9ydF9uYW1lIjogIiIsCiAgICAiaWNvbnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAic3JjIjogIi9hbmRyb2lkLWNocm9tZS0xOTJ4MTkyLnBuZyIsCiAgICAgICAgICAgICJzaXplcyI6ICIxOTJ4MTkyIiwKICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UvcG5nIgogICAgICAgIH0KICAgIF0sCiAgICAidGhlbWVfY29sb3IiOiAiI2ZmZmZmZiIsCiAgICAiYmFja2dyb3VuZF9jb2xvciI6ICIjZmZmZmZmIiwKICAgICJkaXNwbGF5IjogInN0YW5kYWxvbmUiCn0K"
}
headers = {
"accept": "application/json",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)