Plantillas de mensajes

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

Requisitos

  • Para usar una plantilla de mensaje con el fin de abrir una conversación, la plantilla debe estar aprobada. Más información.
  • Para abrir conversaciones de marketing, utilidad y autenticación con un cliente, el cliente debe haber aceptado recibir mensajes de tu empresa. Más información.

Categorías de plantillas admitidas

Consulta Categorías.

Traducciones

Al enviar una plantilla de mensaje, debes especificar el idioma en el campo language. Tu empresa es responsable de todas las traducciones que quieras usar.

Idiomas admitidos

Idiomas admitidos

A continuación se indican los idiomas admitidos para las plantillas de mensajes.

IdiomaCódigo

Afrikáans

af

Albanés

sq

Árabe

ar

Azerbaiyano

az

Bengalí

bn

Búlgaro

bg

Catalán

ca

Chino (China)

zh_CN

Chino (Hong Kong)

zh_HK

Chino (Taiwán)

zh_TW

Croata

hr

Checo

cs

Danés

da

Neerlandés

nl

Inglés

en

Inglés (Reino Unido)

en_GB

Inglés (EE. UU.)

en_US

Estonio

et

Filipino

fil

Finés

fi

Francés

fr

Alemán

de

Griego

el

Guyaratí

gu

Hausa

ha

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

Malayalam

ml

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

Zulu

zu

Paquetes de idioma

Las plantillas de mensajes se almacenan en paquetes de idioma. Un paquete de idioma es un paquete de elementos de plantillas de mensaje para un idioma o una configuración regional específicos. Si una empresa admite una traducción como mínimo en un idioma o una configuración regional, se crea un paquete para ese idioma o configuración regional.

Un espacio de nombres de plantilla de mensaje es un paquete de paquetes de idioma para una empresa concreta.

Opciones de la política de idioma

Si se envía una plantilla de mensaje con el campo language: policy establecido en deterministic, el valor predeterminado, WhatsApp entrega la plantilla de mensaje exactamente en el idioma y la configuración regional solicitados. A continuación, el dispositivo consulta el servidor para comprobar si hay un paquete de este idioma específico.

Cuando el mensaje se entrega al dispositivo, este hace lo siguiente:

  • Comprobación de la política o el código: teniendo en cuenta los valores "policy": "deterministic" y "code": "en", ¿existe un paquete en almacenado en caché en el dispositivo?
    • En caso afirmativo, ve al proceso Comprobación del elemento.
    • Si no es así, ¿puede encontrarse el paquete en en el servidor?
      • En caso afirmativo, actualiza la caché local y ve al proceso Comprobación del elemento.
      • Si no es así, registra el error. A continuación, el servidor devolverá el error structure_unavailable a través de un webhook y no se representará ningún mensaje en el dispositivo.

  • Comprobación del elemento: ¿el elemento "element": "hello_world" existe?
    • Si la respuesta es afirmativa, desempaqueta los parámetros y representa el mensaje en el dispositivo.
    • Si no es así:
      • Si el paquete de idioma procede de la caché local, descarga el paquete en más reciente del servidor y repite el proceso Comprobación del elemento.
      • Si el paquete de idioma se descargó recientemente del servidor, registra el error. A continuación, el servidor devolverá el error structure_unavailable a través de 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.

Puede producirse un problema cuando usas la directiva deterministic si lo que solicitas no existe. Realiza estas comprobaciones:

  • El espacio de nombres es correcto.
  • El nombre del elemento es correcto.
  • La traducción del idioma o la configuración regional existen para el elemento.
  • El número de parámetros enviados coincide con lo especificado en la plantilla de mensaje.

Localización

Las plantillas de mensajes proporcionan compatibilidad con la localización de forma predefinida y permiten localizar el mensaje en función de la configuración regional del dispositivo.

Parámetros localizables

