API OFICIAL BSP (TEMPLATES)

Comunicate con tus clientes a través de API Cloud.

API Cloud (Templates)

Las plantillas se usan en mensajes de plantillas para abrir conversaciones de marketing, utilidad y autenticación con los clientes. A diferencia de los mensajes de formato libre, las plantillas de mensajes son el único tipo de mensaje que se puede enviar a los clientes que todavía no han iniciado una conversación contigo o que no te han enviado ningún mensaje en las últimas 24 horas.

Para más información de todos los endpoints que tenemos a continuación es bueno consultar: https://developers.facebook.com/docs/whatsapp/message-templates/guidelines/

Los endpoints que se ponen a continuación se pueden consultar con varias versiones de Meta, es importante en cada url establecer la versión (VERSION) de meta que se utilizará.

La variable VERSION de debe expresar con la letra ‘v’ y sus valores serán: v16.0, v17.0, v18.0, v19.0

Crear nueva plantilla

Path:

POST /message_templates/VERSION/{did}

  • Request

  • Body

{
  "name": "pedido_cancelado_reembolso",
  "language": "es",
  "category": "UTILITY",
  "allow_category_change": true,
  "components": [
    {
      "type": "BODY",
      "text": "Su pedido ha sido cancelado; su reembolso se procesará en 7-10 días"
    }
  ]
}

Descripcion de propiedades

Fields Type Comentario
name String Nombre de la plantilla. Máximo 512 caracteres.
category Enum Categoría de la plantilla. Consulta Categorías de plantillas a continuación
allow_category_change boolean Se establece en verdadero para permitirnos asignar automáticamente una categoría. Si se omite, es posible que la plantilla se rechace a causa de una categorización incorrecta.
language Enum Código de idioma y configuración regional de la plantilla.
components Object Componentes que conforman la plantilla. Consulta Componentes de la plantilla a continuación.

Response

Status Code 200
{
  "id": "<ID>",
  "status": "<STATUS>",
  "category": "<CATEGORY>"
}

Descripcion de propiedades

Fields Type Comentario
id String Identificador de la plantilla.
status Enum Estado de la plantilla.
category Enum Categorías de plantillas

Editar plantilla

Path:

PUT /message_templates/VERSION/{did}/{message_template_id}

Limitaciones

  • Solo se pueden editar las plantillas con uno de los siguientes estados: APPROVED, REJECTED o PAUSED.
  • Solo puedes editar las propiedades category o components de una plantilla.
  • No puedes editar la propiedad category de una plantilla aprobada.
  • Las plantillas aprobadas se pueden editar un máximo de diez veces en un periodo de 30 días o una vez cada 24 horas. Las plantillas rechazadas o en pausa se pueden editar un número ilimitado de veces.
  • Después de editar una plantilla aprobada o en pausa, se aprobará automáticamente a menos que no supere la revisión.

Request

  • Body
{
  "category": "<CATEGORY>",
  "components": [{
    "type": "HEADER",
    "format": "TEXT",
    "text": "Hola y bienvenido"
  }]
}

Descripcion de propiedades

Fields Type Comentario
category Enum Categoría de la plantilla. Consulta Categorías de plantillas a continuación
components Object Componentes que conforman la plantilla. Consulta Componentes de la plantilla a continuación.

Response

Status Code 200
{
  "success": true
}

Obtener Plantilla

Obtener lista de plantillas

Path:

GET /message_templates/VERSION/{did}?fields=format,rejected_reason,quality_score,status,name,language,components,category,previous_category&limit=5

Response

Status Code 200
{
  "data": [
    {
      "id": "2606927862810126",
      "name": "un_template",
      "components": [
        {
          "type": "BODY",
          "text": "this is"
        }
      ],
      "language": "es",
      "status": "REJECTED",
      "category": "UTILITY",
      "rejected_reason": "INCORRECT_CATEGORY",
      "quality_score": {
        "score": "UNKNOWN"
      }
    },
    {
      "id": "402086912569912",
      "name": "test_template_dev",
      "components": [
        {
          "type": "BODY",
          "text": "this is a test"
        }
      ],
      "language": "es",
      "status": "APPROVED",
      "category": "MARKETING",
      "rejected_reason": "NONE",
      "quality_score": {
        "score": "UNKNOWN"
      }
    }
  ],
  "paging": {
    "cursors": {
      "before": "MAZDZD",
      "after": "MQZDZD"
    },
    "next": "https://login.chattigo.com/bsp-cloud-chattigo-isv/message_templates/v19.0/56940581384?fields=format,rejected_reason,quality_score,status,name,language,components,category,previous_category&limit=2&after=MQZDZD"
  }
}

