¿Cómo instalar docker?
Ubuntu 24.04
# Añade la clave GPG oficial de Docker:
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Añadir el repositorio a las fuentes de APT:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
Arch Linux
sudo pacman -Syu docker docker-compose
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
Fedora
sudo dnf update -y
sudo dnf install docker-cli containerd
sudo dnf install docker-compose
sudo dnf install docker-switch
Instalar waha
docker run -it --network=host devlikeapro/waha
¿Cómo inslar waha en un entorno de producción?
Para instalar waha en un entorno de producción debemos configurar parametros especiales para proteger nuestra API, para información visitar: waha.
Ejemplos
¡Hola mundo 🧑🏻🎓!
Ejemplo con curl
curl -X 'POST' \
'http://localhost:3000/api/sendText' \
-H 'Content-Type: application/json' \
-d '{
"chatId": "[email protected]",
"text": "¡Hola mundo 🧑🏻🎓!",
"linkPreview": false,
"linkPreviewHighQuality": false,
"session": "default"
}'
Ejemplo con python
import requests
import json
url = "http://localhost:3000/api/sendText"
headers = {"Content-Type": "application/json"}
data = {
"chatId": "[email protected]",
"text": "¡Hola mundo 🧑🏻🎓!",
"linkPreview": False,
"linkPreviewHighQuality": False,
"session": "default"
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.status_code)
print(response.json())
¿Cómo se podrían responder a mensajes?
¡Con WebHooks!
import requests
import time
import random
import threading
from flask import Flask, request
# Configuración
HELP_MESSAGE = "Este es el mensaje de ayuda."
ENABLE_LOGGING = True
def log(message):
if ENABLE_LOGGING:
print(message)
def start_typing(chat_id, session="default"):
typing_url = "http://127.0.0.1:3000/api/startTyping"
typing_data = {
"chatId": chat_id,
"session": session
}
try:
requests.post(typing_url, json=typing_data)
log(f"Simulación de escritura iniciada en el chat {chat_id}.")
except requests.RequestException as e:
log(f"Error al iniciar la simulación de escritura: {e}")
def stop_typing(chat_id, session="default"):
typing_url = "http://127.0.0.1:3000/api/stopTyping"
typing_data = {
"chatId": chat_id,
"session": session
}
try:
requests.post(typing_url, json=typing_data)
log(f"Simulación de escritura detenida en el chat {chat_id}.")
except requests.RequestException as e:
log(f"Error al detener la simulación de escritura: {e}")
def send_message(chat_id, text, session="default"):
send_data = {
"chatId": chat_id,
"text": text,
"session": session
}
send_url = "http://127.0.0.1:3000/api/sendText"
log(f"Enviando mensaje al chat {chat_id} mediante {send_url}")
try:
resp = requests.post(send_url, json=send_data)
resp.raise_for_status()
log("Mensaje enviado con éxito.")
except requests.RequestException as e:
log(f"Error al enviar el mensaje: {e}")
def process_ping(payload):
log("Procesando /ping")
chat_id = payload.get("from")
if not chat_id:
return
start_typing(chat_id)
time.sleep(random.uniform(1, 2))
stop_typing(chat_id)
send_message(chat_id, "pong", payload.get("session", "default"))
app = Flask(__name__)
@app.route('/notification', methods=['POST'])
def notification():
log("Recibiendo solicitud en /notification")
data = request.get_json()
if not data:
log("No se recibieron datos JSON válidos.")
return '', 400
log(f"Datos recibidos: {data}")
payload = data.get('payload', {})
command_body = payload.get('body', '').strip()
log(f"Comando recibido: {command_body}")
command_lower = command_body.lower()
if command_lower == '/ping':
process_ping(payload)
return '', 200
if __name__ == '__main__':
log("Iniciando servidor Flask en el puerto 2343")
app.run(port=2343, host='0.0.0.0')