Saltar al contenido

API de Mensajes

createMessage

Anchor link to

POST https://api.pushwoosh.com/json/1.3/createMessage

Crea una nueva notificación push.

Cuerpo de la solicitud

Anchor link to
NombreTipoDescripción
auth*stringToken de acceso a la API desde el Panel de Control de Pushwoosh.
application*stringCódigo de aplicación de Pushwoosh
notifications*arrayArray JSON de parámetros de mensaje. Consulta los detalles en el ejemplo de solicitud a continuación.
{
"status_code": 200,
"status_message": "OK",
"response": {
"Messages": [
"C3F8-C3863ED4-334AD4F1"
]
}
}

Ejemplo de solicitud

Anchor link to
Ejemplo
{
"request": {
"application": "XXXXX-XXXXX", // requerido. Código de aplicación de Pushwoosh.
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh.
"notifications": [{
"send_date": "now", // opcional. AAAA-MM-DD HH:mm O 'now'
"content": { // opcional. objeto O cadena.
"en": "English", // Usa "wns_content" en su lugar para Windows.
"fr": "French"
},
"title": { // opcional. objeto O cadena.
"en": "Title", // Se ignora si se especifican títulos específicos de la plataforma
"fr": "Titre" // 'ios_title', 'android_header', etc.
}, // consulta los ejemplos de parámetros específicos de la plataforma a continuación.
"subtitle":{ // opcional. objeto O cadena.
"en": "Subtitle", // Se ignora si se especifican títulos específicos de la plataforma
"fr": "Sous-titre" // 'ios_subtitle', etc.
}, // consulta los ejemplos de parámetros específicos de la plataforma a continuación.
"ignore_user_timezone": true, // opcional.
"timezone": "America/New_York", // opcional. Si se ignora, UTC-0 es el predeterminado para "send_date".
// Consulta https://php.net/manual/timezones.php para
// las zonas horarias compatibles.
"campaign": "CAMPAIGN_CODE", // opcional. Código de campaña al que deseas
// asignar este mensaje push.
"geozone": { // opcional. Enviar a Geozona
"lat": 22.22,
"lng": 33.33,
"range": 110
},
"rich_media": "XXXXX-XXXXX", // opcional. Copia el código de Rich Media de la barra de URL de
// la página del editor de Rich Media en el Panel de Control de Pushwoosh.
"link": "https://google.com", // opcional. Para enlaces profundos (deeplinks) añade "minimize_link": 0
"minimize_link": 0, // opcional. 0 — no minimizar, 2 — bitly. Predeterminado = 2.
// Ten en cuenta que los acortadores tienen restricciones
// en el número de llamadas.
"data": { // opcional. Cadena JSON u objeto JSON, se pasará como
"key": "value" // parámetro "u" en el payload (convertido a cadena JSON).
},
"transactionId": "unique UUID", // opcional. Identificador de mensaje único para evitar duplicados
// en caso de problemas de red. Se almacena en el lado de
// Pushwoosh durante 5 minutos.
"platforms": [ // opcional. 1 — iOS; 3 — Android; 7 — Mac OS X; 8 — Windows;
1, 3, 7, 8, 9, 10, // 9 — Amazon; 10 — Safari; 11 — Chrome;
11, 12, 17 // 12 — Firefox; 17 — Huawei
],
"preset": "XXXXX-XXXXX", // opcional. Código de Preset de Push desde tu Panel de Control.
// Si se envían parámetros específicos en la solicitud,
// estos anulan los parámetros del preset.
"send_rate": 100, // opcional. Throttling. Los valores válidos van de 100 a 1000 pushes/segundo.
"send_rate_avoid": true, // opcional. Si se establece en true, el límite de throttling no se aplicará a
// esta notificación push específica.
// Relacionado con plantillas, por favor, consulta la guía del Motor de Plantillas para obtener más información
"template_bindings": { // opcional.
"TemplatePlaceholder": "Value"
},
"dynamic_content_placeholders": { // opcional. Marcadores de posición para contenido dinámico en lugar de etiquetas de dispositivo.
"firstname": "John",
"lastname": "Doe"
},
// Parámetros de limitación de frecuencia. Asegúrate de que la limitación de frecuencia global esté configurada en el Panel de Control.
"capping_days": 30, // opcional. Cantidad de días para la limitación de frecuencia (máx. 30 días)
"capping_count": 10, // opcional. El número máximo de pushes que se pueden enviar desde una
// aplicación específica a un dispositivo particular dentro de un período de 'capping_days'.
// En caso de que el mensaje creado exceda el
// límite de 'capping_count' para un dispositivo, no
// se enviará a ese dispositivo.
"capping_exclude": true, // opcional. Si se establece en true, esta notificación push no
// se contará para la limitación de futuros pushes.
"capping_avoid": true, // opcional. Si se establece en true, la limitación no se aplicará a
// esta notificación push específica.
// Para guardar el mensaje en la Bandeja de entrada a través de la API, usa "inbox_date" o "inbox_image".
// El mensaje se guarda cuando se utiliza al menos uno de estos parámetros.
"inbox_date": "2017-02-02", // opcional. Especifica cuándo eliminar un mensaje de la Bandeja de entrada.
// El mensaje se eliminará de la Bandeja de entrada a las 00:00:01 UTC
// de la fecha especificada, por lo que el día anterior es el
// último día que un usuario puede ver el mensaje en su Bandeja de entrada.
// Si no se especifica, la fecha de eliminación predeterminada es el
// día siguiente a la fecha de envío.
"inbox_image": "Inbox image URL", // opcional. La imagen que se mostrará junto al mensaje.
"inbox_days": 5, // opcional. Especifica cuándo eliminar un mensaje de la
// Bandeja de entrada (vida útil de un mensaje de bandeja de entrada en días).
// Se puede usar en lugar del parámetro "inbox_date".
// Hasta 30 días.
"devices": [ // opcional. Especifica tokens o hwids para enviar pushes dirigidos.
"hwid_XXXX" // No más de 1000 tokens/hwids en
], // un array. Si se establece, el mensaje solo se enviará a
// los dispositivos de la lista. No se permite el Grupo de Aplicaciones para la lista de dispositivos.
// Los tokens push de iOS solo pueden estar en minúsculas.
// Notificaciones push centradas en el usuario
"users": [ // opcional. Si se establece, el mensaje solo se entregará a los
"user_XXXX" // ID de usuario especificados (establecidos a través de la llamada /registerUser).
], // Si se especifica junto con el parámetro de dispositivos,
// este último será ignorado. No más de 1000 ID de usuario
// en un array. No se permite el Grupo de Aplicaciones para la lista de usuarios.
// Filtros y condiciones
"filter": "FILTER_NAME", // opcional.
"conditions": [ // opcional. Consulta la nota a continuación.
["Country", "EQ", "fr"],
["Language", "EQ", "en"]
],
"conditions_operator": "AND" // opcional. Operador lógico para los arrays de condiciones.
// Valores posibles: AND | OR. AND es el predeterminado.
}]
}
}

