61 lines
3.3 KiB
Python
61 lines
3.3 KiB
Python
import paramiko
|
|
import json
|
|
|
|
ssh = paramiko.SSHClient()
|
|
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
|
ssh.connect('161.97.93.156', username='carlos', password='Innova1978+*?')
|
|
|
|
# Obtener IP interna del contenedor de Evolution API
|
|
stdin, stdout, stderr = ssh.exec_command("docker inspect api-i5mzip2g7cmyvc56n9ewahbb --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'")
|
|
evo_ip = stdout.read().decode('utf-8').strip()
|
|
print(f"IP interna de Evolution API: {evo_ip}")
|
|
|
|
message_text = """🚀 *DripZone - Registro Automático de Pedidos WhatsApp & Catálogo Activo*
|
|
|
|
¡Hola Carlos! Se ha implementado y desplegado de forma 100% autónoma la captura y registro automático de pedidos realizados por WhatsApp:
|
|
|
|
🛍️ *1. Pedidos del Catálogo Nativo de WhatsApp (Meta Commerce):*
|
|
• Cada vez que un cliente envía un pedido desde el catálogo de la tienda en WhatsApp (orderMessage), el webhook lo detecta en tiempo real.
|
|
• Extrae automáticamente artículos, precios, cantidades y tallas, resolviendo los productos con el inventario de la app.
|
|
• Crea la orden inmediatamente en Appwrite y memoria con prefijo *ORD-WA-CAT-XXXXXX* y *source: 'whatsapp'*.
|
|
• Te notifica al instante a tu WhatsApp (+57 316 745 5877) con la foto del calzado, desglose económico y datos de entrega.
|
|
• Responde al cliente automáticamente confirmando la recepción y entregándole su enlace de seguimiento en vivo.
|
|
|
|
💬 *2. Pedidos Directos por WhatsApp desde el Carrito Web:*
|
|
• En el carrito de compra (CartDrawer), se habilitó el botón *'💬 Pedir Directo por WhatsApp'*.
|
|
• Pre-registra la orden en la base de datos antes de transferir al cliente a WhatsApp, asignándole un ID único (*ORD-WA-XXXXXX*).
|
|
• Al llegar el mensaje a la tienda (+57 310 639 0296), el webhook lo asocia automáticamente sin duplicar.
|
|
|
|
🧠 *3. Solicitudes de Compra en Lenguaje Natural:*
|
|
• Si un cliente escribe directamente con intención de compra (ej: *"Quiero pedir las Jordan 4 talla 41 para Cali"*), el parser identifica el calzado, talla y ciudad, pre-registrando la orden en estado pendiente.
|
|
|
|
📊 *4. Filtros y Visualización en Panel Admin (/admin/pedidos):*
|
|
• Nuevo filtro por Canal: *[ Todos ]*, *[ 💬 WhatsApp & Catálogo ]* y *[ 🌐 Tienda Web ]* con conteos en tiempo real.
|
|
• Cada tarjeta de pedido muestra su insignia distintiva (*💬 WhatsApp* / *🛍️ Catálogo WA* vs *🌐 Tienda Web*).
|
|
|
|
📱 *5. Seguimiento del Cliente en /mis-pedidos:*
|
|
• Soporta parámetro directo *?phone=...* para que los clientes que abran el enlace desde WhatsApp vean sus pedidos sin escribir su teléfono.
|
|
|
|
📲 *Descarga Directa del APK:*
|
|
👉 https://drip-zone.online/DripZone.apk"""
|
|
|
|
# Enviar via curl directo desde el host VPS a la IP interna de Evolution API (100% libre de Traefik/DNS)
|
|
payload = json.dumps({
|
|
"number": "573167455877",
|
|
"text": message_text,
|
|
"delay": 500
|
|
})
|
|
|
|
# Escribir payload en archivo temporal remoto en el VPS
|
|
sftp = ssh.open_sftp()
|
|
with sftp.file('/tmp/wa_msg.json', 'w') as f:
|
|
f.write(payload)
|
|
sftp.close()
|
|
|
|
curl_cmd = f"curl -s -X POST http://{evo_ip}:8080/message/sendText/AutomataAlmeira -H 'apikey: EE49029EEB85-4568-8F81-C9FDFC6E2943' -H 'Content-Type: application/json' -d @/tmp/wa_msg.json"
|
|
stdin, stdout, stderr = ssh.exec_command(curl_cmd)
|
|
out = stdout.read().decode('utf-8', errors='replace')
|
|
print("Respuesta Evolution API sendText:", out[:300])
|
|
|
|
ssh.close()
|