Obtener sumario de plantillas

Path:

GET /message_templates/VERSION/{did}?fields=id&limit=1&summary=total_count,message_template_count,message_template_limit,are_translations_complete

Response

Status Code 200
{
  "data": [
    {
      "id": "2606927862810126"
    }
  ],
  "paging": {
    "cursors": {
      "before": "MAZDZD",
      "after": "MAZDZD"
    },
    "next": "https://login.chattigo.com/bsp-cloud-chattigo-isv/message_templates/v19.0/56940581384?limit=1&summary=total_count,message_template_count,message_template_limit,are_translations_complete&fields=id&after=MAZDZD"
  },
  "summary": {
    "total_count": 169,
    "message_template_count": 148,
    "message_template_limit": 6000,
    "are_translations_complete": false
  }
}

Obtener plantilla por nombre o contenido

Path:

GET /message_templates/VERSION/{did}?name_or_content=tpl_flow_demo_preview&limit=1

Response

Status Code 200
{
  "data": [
    {
      "id": "210800678688659",
      "name": "tpl_flow_demo_preview",
      "components": [
        {
          "type": "BODY",
          "text": "Hola y bienvenido a la demo de flow.\nPuedes responder a continuación las preguntas iniciales."
        },
        {
          "type": "BUTTONS",
          "buttons": [
            {
              "type": "FLOW",
              "text": "Responder",
              "flow_id": 2033644160334325,
              "flow_action": "NAVIGATE",
              "navigate_screen": "REGISTER"
            }
          ]
        }
      ],
      "language": "es",
      "status": "APPROVED",
      "category": "MARKETING"
    }
  ],
  "paging": {
    "cursors": {
      "before": "MAZDZD",
      "after": "MAZDZD"
    }
  }
}

Obtener plantilla por nombre

Path:

GET /message_templates/VERSION/{did}?name=tpl_flow_demo_preview&limit=1

Response

Status Code 200
{
  "data": [
    {
      "id": "210800678688659",
      "name": "tpl_flow_demo_preview",
      "components": [
        {
          "type": "BODY",
          "text": "Hola y bienvenido a la demo de flow.\nPuedes responder a continuación las preguntas iniciales."
        },
        {
          "type": "BUTTONS",
          "buttons": [
            {
              "type": "FLOW",
              "text": "Responder",
              "flow_id": 2033644160334325,
              "flow_action": "NAVIGATE",
              "navigate_screen": "REGISTER"
            }
          ]
        }
      ],
      "language": "es",
      "status": "APPROVED",
      "category": "MARKETING"
    }
  ],
  "paging": {
    "cursors": {
      "before": "MAZDZD",
      "after": "MAZDZD"
    }
  }
}

Métricas de las Plantillas

Path:

GET /message_templates/VERSION/{did}/analytics?granularity=DAILY&metric_types=[“CLICKED”,“DELIVERED”,“READ”,“SENT”]&start=1709769600&end=1709841600&template_ids=[776614587250474]

Response

Status Code 200
{
  "data": [
    {
      "granularity": "DAILY",
      "data_points": [
        {
          "template_id": "776614587250474",
          "start": 1709769600,
          "end": 1709856000,
          "sent": 2,
          "delivered": 2,
          "read": 2,
          "clicked": [
            {
              "type": "url_button",
              "button_content": "Visitar el sitio web",
              "count": 1
            },
            {
              "type": "url_button",
              "button_content": "Visitar el sitio web 2",
              "count": 1
            },
            {
              "type": "quick_reply_button",
              "button_content": "Si",
              "count": 1
            }
          ]
        }
      ]
    }
  ],
  "paging": {
    "cursors": {
      "before": "MAZDZD",
      "after": "MjQZD"
    }
  }
}

Eliminar una plantilla

Eliminar una plantilla por nombre

Path:

DELETE /message_templates/VERSION/{did}?name=test_name

Response

Status Code 200
{
  "success": true
}

Eliminar una plantilla por ids y nombre

Path:

DELETE /message_templates/VERSION/{did}?hsm_id=1723223958184989&name=test_name

Response

Status Code 200
{
  "success": true
}

Habilitar analitica una plantilla

Debes confirmar los análisis de plantillas en la cuenta de WhatsApp Business para poder obtener los datos. Puedes confirmar los análisis de plantillas con el Administrador de WhatsApp o la API. Para confirmar los análisis con la API, envía la siguiente solicitud:

Path:

POST /message_templates/VERSION/{did}/enable_analytics

Una vez confirmados, meta comienza a capturar los análisis de plantillas de la cuenta de WhatsApp Business. Tras su confirmación, los análisis de plantillas no se pueden desactivar.

Si la operación se realiza correctamente, la API responderá con el identificador de tu cuenta de WhatsApp Business. Por ejemplo:

Response

Status Code 200
{
  "id": 102290129340398
}

Deshabilitar el análisis de clics en botones

Puede desactivar button clic tracking en una plantilla individual configurando su campo cta_url_link_tracking_opted_out en true. Una vez deshabilitada, la API ya no devolverá la propiedad en la que se hizo clic en el análisis de la plantilla ni mostrará la interacción/clics del botón en el Administrador de WhatsApp al ver las estadísticas de la plantilla.

Path:

POST /message_templates/VERSION/{did}/{message_template_id}?cta_url_link_tracking_opted_out=true&category=marketing

  • Request

Descripción de query parameters

Fields Type Comentario
cta_url_link_tracking_opted_out boolean Indica si el seguimiento de clics en el botón de plantilla está deshabilitado. Configúrelo en verdadero para deshabilitar el button click tracking en los botones en la plantilla, o en falso para habilitarlo. Este valor se establece en falso al crear la plantilla.
category timestamp Si configura la categoría de la plantilla en un valor diferente a su categoría actual, el estado de la plantilla se establecerá en PENDIENTE y la plantilla tendrá que someterse a una revisión de la plantilla para ser aprobada.

Response

Status Code 200
{
  "id": 102290129340398
}

Recuperar namespace de una plantilla

El espacio de nombres de la plantilla de mensaje se necesita para enviar mensajes con las plantillas de mensajes.

Para obtener el espacio de nombres de una plantilla, envía una solicitud GET como la siguiente:

Path:

GET /message_templates/VERSION/{did}/message_template_namespace

Una vez confirmados, meta comienza a capturar los análisis de plantillas de la cuenta de WhatsApp Business. Tras su confirmación, los análisis de plantillas no se pueden desactivar.

Si la operación se realiza correctamente, la API responderá con el identificador de tu cuenta de WhatsApp Business. Por ejemplo:

Response

Status Code 200
{
  "id": "1972385232742141",
  "message_template_namespace": "12abcdefghijk_34lmnop"
}

Migración de una plantilla

Path:

POST /message_templates/VERSION/{did}/migrate_message_templates?source_waba_id=102290129340398&page_number=0

  • Request

Descripción de query parameters

Fields Type Comentario
source_waba_id String Source WhatsApp Business Account ID.
page_number timestamp Indica la cantidad de plantillas para migrar como conjuntos de 2500. Indexado a cero. Por ejemplo, para migrar 5000 plantillas, envíe una solicitud con este valor establecido en 0 y otra solicitud con este valor establecido en 1, en paralelo.

Response

Status Code 200
{
  "migrated_templates": [
    "1473688840035974",
    "6162904357082268",
    "6147830171896170"
  ],
  "failed_templates": {
    "1019496902803242": "Incorrect category",
    "259672276895259": "Formatting error - dangling parameter",
    "572279198452421": "Incorrect category"
  }
}

Comparación de plantillas

Path:

GET /message_templates/VERSION/{did}/{message_template_id}/compare?template_ids=[776614587250474]&start=1709742142450&end=1709749918450

  • Request

Descripción de query parameters

Fields Type Comentario
template_ids String El ID de la plantilla de mensaje de WhatsApp con el que puedes comparar.
start timestamp UNIX timestamp indicando el inicio del timeframe. Ver Timeframes.
end timestamp UNIX timestamp indicando el final del timeframe. Ver Timeframes.

Response

Status Code 200
{
  "data": [
    {
      "metric": "BLOCK_RATE",
      "type": "RELATIVE",
      "order_by_relative_metric": [
        "1533406637136032",
        "5289179717853347"
      ]
    },
    {
      "metric": "MESSAGE_SENDS",
      "type": "NUMBER_VALUES",
      "number_values": [
        {
          "key": "5289179717853347",
          "value": 1273
        },
        {
          "key": "1533406637136032",
          "value": 1042
        }
      ]
    },
    {
      "metric": "TOP_BLOCK_REASON",
      "type": "STRING_VALUES",
      "string_values": [
        {
          "key": "5289179717853347",
          "value": "UNKNOWN_BLOCK_REASON"
        },
        {
          "key": "1533406637136032",
          "value": "UNKNOWN_BLOCK_REASON"
        }
      ]
    }
  ]
}

Quitar la pausa de plantillas

Path:

POST /message_templates/VERSION/{did}/{message_template_id}/unpause

Response

Status Code 200
{
  "success": true
}