Ejemplo de solicitud de notificación VoIP

Anchor link to

Pushwoosh admite notificaciones de llamada estilo VoIP para iOS y Android.
A continuación puedes encontrar ejemplos de solicitudes API createMessage para cada plataforma.

Ejemplo
{
"request": {
"application": "XXXXX-XXXXX", // requerido. Código de aplicación de Pushwoosh.
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh.
"notifications": [
{
"voip_push": true, // requerido. Se requiere el parámetro para enviar una notificación push VoIP.
"ios_root_params": {
"aps": {
"mutable-content": 1 // requerido para adjuntos de medios en iOS10+.
},
"callerName": "CallerName", // opcional. Nombre del llamante. Si no se especifica, se muestra "llamante desconocido".
"video": true, // opcional. Indica si se admiten videollamadas.
"supportsHolding": true, // opcional. Indica si se admite la funcionalidad de llamada en espera.
"supportsDTMF": false, // opcional. Controla el soporte de la señal de multifrecuencia de doble tono.
"callId": "42", // opcional. El identificador único de la llamada a cancelar.
"cancelCall": true // opcional. Establece en "true" para cancelar la llamada con el "callId" especificado.
}
}
]
}
}
Ejemplo
{
"request": {
"application": "XXXXX-XXXXX", // requerido. Código de aplicación de Pushwoosh.
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh.
"notifications": [
{
"voip_push": true, // requerido. Se requiere el parámetro para enviar una notificación push VoIP.
"android_root_params": {
"callerName": "callerName", // opcional. Nombre del llamante. Si no se especifica, se muestra "llamante desconocido".
"video": true, // opcional. Indica si se admiten videollamadas.
"callId": 42, // opcional. El identificador único de la llamada a cancelar.
"cancelCall": true // opcional. Establece en "true" para cancelar la llamada con el "callId" especificado.
}
}
]
}
}

Parámetros específicos de la plataforma

Anchor link to

Parámetros de iOS

Anchor link to
Ejemplo
{
"request": {
"application": "12345-67891", // requerido. Código de aplicación de Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"notifications": [{
"ios_title": { // opcional. Objeto O cadena. Añade un título específico de iOS para la notificación push.
"en": "title"
},
"ios_subtitle": { // opcional. Objeto O cadena. Añade un subtítulo específico de iOS para la notificación push.
"en": "subtitle"
},
"ios_content": { // opcional. Objeto O cadena. Añade contenido específico de iOS para la notificación push.
"en": "content"
},
"ios_badges": 5, // opcional. Número de insignia de la aplicación de iOS.
// Usa "+n" o "-n" para incrementar/decrementar el valor de la insignia en n.
"ios_sound": "sound file.wav", // opcional. Nombre del archivo de sonido en el paquete principal de la aplicación.
// Si se deja vacío, el dispositivo producirá un sonido de sistema predeterminado.
"ios_sound_off": true, // opcional. Activar/desactivar el sonido establecido por el campo "ios_sound".
"ios_ttl": 3600, // opcional. Parámetro de tiempo de vida: vida útil máxima del mensaje en segundos.
"ios_silent": 1, // opcional. Habilita notificaciones silenciosas (ignora "sound" y "content").
"ios_category_id": "1", // opcional. ID de categoría de iOS8 de Pushwoosh.
"ios_root_params": { // opcional. Parámetros de nivel raíz para el diccionario aps.
"aps": {
"content-available": "0", // opcional. Establece "1" para enviar un push silencioso y "0" para un push regular.
"mutable-content": 1 // requerido para adjuntos de medios en iOS10+.
},
"callerName": "CallerName", // opcional parámetro VoIP. Nombre del llamante. Si no se especifica, se muestra "llamante desconocido".
"video": true, // opcional parámetro VoIP. Indica si se admiten videollamadas.
"supportsHolding": true, // opcional parámetro VoIP. Indica si se admite la funcionalidad de llamada en espera.
"supportsDTMF": false, // opcional parámetro VoIP. Controla el soporte de la señal de multifrecuencia de doble tono.
"data": {} // opcional Datos proporcionados por el usuario, máximo de 4KB
},
"ios_attachment": "URL", // opcional. Inserta contenido multimedia en la notificación.
"ios_thread_id": "some thread id", // opcional. Identificador para agrupar notificaciones relacionadas.
// Los mensajes con el mismo ID de hilo se agruparán
// en la pantalla de bloqueo y en el Centro de Notificaciones.
"ios_critical": true, // opcional. Marca la notificación de iOS como una alerta crítica
// reproduciendo sonido incluso si el dispositivo está silenciado o
// el modo No Molestar está activado.
"ios_category_custom": "category", // opcional. Categoría APNS personalizada.
"ios_interruption_level": "active", // opcional. Uno de "passive", "active", "time-sensitive",
// "critical". Indica la importancia y
// el tiempo de entrega de una notificación. Consulta la
// guía de push único para más detalles.
"apns_trim_content": 1 // opcional. (0|1) Recorta las cadenas de contenido excedentes con puntos suspensivos.
}]
}
}