Las plantillas tienen parámetros que se incorporan de manera dinámica en el mensaje. Para el ejemplo usado 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, la variable {{2}}.

El número de parámetros pasados a la carga útil debe coincidir con el del objeto template. En caso contrario, obtienes una devolución de llamada en la que se te informa de que hubo un problema al mostrar la plantilla de mensaje.

Algunos de estos parámetros (p. ej., date_time o currency) son localizables a fin de que se muestren correctamente según las preferencias de la configuración regional y el idioma del cliente. Si el dispositivo no puede localizar un parámetro correctamente, utiliza el valor de fallback_value de forma predeterminada.

Si necesitas especificar la divisa y la fecha, además del valor de fallback_value, utiliza los objetos currency y date_time. De este modo, el cliente puede localizar de manera óptima estos datos de la mejor forma posible y utilizar el valor de fallback_value de manera predeterminada solo en el caso de que no pueda.

Las opciones localizable_params se muestran en la tabla siguiente:

Parámetros

NombreDescripción

fallback_value

Tipo: cadena

Obligatorio.

Texto predeterminado si se produce un error de localización. Todos los parámetros de localización deben tener un valor alternativo. Cuando se especifica un texto, solo se necesita el valor alternativo.

currency

Tipo: objeto currency

Opcional.

Si se usa el objeto currency, contiene los parámetros necesarios currency_code y amount_1000.

date_time

Tipo: objeto date_time

Opcional.

Si se usa el objeto date_time, se requiere una definición más precisa de la fecha y la hora. Consulta el ejemplo siguiente de dos de las opciones.

Objeto currency

El cliente de la API de WhatsApp Business intenta formatear la divisa según la localización especificada.

NombreDescripción

currency_code

Tipo: cadena

Obligatorio.

Código de divisa según se define en la ISO 4217.

amount_1000

Tipo: entero

Obligatorio.

Importe multiplicado por 1000.

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 formatear la fecha y la hora según la localización especificada. Algunos formatos de fecha y hora admitidos son los siguientes:

  • Hora del componente: la hora se constituye a partir de los componentes (es decir, día de la semana, mes, hora, etc.). La hora especificada será la misma, independientemente de la zona horaria en la que se encuentre el cliente.
  • Hora UNIX: la hora mostrada dependerá de la zona horaria en la que se encuentre el cliente.

DateTime

NombreDescripción

component

Tipo: DateTimeComponent

Obligatorio si unix_epoch no existe.

Fecha y hora por componente.

unix_epoch

Tipo: DateTimeUnixEpoch

Obligatorio si component no existe.

Fecha y hora por época UNIX.

Se requiere uno de los campos siguientes como mínimo: 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 distinto del valor derivado de la fecha (en caso de que se especifique), utiliza el valor derivado. Se aceptan tanto cadenas como números.
Opciones:"MONDAY", 1, "TUESDAY", 2, "WEDNESDAY", 3, "THURSDAY", 4, "FRIDAY", 5, "SATURDAY", 6, "SUNDAY", 7

year

Tipo: entero

Opcional.

Año.

month

Tipo: entero

Opcional.

Mes.

day_of_month

Tipo: entero

Opcional.

Día del mes.

hour

Tipo: entero

Opcional.

Hora.

minute

Tipo: entero

Opcional.

Minuto.

calendar

Tipo: cadena

Opcional.

Tipo de calendario.
Opciones:GREGORIAN, 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

DateTimeUnixEpoch se retirará. DateTimeComponent será el valor predeterminado a partir de ahora. Aplica los cambios correspondientes en tu código para evitar problemas.

NombreDescripción

timestamp

Tipo: entero

Obligatorio.

Marca de tiempo de la época en segundos. Este campo se retirará.

Siguientes pasos

Este documento contiene información de referencia sobre plantillas de mensajes. Para obtener 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 utilizar en una plantilla de mensaje, consulta Mensajes, Plantilla de mensaje.

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