Plantillas de mensajes

Para abrir conversaciones de marketing, utilidad y autenticación, se necesita una plantilla de mensaje. Estas conversaciones pueden ser mensajes del servicio de atención al cliente, recordatorios de citas, actualizaciones de pagos o envíos, alertas, entre otros.

Requisitos

  • La plantilla de mensaje se debe aprobar antes de que se pueda usar para abrir una conversación. Más información.
  • Para abrir conversaciones de marketing, utilidad y autenticación con un cliente, este debe haberse suscrito para recibir mensajes de tu empresa. Más información.

Categorías de plantillas admitidas

Consulta Categorías.

Traducciones

Cuando envíes una plantilla de mensaje, debes especificar el idioma en el campo language. Tu empresa es responsable de realizar todas las traducciones que desees usar.

Idiomas admitidos

Idiomas admitidos

Los idiomas que figuran a continuación son los que se admiten en las plantillas de mensajes.

IdiomaCódigo

Afrikáans

af

Albanés

sq

Árabe

ar

Azerí

az

Bengalí

bn

Búlgaro

bg

Catalán

ca

Chino (China)

zh_CN

Chino (Hong Kong)

zh_HK

Chino (Tailandia)

zh_TW

Croata

hr

Checo

cs

Danés

da

Holandés

nl

Inglés

en

Inglés (Reino Unido)

en_GB

Inglés (EE. UU.)

es_LA

Estonio

et

Filipino

fil

Finlandés

fi

Francés

fr

Alemán

de

Griego

el

Guyaratí

gu

Hebreo

he

Hindi

hi

Húngaro

hu

Indonesio

id

Irlandés

ga

Italiano

it

Japonés

ja

Canarés

kn

Kazajo

kk

Coreano

ko

Lao

lo

Letón

lv

Lituano

lt

Macedonio

mk

Malayo

ms

Maratí

mr

Noruego

nb

Persa

fa

Polaco

pl

Portugués (Brasil)

pt_BR

Portugués (Portugal)

pt_PT

Punyabí

pa

Rumano

ro

Ruso

ru

Serbio

sr

Eslovaco

sk

Esloveno

sl

Español

es

Español (Argentina)

es_AR

Español (España)

es_ES

Español (México)

es_MX

Suajili

sw

Sueco

sv

Tamil

ta

Telugu

te

Tailandés

th

Turco

tr

Ucraniano

uk

Urdu

ur

Uzbeko

uz

Vietnamita

vi

Paquetes de idioma

Las plantillas de mensajes se almacenan en paquetes de idioma. Básicamente, un paquete de idioma es un conjunto de elementos de plantilla de mensajes relacionado con un idioma o una configuración regional en particular. Si una empresa admite al menos una traducción de un idioma o configuración regional, se creará un paquete del idioma o de la configuración regional en cuestión.

Un espacio de nombres de plantilla de mensaje es un conjunto de paquetes de idioma de una empresa en particular.

Opciones de la política de idioma

Si una plantilla de mensaje se envía con el campo language: policy definido en deterministic, el valor predeterminado, WhatsApp entrega la plantilla de mensaje en el idioma y la configuración regional que se solicitó. Luego, el dispositivo solicitará al servidor un paquete de ese idioma específico.

Cuando este mensaje se entregue al dispositivo, el dispositivo hará lo siguiente:

  • Verificación de política/código: si "policy": "deterministic" y "code": "en", ¿existe un paquete en almacenado en caché en el dispositivo?
    • Si la respuesta es afirmativa, procede a Verificación del elemento.
    • De lo contrario, ¿se puede encontrar el paquete en en el servidor?
      • Si la respuesta es afirmativa, actualiza la caché local y procede a Verificación del elemento.
      • De lo contrario, registra el error. El servidor devolverá un error structure_unavailable mediante un webhook y no se representará ningún mensaje en el dispositivo.

  • Verificación del elemento: ¿existe el elemento "element": "hello_world"?
    • Si la respuesta es afirmativa, desempaqueta los parámetros y representa el mensaje en el dispositivo.
    • De lo contrario, hace lo siguiente:
      • Si el paquete de idioma procede de la caché local, descarga el paquete en más reciente del servidor y repite la Verificación del elemento.
      • Si el paquete de idioma se descargó recientemente del servidor, registra el error. El servidor devolverá un error structure_unavailable mediante un webhook y no se mostrará ningún mensaje en el dispositivo.

La configuración de idioma o configuración regional del dispositivo se ignoran completamente.

Un problema que puede ocurrir al usar la política deterministic es que lo que se solicita no exista. Asegúrate de comprobar lo siguiente:

  • El espacio de nombres es correcto.
  • El nombre del elemento es correcto.
  • El elemento cuenta con una traducción para el idioma o la configuración regional seleccionados.
  • El número de parámetros enviados coincide con lo que se especifica en la plantilla de mensaje.

Localización

Las plantillas de mensajes ofrecen asistencia inmediata para la localización, ya que localizan cada mensaje según la configuración regional del dispositivo.

Parámetros localizables

Las plantillas tienen parámetros que se incorporarán de manera dinámica al mensaje. Para el ejemplo que se utiliza en este documento, la plantilla de mensaje tiene el aspecto siguiente:

"You made a purchase for {{1}} using a credit card ending in {{2}}."

En el caso de "namespace": "cdb2df51_9816_c754_c5a4_64cdabdcad3e" con "element_name": "purchase_with_credit_card", el primer valor que enumeras reemplaza la variable {{1}} en el mensaje de plantilla y el segundo reemplaza la variable {{2}}.

La cantidad de parámetros que se pasan a la carga útil debe coincidir con la cantidad de parámetros del objeto template. De lo contrario, se te devolverá la llamada y se te informará que hubo un problema con la plantilla del mensaje.

Algunos de estos parámetros (por ejemplo, date_time o currency) son localizables para que se muestren adecuadamente según el idioma y las preferencias de localización del cliente. Si el dispositivo no localiza correctamente un parámetro, recurrirá al valor predeterminado fallback_value.

Para especificar la moneda y la fecha, además del valor date_time, usa los objetos fallback_value y currency. Esto permite al cliente localizar los datos de la mejor manera posible y solo recurrir a la opción predeterminada fallback_value si no los puede localizar.

Las opciones de localizable_params se muestran en la tabla siguiente:

Parámetros

NombreDescripción

fallback_value

Tipo: cadena

Obligatorio.

El texto predeterminado si no funciona la localización. Todos los parámetros de localización deben tener un valor alternativo. Solo se requiere el valor alternativo al especificar texto.

currency

Tipo: objeto currency

Opcional.

Si se utiliza el objeto currency, este contiene los parámetros obligatorios currency_code y amount_1000.

date_time

Tipo: objeto date_time

Opcional.

Si se utiliza el objeto date_time, será obligatorio definir también la fecha y la hora . Consulta el ejemplo siguiente de dos de las opciones.

El objeto currency

El cliente de la API de WhatsApp Business intenta usar la información de localización especificada para cambiar el formato de la divisa.

NombreDescripción

currency_code

Tipo: cadena

Obligatorio.

El código de divisa, como se define en la norma ISO 4217.

amount_1000

Tipo: entero

Obligatorio.

Importe multiplicado por 1.000.

Ejemplo:

{
    "type": "currency",
    "currency" : {
        "fallback_value": "$230.99",
        "code": "USD",
        "amount_1000": 230990
    }
}  

Objeto date_time

El cliente de la API de WhatsApp Business intenta usar la información de localización especificada para cambiar el formato de fecha y hora. Estos son los formatos de fecha y hora que se admiten:

  • Hora creada con componentes; es decir, la hora se articula usando los componentes (p. ej., día de la semana, mes, hora, etc.). La hora especificada será la misma sin importar en qué zona horaria se encuentre el cliente.
  • Tiempo en formato Unix, es decir, la hora que aparezca dependerá de la zona horaria en la que se encuentre el cliente.

DateTime

NombreDescripción

component

Tipo: DateTimeComponent

Obligatorio si no se encuentra unix_epoch.

Fecha y hora por componentes.

unix_epoch

Tipo: DateTimeUnixEpoch

Obligatorio si no se encuentra component.

Fecha y hora en el formato Unix

Al menos uno de los siguientes campos es obligatorio: component o unix_epoch. Si se usan, solo puede estar presente uno de ellos.

DateTimeComponent

NombreDescripción

day_of_week

Tipo: cadena

Opcional.

Si es diferente del valor derivado de la fecha (en caso de que se especifique), usa el valor derivado. Se aceptan cadenas y números.
Opciones:"MONDAY", 1, "TUESDAY", 2, "WEDNESDAY", 3, "THURSDAY", 4, "FRIDAY", 5, "SATURDAY", 6, "SUNDAY" y 7

year

Tipo: entero

Opcional.

El año.

month

Tipo: entero

Opcional.

El mes.

day_of_month

Tipo: entero

Opcional.

El día.

hour

Tipo: entero

Opcional.

La hora.

minute

Tipo: entero

Opcional.

El minuto.

calendar

Tipo: cadena

Opcional.

Tipo de calendario.
Opciones: GREGORIAN o SOLAR_HIJRI

Ejemplo:

{
    "type": "date_time",
    "date_time" : {
        "fallback_value": "October 25, 2020",
        "day_of_week": "Saturday",
        "day_of_month": 25,
        "year": 2020,
        "month": 10,
        "hour": 12,
        "minute": 0
    }
}

DateTimeUnixEpoch

La opción DateTimeUnixEpoch quedará obsoleta y DateTimeComponent será la predeterminada desde entonces. Modifica tu código para evitar problemas.

NombreDescripción

timestamp

Tipo: entero

Obligatorio.

Marca de tiempo en formato Unix, en segundos. Se espera que este campo quede obsoleto.

Próximos pasos

Este documento contiene información de referencia sobre plantillas de mensajes. Para acceder a una guía sobre cómo crear y enviar una plantilla, consulta Enviar plantillas de mensajes. Para ver todos los parámetros que se pueden usar en una plantilla de mensaje, consulta Mensajes, Plantillas de mensajes.

https://developers.facebook.com/docs/whatsapp/message-templates/creation#step-1--create-template-using-the-whatsapp-manager