Parámetros de Android

Anchor link to
Ejemplo
{
"request": {
"application": "12345-67891", // requerido. Código de aplicación de Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"notifications": [{
"android_header": { // opcional. Encabezado de la notificación de Android.
"en": "header"
},
"android_content": { // opcional. Contenido de la notificación de Android.
"en": "content"
},
"android_root_params": { // opcional. Objeto clave-valor personalizado.
"key": "value", // Parámetros de nivel raíz para los destinatarios del payload de Android.
"CancelID": 12345678, // opcional. Cancela la notificación push con el
"voip": true, // requerido parámetro VoIP. Se requiere el parámetro para enviar notificaciones push VoIP.
"callerName": "callerName", // opcional parámetro VoIP. Nombre del llamante. Si no se especifica, se muestra "llamante desconocido".
"video": true, // opcional parámetro VoIP. Indica si se admiten videollamadas.
}, // ID de Mensaje especificado (obtén el ID del Historial de Mensajes)
"android_sound": "soundfile", // opcional. Sin extensión de archivo. Si se deja vacío,
// el dispositivo producirá un sonido de sistema predeterminado.
"android_sound_off": true, // opcional. Activar/desactivar el sonido establecido por el campo "android_sound"
"android_icon": "icon.png", // opcional.
"android_custom_icon": "URL.png", // opcional. URL completa al archivo de imagen.
"android_banner": "URL.png", // opcional. URL completa al archivo de imagen.
"android_badges": 5, // opcional. Número de insignia del icono de la aplicación de Android.
// Usa "+n" o "-n" para incrementar/decrementar el valor de la insignia en n.
"android_gcm_ttl": 3600, // opcional. Parámetro de tiempo de vida — vida útil máxima del mensaje en segundos.
"android_vibration": 0, // opcional. Forzar vibración en Android para pushes de alta prioridad.
"android_led": "#rrggbb", // opcional. Color LED hexadecimal, el dispositivo hará su mejor aproximación.
"android_priority": -1, // opcional. Establece el parámetro "importance" para dispositivos con
// Android 8.0 y superior, así como el parámetro "priority"
// para dispositivos con Android 7.1 e inferior. Establece el
// nivel de interrupción de un canal de notificación o una notificación
// particular. Los valores válidos son -2, -1, 0, 1, 2.
"android_delivery_priority": "normal", // opcional. "normal" o "high".
// Permite la entrega de la notificación cuando el
// dispositivo está en modo de ahorro de energía.
"android_ibc": "#RRGGBB", // opcional. color de fondo del icono en Lollipop, #RRGGBB,
// #AARRGGBB, "red", "black", "yellow", etc.
"android_silent": 1, // opcional. 0 o 1. Habilita la notificación silenciosa.
// Ignora el sonido y el contenido
"android_group_id": "123" // opcional. Identificador para agrupar notificaciones relacionadas. Los mensajes con
// el mismo ID de hilo se agruparán en
// el Centro de Notificaciones.
}]
}
}

Parámetros de Huawei

Huawei
{
"request": {
"application": "12345-67891", // requerido. Código de aplicación de Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"notifications": [{
"huawei_android_header": { // opcional. Objeto O cadena. Título de la notificación
"en": "header"
},
"huawei_android_content": { // opcional. Objeto O cadena. Contenido de la notificación
"en": "content"
},
"huawei_android_badges": true, // opcional.
"huawei_android_silent": 0, // opcional. 0 o 1. Habilita la notificación silenciosa.
// Ignora el sonido y el contenido
"huawei_android_icon": "URL.png", // opcional.
"huawei_android_led": "#FF0011", // opcional. Color LED hexadecimal, el dispositivo hará su mejor aproximación
"huawei_android_vibration": 1, // opcional. Forzar vibración en Huawei para pushes de alta prioridad
"huawei_android_sound": "sound.wav", // opcional. Si se deja vacío, el dispositivo producirá
// un sonido de sistema predeterminado
"huawei_android_sound_off": true, // opcional. Activar/desactivar el sonido establecido por
// el campo "huawei_android_sound"
"huawei_android_custom_icon": "URL.png", // opcional
"huawei_android_gcm_ttl": 2400, // opcional. Parámetro de tiempo de vida - máximo
// vida útil del mensaje en segundos
"huawei_android_banner": "URL.png", // opcional. URL de ruta completa al archivo de imagen
"huawei_android_root_params": { // opcional. Objeto clave-valor personalizado.
"key": "value" // Parámetros de nivel raíz para los destinatarios del payload de Huawei.
},
"huawei_android_priority": 0, // opcional. Valores válidos: -2, -1, 0, 1, 2
"huawei_android_ibc": "#0011AA", // opcional. Color de fondo del icono en Lollipop
"huawei_android_lockscreen": 1, // opcional
"huawei_android_delivery_priority": "normal", // opcional. "normal" o "high". Permite la entrega de notificaciones
// en modo de ahorro de energía
"huawei_android_group_id": "group_id" // opcional. Identificador para agrupar notificaciones relacionadas
}]
}
}

Parámetros de Safari

Anchor link to
Safari
{
"request": {
"application": "12345-67891", // requerido. Código de aplicación de Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"notifications": [{
"safari_url_args": [ // requerido, pero el valor puede estar vacío
"firstArgument",
"secondArgument"
],
"safari_title": { // opcional. Objeto O cadena. Título de la notificación.
"en": "content"
},
"safari_content": { // opcional. Objeto O cadena. Contenido de la notificación.
"en": "content"
},
"safari_action": "Click here", // opcional.
"safari_ttl": 3600 // opcional. Parámetro de tiempo de vida — el máximo
// vida útil de un mensaje en segundos.
}]
}
}

Parámetros de Chrome

Anchor link to
Chrome
{
"request": {
"application": "12345-67891", // requerido. Código de aplicación de Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"notifications": [{
"chrome_title": { // opcional. Objeto O cadena. Puedes especificar el encabezado
"en": "title" // del mensaje en este parámetro.
},
"chrome_content": { // opcional. Objeto O cadena. Puedes especificar el contenido
"en": "content" // del mensaje en este parámetro.
},
"chrome_icon": "URL.png", // opcional. URL completa al icono o ruta del archivo de recursos de la extensión
"chrome_gcm_ttl": 3600, // opcional. Parámetro de tiempo de vida – vida útil máxima del mensaje en segundos.
"chrome_duration": 20, // opcional. máx. 50 segundos. Cambia el tiempo de visualización del push de Chrome.
// Establece en 0 para mostrar el push hasta que el usuario interactúe con él.
"chrome_image": "image_URL", // opcional. URL a una imagen grande.
"chrome_root_params": { // opcional. Establece parámetros específicos para los mensajes enviados a Chrome.
"key": "value"
},
"chrome_button_text1": "text1", // opcional
"chrome_button_url1": "button1_URL", // opcional. Se ignora si chrome_button_text1 no está establecido.
"chrome_button_text2": "text2", // opcional
"chrome_button_url2": "button2_url" // opcional. Se ignora si chrome_button_text2 no está establecido.
}]
}
}

Parámetros de Firefox

Anchor link to
Firefox
{
"request": {
"application": "12345-67891", // requerido. Código de aplicación de Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"notifications": [{
"firefox_title": { // opcional. Objeto O cadena. Puedes especificar el encabezado del mensaje aquí.
"en": "title"
},
"firefox_content": { // opcional. Objeto O cadena. Puedes especificar el contenido del mensaje aquí.
"en": "content"
},
"firefox_icon": "URL.png", // opcional. URL de ruta completa al icono o ruta al
// archivo en los recursos de la extensión.
"firefox_root_params": { // opcional. Establece parámetros específicos para los mensajes enviados a Firefox.
"key": "value"
}
}]
}
}

Parámetros de Amazon

Anchor link to
Amazon
{
"request": {
"application": "12345-67891", // requerido. Código de aplicación de Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"notifications": [{
"adm_header": { // opcional. Objeto O cadena. Puedes especificar el encabezado del mensaje aquí.
"en": "header"
},
"adm_content": { // opcional. Objeto O cadena. Puedes especificar el contenido del mensaje aquí.
"en": "content"
},
"adm_root_params": { // opcional. Objeto clave-valor personalizado
"key": "value"
},
"adm_sound": "push.mp3", // opcional.
"adm_sound_off": true, // opcional. Activar/desactivar el sonido establecido por el campo "adm_sound"
"adm_icon": "icon.png", // opcional. URL completa al icono.
"adm_custom_icon": "URL.png", // opcional.
"adm_banner": "URL.png", // opcional.
"adm_ttl": 3600, // opcional. Parámetro de tiempo de vida — el máximo de vida útil del mensaje
// en segundos.
"adm_priority": -1 // opcional. Prioridad del push en el cajón de pushes de Amazon,
// los valores válidos son -2, -1, 0, 1 y 2.
}]
}
}

Parámetros de Mac OS X

Anchor link to
Mac OS X
{
"request": {
"application": "12345-67891", // requerido. Código de aplicación de Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"notifications": [{
"mac_title": { // opcional. Objeto O cadena. Añade Título para la notificación push.
"en": "title"
},
"mac_subtitle": { // opcional. Añade subtítulo para la notificación push.
"en": "subtitle"
},
"mac_content": { // opcional. Añade contenido para la notificación push.
"en": "content"
},
"mac_badges": 3, // opcional.
"mac_sound": "sound.caf", // opcional.
"mac_sound_off": true, // opcional. Activar/desactivar el sonido establecido por el campo "mac_sound"
"mac_root_params": { // opcional.
"content-available": 1
},
"mac_ttl": 3600 // opcional. Parámetro de tiempo de vida — vida útil máxima del mensaje en segundos.
}]
}
}

Parámetros de Windows

Anchor link to
Windows
{
"request": {
"application": "12345-67891", // requerido. Código de aplicación de Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"notifications": [{
"wns_content": { // requerido. Contenido (XML o raw) de la notificación codificado en base64 de MIME
// en forma de Objeto O Cadena
"en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==",
"de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4="
},
"wns_type": "Badge", // opcional. 'Tile' | 'Toast' | 'Badge' | 'Raw'
"wns_tag": "myTag", // opcional. Usado en la política de reemplazo de Tile.
// Una cadena alfanumérica de no más de 16 caracteres.
"wns_cache": 1, // opcional. (1|0) Se traduce en el valor de X-WNS-Cache-Policy.
"wns_ttl": 600 // opcional. Tiempo de expiración de la notificación en segundos.
}]
}
}

Respuesta:

Código de estado HTTPstatus_codeDescripción
200200Mensaje creado con éxito
200210Error de argumento. Consulta status_message para más información
400N/ACadena de solicitud mal formada
500500Error interno

