¿Listo para transformar tu comunicación?
👉 Visita www.whatzmeapi.com y solicita tu demo gratuita.
Guía rápida para enviar/recibir mensajes, operar plantillas y escalar con buenas prácticas.


1) Arquitectura mínima

  • API (FastAPI/Flask): endpoints internos y Webhook.
  • Cola (Celery/RQ + Redis): envíos y reintentos.
  • DB (PostgreSQL/MongoDB): historial y estados.
  • Observabilidad: logs estructurados, métricas y alertas.

2) Conceptos clave

  • Plantillas: necesarias para iniciar conversaciones fuera de 24 h.
  • Ventana de 24 h: si el usuario escribe, puedes responder libremente.
  • Tipos: texto, media, documentos, interactivos (botones/listas).

3) Pasos rápidos

  1. Obtén WHATSAPP_TOKEN, WHATSAPP_PHONE_ID, registra Webhook y crea plantillas.
  2. Monta FastAPI y valida firma X-Hub-Signature-256 con APP_SECRET.
  3. Envía con plantillas; responde al Webhook para autoservicio o hand‑off humano.

4) Código esencial (mini)

Enviar plantilla

import os, requests
TOKEN=os.getenv("WHATSAPP_TOKEN"); PID=os.getenv("WHATSAPP_PHONE_ID")
url=f"https://graph.facebook.com/v20.0/{PID}/messages"

def send_template(to, name, lang="es_MX", vars=None):
  payload={"messaging_product":"whatsapp","to":to,"type":"template",
    "template":{"name":name,"language":{"code":lang},
      "components":([{"type":"body","parameters":[{"type":"text","text":str(v)} for v in vars]}] if vars else [])}}
  r=requests.post(url, headers={"Authorization":f"Bearer {TOKEN}","Content-Type":"application/json"}, json=payload, timeout=30)
  r.raise_for_status(); return r.json()

Obtén descuentos exclusivos de nuestros cursos en vivo en línea

Capacítate con los expertos

Webhook FastAPI (verificación)

from fastapi import FastAPI, Request, HTTPException
from fastapi.responses import PlainTextResponse
import hmac, hashlib, os, json
app=FastAPI(); VERIFY=os.getenv("VERIFY_TOKEN"); SECRET=os.getenv("APP_SECRET","")
@app.get("/webhook")
async def verify(mode:str|None=None, challenge:str|None=None, verify_token:str|None=None):
  if mode=="subscribe" and verify_token==VERIFY: return PlainTextResponse(challenge or "")
  raise HTTPException(status_code=403)

@app.post("/webhook")
async def incoming(req: Request):
  body=await req.body(); sig=req.headers.get("X-Hub-Signature-256")
  mac="sha256="+hmac.new(SECRET.encode(), body, hashlib.sha256).hexdigest()
  if not SECRET or not sig or not hmac.compare_digest(mac, sig):
    raise HTTPException(status_code=403)
  data=json.loads(body); return {"ok": True}

5) Buenas prácticas

  • Idempotencia: dedup_key por mensaje; evita reenvíos.
  • Reintentos: 429/5xx con exponential backoff + jitter.
  • Opt‑in/Opt‑out: respeta políticas; registra consentimiento.
  • Seguridad: secretos en Secret Manager; no loguear PII.

6) Checklist de producción

  • Plantillas aprobadas e idiomas correctos
  • Webhook verificado + firma HMAC
  • Colas, reintentos y dead‑letter
  • Monitoreo de tasa de entrega/lectura y errores
  • Backups y rotación de tokens

¿Listo para transformar tu comunicación?
👉 Visita www.whatzmeapi.com y solicita tu demo gratuita.

About Author

Giss Trejo

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
La mas nueva
Más antiguo Más votada
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax