Shared Inbox de WhatsApp para nueva PlataformaMás
1msg official logo

Responder consultas de precio con WhatsApp API

Este escenario envía un mensaje de texto libre de WhatsApp con sendMessage dentro de la ventana de atención al cliente de 24 horas después de que el cliente pregunte cuánto cuesta un producto o servic

Descripción del caso de uso

Este escenario envía un mensaje de texto libre de WhatsApp con sendMessage dentro de la ventana de atención al cliente de 24 horas después de que el cliente pregunte cuánto cuesta un producto o servicio.

Ejemplo de plantilla

Hola, {{1}}! El precio de «{{2}}» es {{3}}. Si necesitas una cotización personalizada o descuento por volumen, responde aquí y nuestro gerente te ayudará.

  • {{1}}
    nombre del cliente
  • {{2}}
    nombre del producto o servicio
  • {{3}}
    precio formateado con moneda
WhatsApp Business API for session reply — price inquiry

Cuándo usarlo

Usa este escenario cuando un prospecto pregunta cuánto cuesta un producto o servicio dentro de una conversación abierta de WhatsApp y necesitas devolver la cotización antes de que se vaya. Encaja en equipos de ventas que obtienen precios en vivo desde CRM o una API de catálogo, pequeños negocios que atienden consultas de precio en el chat, y agencias que conectan tiendas de clientes a respuestas en sesión en lugar de plantillas cold-start.

Precios actuales, no plantillas desactualizadas
Tres variables del cuerpo llevan el nombre del cliente, el producto y el precio formateado desde la consulta de tu backend, así la cotización refleja el precio de lista vigente y no un valor fijo de plantilla.
Respuestas más rápidas que la búsqueda manual
La pregunta de precio llega vía webhook, tu backend obtiene el SKU y el precio de lista, y sendMessage se dispara dentro de la sesión abierta — ningún vendedor copia cifras desde una hoja de cálculo.
Diálogo abierto para negociar
El mensaje invita al cliente a responder por cotizaciones personalizadas o descuentos por volumen en el mismo hilo, así las preguntas de seguimiento no requieren un nuevo cold start con plantilla.
Menos conversaciones de precio estancadas
El nombre del producto y el monto formateado llegan al chat del cliente en cuanto tu fuente de precios devuelve un valor, así el prospecto puede hacer preguntas de seguimiento o avanzar en la misma sesión en lugar de esperar a un vendedor.

Flujo de trabajo

  1. Estado registrado

    Llega un mensaje entrante del cliente con una pregunta de precio vía webhook.

    status: "read"

  2. Capturar evento

    Tu backend obtiene el SKU del producto y el precio de lista actual.

    phone: "+…"

  3. Construir y enviar

    Un mensaje de texto en sesión envía la cotización con nombre del producto y monto formateado.

    POST /sendMessage

  4. Entregado

    El cliente continúa el diálogo para descuentos o checkout en la misma sesión.

    entregado

WhatsApp Business API for session reply — price inquiry

Implementación técnica

Requisitos previos

  1. Clave API de 1MSG · Cómo obtener la clave API
  2. Cuenta de WhatsApp Business · Cómo conectar WABA
  3. Ventana de sesión de 24 horas abierta · Cómo funciona la ventana de 24 horas
  4. Opt-in del cliente · Cómo gestionar el consentimiento
  5. Endpoint de webhook · Cómo configurar webhooks

Ejemplos de código

#!/usr/bin/env bash
set -euo pipefail

# === Configuration (replace "___" placeholders) ===
API_BASE_URL="https://api.1msg.io"        # production 1MSG API base URL
CHANNEL_ID="___"                           # channel ID from 1MSG dashboard
API_TOKEN="___"                            # channel JWT token (Bearer)



# === Test data ===
TEST_PHONE="___"                 # client phone in international format · requires open 24-hour session window
TEST_CUSTOMERNAME="___"         # {{1}} customer name
TEST_PRODUCTORSERVICENAME="___"         # {{2}} product or service name
TEST_PAYMENTAMOUNT="___"         # {{3}} payment amount

PHONE_NORM="$(printf '%s' "$TEST_PHONE" | tr -cd '0-9')"

for pair in "CHANNEL_ID=$CHANNEL_ID" "API_TOKEN=$API_TOKEN" "TEST_PHONE=$TEST_PHONE" \
            "TEST_CUSTOMERNAME=$TEST_CUSTOMERNAME" \
            "TEST_PRODUCTORSERVICENAME=$TEST_PRODUCTORSERVICENAME" \
            "TEST_PAYMENTAMOUNT=$TEST_PAYMENTAMOUNT"; do
  val="${pair#*=}"
  if [ -z "$val" ] || [ "$val" = "___" ]; then
    echo "Missing configuration value: ${pair%%=*}" >&2
    exit 1
  fi