Rastreo de mensajería de la API

Anchor link to

Por motivos de balanceo de carga, no almacenamos los mensajes enviados a través de la API con el parámetro “devices” que contiene menos de 10 dispositivos en un array. Debido a esto, dichos mensajes no se mostrarán en tu Historial de Mensajes.

Para ver los informes de push durante la fase de prueba, utiliza el rastreo de mensajería de la API. Activar esta opción ON te permite anular este límite durante 1 hora y guardar dichos pushes en el Historial de Mensajes. El rastreo de mensajería de la API se desactiva OFF automáticamente después de 1 hora.

El rastreo de mensajería de la API se puede activar en la página de Historial de Mensajes haciendo clic en Iniciar rastreo de mensajería de la API en la esquina superior derecha.

Condiciones de etiquetas (Tags)

Anchor link to

Cada condición de etiqueta es un array como [tagName, operator, operand] donde

  • tagName: nombre de una etiqueta
  • operator: “EQ” | “IN” | “NOTEQ” | “NOTIN” | “LTE” | “GTE” | “BETWEEN” | “NOTSET” | “ANY”
  • operand: string | integer | array | date

Descripción del operador

Anchor link to
  • EQ: el valor de la etiqueta es igual al operando;
  • IN: el valor de la etiqueta se cruza con el operando (el operando siempre debe ser un array);
  • NOTEQ: el valor de la etiqueta no es igual a un operando;
  • NOTIN: el valor de la etiqueta no se cruza con el operando (el operando siempre debe ser un array);
  • GTE: el valor de la etiqueta es mayor o igual que el operando;
  • LTE: el valor de la etiqueta es menor o igual que el operando;
  • BETWEEN: el valor de la etiqueta es mayor o igual que el valor mínimo del operando pero menor o igual que el valor máximo del operando (el operando siempre debe ser un array);
  • NOTSET: etiqueta no establecida. El operando no se considera;
  • ANY: la etiqueta tiene cualquier valor. El operando no se considera.

Etiquetas de cadena

Anchor link to

Operadores válidos: EQ, IN, NOTEQ, NOTIN, NOTSET, ANY
Operandos válidos:

  • EQ, NOTEQ: el operando debe ser una cadena;
  • IN, NOTIN: el operando debe ser un array de cadenas como ["valor 1", "valor 2", "valor N"];
  • NOTSET: etiqueta no establecida. El operando no se considera;
  • ANY: la etiqueta tiene cualquier valor. El operando no se considera.

Etiquetas de entero

Anchor link to

Operadores válidos: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Operandos válidos:

  • EQ, NOTEQ, GTE, LTE: el operando debe ser un entero;
  • IN, NOTIN: el operando debe ser un array de enteros como [valor 1, valor 2, valor N];
  • BETWEEN: el operando debe ser un array de enteros como [valor_min, valor_max];
  • NOTSET: etiqueta no establecida. El operando no se considera;
  • ANY: la etiqueta tiene cualquier valor. El operando no se considera.

Etiquetas de fecha

Anchor link to

Operadores válidos: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Operandos válidos:

  • "AAAA-MM-DD 00:00" (cadena)
  • marca de tiempo unix 1234567890 (entero)
  • "hace N días" (cadena) para los operadores EQ, BETWEEN, GTE, LTE

Etiquetas booleanas

Anchor link to

Operadores válidos: EQ, NOTSET, ANY
Operandos válidos: 0, 1, true, false

Etiquetas de lista

Anchor link to

Operadores válidos: IN, NOTIN, NOTSET, ANY
Operandos válidos: el operando debe ser un array de cadenas como ["valor 1", "valor 2", "valor N"].

Fragmentos de /createMessage

Anchor link to

Ejemplos de solicitudes /createMessage:

#!/bin/bash
#Uso
if [ ! -n "$1" ] || [ ! -n "$2" ]
then
echo "`basename $0` uso: api_token appid message";
exit 1;
fi;
MESSAGE="$3";
if [ -z "$3" ]
then
MESSAGE='¡Un push para gobernarlos a todos!'
fi;
echo -e "Respuesta:"
curl --data-binary "
{\"request\":
{\"application\":\"$2\",
\"auth\":\"$1\",
\"notifications\":
[{
\"send_date\": \"now\",
\"content\": \"$MESSAGE\"
}]
}
}" \
-H "Content-type: application/json" \
"https://api.pushwoosh.com/json/1.3/createMessage"
echo "";
exit 0;

deleteMessage

Anchor link to

POST https://api.pushwoosh.com/json/1.3/deleteMessage

Elimina un mensaje programado.

Cuerpo de la solicitud

Anchor link to
NombreTipoDescripción
auth*stringToken de acceso a la API desde el Panel de Control de Pushwoosh.
message*stringCódigo de mensaje obtenido en la solicitud /createMessage.
{
"status_code": 200,
"status_message": "OK"
}
Ejemplo
{
"request":{
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"message": "xxxx-xxxxxxx-xxxxxx" // requerido. Código de mensaje obtenido en /createMessage
}
}

Códigos de estado:

Código de estado HTTPstatus_codeDescripción
200200Mensaje eliminado con éxito
200210Error de argumento. Consulta status_message para más información
400N/ACadena de solicitud mal formada
500500Error interno
<?php
// ver https://gomoob.github.io/php-pushwoosh/delete-message.html
use Gomoob\Pushwoosh\Model\Request\DeleteMessageRequest;
// crea una instancia de solicitud
$request = DeleteMessageRequest::create()->setMessage('MESSAGE_CODE');
// llama al servicio web '/deleteMessage'
$response = $pushwoosh->deleteMessage($request);
if($response->isOk()) {
print '¡Genial, mi mensaje ha sido eliminado!';
} else {
print '¡Vaya, la eliminación falló :-(';
print 'Código de estado: ' . $response->getStatusCode();
print 'Mensaje de estado: ' . $response->getStatusMessage();
}

getMessageDetails

Anchor link to

POST https://api.pushwoosh.com/json/1.3/getMessageDetails

Recupera los detalles del mensaje.

Cuerpo de la solicitud

Anchor link to
NombreTipoDescripción
auth*stringToken de acceso a la API desde el Panel de Control de Pushwoosh.
message*stringCódigo de mensaje o ID de mensaje.
{
"status_code": 200,
"status_message": "OK",
"response": {
"message": {
"id": 2068991743,
"created": "2016-09-14 17:19:42",
"send_date": "2016-09-14 17:19:41",
"status": "done",
"content": {
"en": "Hello {Name|CapitalizeFirst|friend}! 🚀"
},
"platforms": "[1]",
"ignore_user_timezone": "1",
"code": "XXXX-92B4C3C5-A7F5EF70",
"data": {
"key": "value"
}
}
}
}
Ejemplo
{
"request":{
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"message": "xxxx-xxxxxxx-xxxxxx" // requerido. código de mensaje o ID de mensaje
}
}

createTargetedMessage

Anchor link to

POST https://api.pushwoosh.com/json/1.3/createTargetedMessage

Crea una nueva notificación push dirigida.

Cuerpo de la solicitud

Anchor link to
NombreTipoDescripción
auth*stringToken de acceso a la API desde el Panel de Control de Pushwoosh.
devices_filter*stringConsulta la nota a continuación.
send_date*stringAAAA-MM-DD HH:mm o ‘now’.
ignore_user_timezonebooleanSi se ignora, UTC-0 es el predeterminado para “send_date”.
timezonestringSi se ignora, UTC-0 es el predeterminado para “send_date”.
campaignstringCódigo de una campaña a la que deseas asignar este mensaje push.
content*stringContenido de la notificación. Consulta el ejemplo de solicitud para más detalles.
transactionIdstringIdentificador de mensaje único para evitar la duplicación de mensajes en caso de problemas de red. Se almacena en el lado de Pushwoosh durante 5 minutos.
linkstringEnlace que se abrirá una vez que un usuario abra un mensaje push.
minimize_linkinteger0 - no minimizar, 2 - bit.ly. Predeterminado = 2.
dataobjectCadena JSON u objeto JSON. Se pasará como parámetro “u” en el payload (convertido a cadena JSON).
presetstringCódigo de preset.
send_rateintegerThrottling. Los valores válidos van de 100 a 1000 pushes por segundo.
inbox_datestringEspecifica cuándo eliminar un mensaje de la Bandeja de entrada.
inbox_imagestringURL de la imagen que se mostrará junto al mensaje en la Bandeja de entrada.
{
"status_code": 200,
"status_message": "OK",
"response": {
"messageCode": "97B0-C7473871-2FBDFDC6"
}
}

Más ejemplos de respuesta:

{
"status_code": 210,
"status_message": "Se produjeron errores al compilar el filtro",
"response": {
"errors": [{
"message": "Especificación de conjunto de etiquetas no válida. Se esperaba \")\".",
"type": "syntax"
}]
}
}
Ejemplo
{
"request": {
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // requerido. Sintaxis explicada a continuación
"send_date": "now", // opcional. AAAA-MM-DD HH:mm O 'now'
"ignore_user_timezone": true, // opcional.
"timezone": "America/New_York", // opcional. Si se ignora, UTC-0 es el predeterminado para "send_date".
// Más información en https://php.net/manual/timezones.php.
"campaign": "CAMPAIGN_CODE", // opcional. Código de campaña al que deseas asignar este mensaje push.
"content": { // opcional. Objeto O cadena. Usa "wns_content" en su lugar para Windows.
"en": "English",
"de": "Deutsch"
},
"transactionId": "unique UUID", // opcional. Identificador de mensaje único para evitar la duplicación de mensajes
// en caso de problemas de red. Se almacena en el lado de
// Pushwoosh durante 5 minutos.
"rich_media": "XXXXX-XXXXX", // opcional. Copia el código de Rich Media de la barra de URL de la
// página del editor de Rich Media en el Panel de Control de Pushwoosh.
"link": "https://google.com", // opcional. Para enlaces profundos (deeplinks) añade "minimize_link": 0
"minimize_link": 0, // opcional. 0 — no minimizar, 2 — bitly. Predeterminado = 2.
// El acortador de URL de Google está deshabilitado desde el 30 de marzo de 2019.
// Ten en cuenta que los acortadores tienen restricciones
// en el número de llamadas.
"data": { // opcional. Cadena JSON u objeto JSON.
"key": "value" // Se pasará como parámetro "u" en el payload
}, // (convertido a cadena JSON).
"preset": "XXXXX-XXXXX", // opcional. Código de Preset de Push desde tu Panel de Control.
"send_rate": 100, // opcional. Throttling. Los valores válidos van de 100 a 1000 pushes/segundo.
"dynamic_content_placeholders": { // opcional. Marcadores de posición para contenido dinámico en lugar de etiquetas de dispositivo.
"firstname": "John",
"lastname": "Doe"
},
// Para guardar el mensaje en la Bandeja de entrada a través de la API, usa "inbox_date" o "inbox_image".
// El mensaje se guarda cuando se utiliza al menos uno de estos parámetros.
"inbox_image": "Inbox image URL", // opcional. La imagen que se mostrará junto al mensaje.
"inbox_date": "2017-02-02" // opcional. Especifica cuándo eliminar un mensaje de la Bandeja de entrada.
// El mensaje se eliminará de la Bandeja de entrada a las 00:00:01 UTC de
// la fecha especificada, por lo que el día anterior es el último
// día que un usuario puede ver el mensaje en su Bandeja de entrada.
// Si no se especifica, la fecha de eliminación predeterminada es el siguiente
// día después de la fecha de envío.
}
}