done

if [ -z "$PHONE_NORM" ]; then
  echo "Error: phone number has no digits after normalization" >&2
  exit 1
fi

URL="${API_BASE_URL%/}/${CHANNEL_ID}/sendMessage"

read -r -d '' PAYLOAD <<JSON || true
{
  "phone": "${PHONE_NORM}",
  "body": "Hello, Alexey! The price for «Premium Plan (annual)» is 49 900 RUB. If you need a custom quote or volume discount, reply here and our manager will help."
}
JSON

RESPONSE="$(curl -s -w '\n%{http_code}' -X POST "$URL" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -d "$PAYLOAD")"

HTTP_CODE="$(printf '%s' "$RESPONSE" | tail -n1)"
BODY="$(printf '%s' "$RESPONSE" | sed '$d')"

case "$BODY" in
  *'"sent":true'*) ok=1 ;;
  *) ok=0 ;;
esac

if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ] && [ "$ok" -eq 1 ]; then
  echo "Message sent to client."
  echo "API response: $BODY"
else
  echo "Send failed. HTTP status: $HTTP_CODE" >&2
  echo "$BODY" >&2
  exit 1
fi

Respuesta y estado de entrega

HTTP 2xx y JSON "sent": true significan que 1MSG aceptó el mensaje para envío — no que ya llegó al teléfono del cliente. Guarda el campo id (tipo wamid.…) para correlacionar los callbacks de entrega.

200 OKRespuesta
{
  "sent": true,
  "message": "Sent to [email protected]",
  "description": "Message has been sent to the provider",
  "id": "wamid.HBgLMzgwNjM5..."
}
  • sent

    Aceptado para envío — aún no en el teléfono del cliente

  • id

    Guárdalo; los callbacks de entrega y hookInfo se basan en él

Estados de entrega y webhooks →

Errores frecuentes

EstadoRespuesta de la APICausaSolución
200Message was not sent: provide chatId, phone, bsuid, or usernameNingún destinatario que el canal pudiera resolver.Envía un solo destinatario: phone (código de país y número, solo dígitos), chatId (por ejemplo [email protected]) o bsuid.
200Message was not sent: empty bodyFalta el campo body o está vacío.Envía un body no vacío. Es obligatorio en mensajes de texto, botones de respuesta y listas.
401token is requiredLa petición no incluye el token.Agrega el token del canal como parámetro token en la URL: https://api.1msg.io/{channelId}/{method}?token=…

Todos los códigos de error →

Preguntas comunes

Relacionado

Captación y conversión de leads
Respuesta automática a leads con WhatsApp API
Este escenario envía un mensaje de texto libre de WhatsApp con sendMessage dentro de la ventana de atención al cliente de 24 horas después de que el cliente escribió primero sobre un producto o servic
Captación y conversión de leads
Responder disponibilidad de stock con WhatsApp API
Este escenario envía un mensaje de texto libre de WhatsApp con sendMessage dentro de la ventana de atención al cliente de 24 horas después de que el cliente pregunte si un artículo está disponible.
Captación y conversión de leads
Empujón a la decisión de compra con botones WhatsApp
Este escenario envía a un cliente potencial una plantilla de WhatsApp personalizada mientras aún decide.
Captación y conversión de leads
Seguimiento de propuesta comercial con WhatsApp API
El escenario envía al prospecto una plantilla de WhatsApp personalizada recordándole revisar la propuesta comercial.
Captación y conversión de leads
Lista interactiva de WhatsApp API: catálogo
Este escenario envía una lista interactiva con sendList durante la ventana de sesión de 24 horas.
Captación y conversión de leads
Invitación a asesoría con plantilla de WhatsApp API
El escenario envía al cliente una plantilla de WhatsApp personalizada invitándolo a una consulta pre-compra.
Captación y conversión de leads
Alerta de nuevo lead al gerente por WhatsApp API
El escenario envía al gerente de ventas una plantilla de WhatsApp personalizada cuando se captura un lead nuevo.
Captación y conversión de leads
Iniciar calificación de leads con WhatsApp API
Este caso de uso envía a un lead nuevo una plantilla de WhatsApp aprobada con saludo personalizado: el mensaje sustituye el nombre del lead y el contexto de producto o fuente, y el botón quick-reply «

Desarrolla para WhatsApp en horas
sin complicaciones de infraestructura