Los conceptos básicos son muy simples: todos los filtros se realizan sobre los conjuntos de entidades.

Los conjuntos se definen como:

1. Dispositivos suscritos a la aplicación particular (A);
2. Dispositivos que coinciden con los valores de etiqueta especificados (T) o el valor de etiqueta específico de la aplicación (AT);\

Probemos con algunos ejemplos según la lista anterior.

Dirigirse a los suscriptores de la aplicación

Anchor link to

El filtro “A” define un conjunto de dispositivos suscritos a una aplicación particular:

A("XXXXX-XXXXX", ["iOS", "Android", "OsX", "Windows", "Amazon", "Safari", "Chrome", "Firefox"])

donde

  • “XXXXX-XXXXX” – Código de Aplicación de Pushwoosh
  • [“iOS”, “Android”, …] – array de plataformas objetivo. Si se omite, el mensaje se enviará a todas las plataformas disponibles para esta aplicación.

Filtrar por valores de etiqueta

Anchor link to

El filtro “T” define un conjunto de dispositivos que tienen asignados los valores de etiqueta especificados.

T(\"Age\", IN, [17,20])

Define el conjunto de dispositivos que tienen la etiqueta “age” establecida en uno de los valores: 17, 18, 19, 20.

Tipos de etiquetas y operadores

Anchor link to

Lo más importante a entender es que las etiquetas se comparten entre las aplicaciones, y esto presenta un instrumento muy poderoso para segmentar y filtrar a tus usuarios objetivo sin vincularte a una aplicación en particular.

La etiqueta puede ser de tres tipos diferentes: Cadena, Entero, Lista. El tipo de etiqueta define qué operadores puedes usar para una etiqueta en particular.

Etiquetas de cadena

Anchor link to

Operadores aplicables:

  • EQ – se dirige a dispositivos con un valor de etiqueta especificado
  • IN – se dirige a dispositivos con cualquiera de los valores de etiqueta especificados
  • NOTIN – se dirige a dispositivos sin valores de etiqueta especificados
  • NOTEQ – se dirige a dispositivos con un valor de etiqueta no igual a uno especificado
  • NOTSET – se dirige a dispositivos sin valor para una etiqueta especificada
  • ANY – se dirige a dispositivos con cualquier valor establecido para una etiqueta especificada

Ejemplos:

T (\"Age\", EQ, 30) – filtra usuarios de 30 años

T (\"favorite_color\", IN, [\"red\",\"green\",\"blue\"]) – filtra usuarios que han elegido rojo, verde o azul como su color favorito.

T (\"Name", NOTSET, \"\") – se dirige a dispositivos sin valor para la etiqueta Name.

Puedes usar valores numéricos con las etiquetas de cadena, pero dichos valores se convertirán a una cadena.

Etiquetas de entero

Anchor link to

Operadores aplicables:

  • GTE – mayor o igual que un valor especificado
  • LTE– menor o igual que un valor especificado
  • EQ – igual a un valor especificado
  • BETWEEN – entre los valores mínimo y máximo especificados
  • IN – cualquiera de los valores especificados
  • NOTIN – ningún valor especificado asignado a un dispositivo
  • NOTEQ – dispositivos con un valor de etiqueta no igual a uno especificado
  • NOTSET – dispositivos sin valor para una etiqueta especificada
  • ANY – dispositivos con cualquier valor establecido para una etiqueta especificada

Ejemplos:

T (\"Level\", EQ, 14) – filtra solo a los usuarios en el nivel 14.

T (\"Level\", BETWEEN, [1,5) – filtra usuarios en los niveles 1, 2, 3, 4 y 5.

T (\"Level", GTE, 29) – se dirige a usuarios que han alcanzado al menos el nivel 29.

Etiquetas de lista

Anchor link to

Operadores aplicables:

  • IN – dispositivos con cualquiera de los valores de etiqueta especificados

Ejemplo: T("Category", IN, ["breaking_news","business","politics"])

Etiquetas de fecha

Anchor link to

Operadores aplicables:

  • GTE – mayor o igual que un valor especificado
  • LTE– menor o igual que un valor especificado
  • EQ – igual a un valor especificado
  • BETWEEN – entre los valores mínimo y máximo especificados
  • NOTEQ – dispositivos con un valor de etiqueta no igual a uno especificado
  • NOTSET – dispositivos sin valor para una etiqueta especificada
  • ANY – dispositivos con cualquier valor establecido para una etiqueta especificada

Ejemplos:

AT("7777D-322A7","Last Application Open", BETWEEN, ["2022-02-28", "2022-03-02"])

AT("7777D-322A7","Last Application Open", GTE, "hace 90 días")

Operaciones

Anchor link to
  • “+” – une dos conjuntos (equivale a OR)
  • “*” – intersecta dos conjuntos (equivale a AND)
  • “\” – resta un conjunto de otro (equivale a NOT)

Todas las operaciones son asociativas a la izquierda. ”+” y ”*” tienen la misma prioridad. "" tiene mayor prioridad. Puedes usar paréntesis para definir las prioridades de los cálculos.

Ten en cuenta que la operación “\” no es conmutativa. A("12345-12345") \ A("67890-67890") no es lo mismo que A("67890-67890") \ A("12345-12345").

getPushHistory

Anchor link to

POST https://api.pushwoosh.com/json/1.3/getPushHistory

Obtiene el historial de mensajes con detalles de los pushes.

Cuerpo de la solicitud

Anchor link to
NombreTipoDescripción
auth*stringToken de acceso a la API desde el Panel de Control de Pushwoosh.
limitMessagesintegerLimita el número de mensajes en una respuesta. Valores posibles de 10 a 1000.
sourcestringOrigen del historial de pushes. Puede ser nulo o: “CP”, “API”, “GeoZone”, “RSS”, “AutoPush”, “A/B Test”.
searchBystringValores posibles para buscar. Puede ser nulo o: “notificationID”, “notificationCode”, “applicationCode”, “campaignCode”.
valuestringValor de búsqueda establecido según el campo “searchBy”.
lastNotificationIDstringUsado para paginación. Último messageId de la llamada /getPushHistory anterior. Consulta los detalles a continuación.
{
"status_code": 200,
"status_message": "OK",
"response": {
"rows": [{
"id": 10191611434,
"code": "8071-07AD1171-77238AD1",
"createDate": "2020-09-14 12:26:21",
"sendDate": "2020-09-14 12:26:21",
"content": {
"en": "Hello!"
},
"url": null,
"ios_title": null,
"ios_subtitle": null,
"ios_root_params": null,
"android_header": null,
"android_root_params": null,
"conditions": null,
"conditions_operator": "AND",
"filter_code": "E3A64-A5F3C",
"filter_conditions": "#In-app Purchase(≠0)",
"filter_name": "Purchased something",
"geozone": null,
"campaignId": "",
"campaignName": "",
"subscription_segments": null,
"open": {
"C90C0-0E786": {
"IOS": 0
}
},
"sent": {
"C90C0-0E786": {
"IOS": 1
}
},
"ctr": {
"C90C0-0E786": 0
}
}, {
"id": 10191609202,
"code": "41CA-83F8E0D7-7A63822B",
"createDate": "2020-09-14 12:25:55",
"sendDate": "2020-09-14 12:25:55",
"content": {
"en": "Hi!"
},
"url": null,
"ios_title": null,
"ios_subtitle": null,
"ios_root_params": null,
"android_header": null,
"android_root_params": null,
"conditions": null,
"conditions_operator": "AND",
"filter_code": null,
"filter_conditions": null,
"filter_name": null,
"geozone": null,
"campaignId": "",
"campaignName": "",
"subscription_segments": {
"2D732-BB981": "News"
},
"open": {
"C90C0-0E786": {
"CHROME": 0,
"IOS": 0
}
},
"sent": {
"C90C0-0E786": {
"CHROME": 1,
"IOS": 2
}
},
"ctr": {
"C90C0-0E786": 0
}
}]
}
}
Ejemplo
{
"request":{
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"source": null, // opcional. Los valores posibles son nulo, "CP", "API", "GeoZone",
// "RSS", "AutoPush", "A/B Test"
"searchBy": "applicationCode", // opcional. Los valores posibles son "", "notificationID",
// "notificationCode", "applicationCode", "campaignCode"
"value": "C8717-703F2", // opcional. Valor de búsqueda establecido según el campo "searchBy".
"lastNotificationID": 0, // opcional. Usado para paginación. Último messageId de la
// llamada /getPushHistory anterior. Consulta los detalles a continuación.
"limitMessages": 1000 // opcional. Valor posible de 10 a 1000.
}
}

Este método devolverá 1000 mensajes de la cuenta ordenados por ID de mensaje. Para obtener la segunda página, especifica el último ID de mensaje de la respuesta anterior en el parámetro lastNotificationId.

Tipos de datos de respuesta

Anchor link to
id -- int | 0
code -- string
createDate -- string (fecha: %Y-%m-%d %H:%M:%S)
sendDate -- string (fecha: %Y-%m-%d %H:%M:%S)
content -- array ( dict {lang: value} | list [])
title -- array ( dict {lang: value} | list [])
subtitle -- array ( dict {lang: value} | list [])
url -- string
ios_title -- string | array ( dict {lang: value} ) | null
ios_subtitle -- string | array ( dict {lang: value} ) | null
ios_root_params -- dict (JSON) | null
android_header -- string | array ( dict {lang: value} ) | null
android_root_params -- dict (JSON) | null
conditions -- list (JSON) | null
conditions_operator -- string | null
filter_code -- string | null
filter_name -- string | null
filter_conditions -- string | null
geozone -- string | null
campaignId -- string | ""
campaignName -- string | ""
subscription_segments (obsoleto) -- list (JSON) | null
data -- dict (JSON) | null
open -- dict [dict [string: int]] | "" Ejemplo: 'open': {'AAAAA-BBBBB': {'IOS': 1, 'ANDROID': 1}}
sent -- dict [dict [string: int]] | "" Ejemplo: 'sent': {'AAAAA-BBBBB': {'IOS': 10, 'ANDROID': 10}}
ctr -- dict [string: int] | "" Ejemplo: {'AAAAA-BBBBB': 1}
errors -- dict [string: int] | "" Ejemplo: {'ANDROID': 1, 'IOS': 1}

cancelMessage

Anchor link to

POST https://api.pushwoosh.com/json/1.3/cancelMessage

Elimina un mensaje programado.

Cuerpo de la solicitud

Anchor link to
NombreTipoDescripción
auth*stringToken de acceso a la API desde el Panel de Control de Pushwoosh.
message*stringEl Código de mensaje obtenido en la respuesta de /createMessage.
{
"status_code":200,
"status_message":"OK"
}
Ejemplo
{
"request":{
"auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
"message": "xxxx-xxxxxxx-xxxxxx" // requerido. El código de mensaje obtenido en la respuesta de /createMessage
}
}

Códigos de estado:

Código de estado HTTPstatus_codeDescripción
200200Mensaje cancelado con éxito
200210Error de argumento. Consulta status_message para más información.
400N/ACadena de solicitud mal formada
500500Error interno