Using Notification Factory
Este endpoint permite crear nuevas notificaciones para que puedan ser enviadas a través del servicio de campañas usando el uuid del mensaje recién creado, este endpoint permite una amplia configuración de los mensajes. Debido a limitaciones técnicas que poseen sistemas operativos Android y Ios, hay que tener cuidado con los elementos externos como las imágenes, por lo que es importante probar en un equipo de pruebas antes de realizar un envío masivo.
Endpoint
Headers
| Key | Value | Description | 
|---|---|---|
| Content-Type | application/json | |
| Authorization | Bearer LVwuk3_oug0D6... | access_token obtained in Atenea | 
Url
Method: POST
URL: https://api.trust.lat/message-persistance/api/v1/factory
Recuerda que para utilizar este endpoint es necesario un access token obtenido en el servicio Atenea
Body
{
    "notification_version": "trust_notifications_v1",
    "notification_type": "notification",
    "data": {
        "title": "titulo prueba",
        "message": "body prueba",
        "media_url": "https://.google.cl/photo.svg",
        "action_color": "x0x0000x0"
    },
    "buttons": {
        "button_1": {
            "action": "https://www.google.cl",
            "color": "#ff00ff",
            "text": "Ir al sitio",
            "type": "url"
        },
        "button_2": {
            "action": "https://www.google.cl",
            "color": "#ff00ff",
            "text": "Ir al sitio",
            "type": "url"
        }
    },
    "config": {
        "priority": "normal",
        "persistent": true,
        "cancelable": false,
        "play_time": 1,
        "open_app" : true
    },
    "values": [],
    "metadata": {
        "reactions": [
            "smile", "blush", "joy"
        ]
    }
}
El campo notification_type indica el tipo de notificación que se desea crear pudiendo ser de notification, dialog, video o banner.
| Field | Type | Required | Values | Examples | Comments | 
|---|---|---|---|---|---|
| notification_version | String | true | [trust_notifications_v1] | trust_notifications_v1 | |
| notification_type | String | true | [notification, dialog, video, banner] | notification | |
| values | Array | true | [] | Must be a empty array | 
Data
Este campo configura el contenido principal del mensaje, tener cuidado con las imagenes/videos y los colores. Imagenes: Deben ser https y accesible desde cualquier red, formatos permitidos .png y .jpg. Videos: Deben ser https y accesible desde cualquier red, formatos permitidos .mp4 y deben tener un peso ligero para evitar problemas de lentitud al mostrar el video. Color: Precaución con el formato, enviar un color en formato incorrecto causa problemas al mostrar la notificacion, formatos soportado RGB hexadecimal sin transparencia.
| Field | Type | Required | Default | Comments | Examples | 
|---|---|---|---|---|---|
| title | String | true | Title of message | ||
| message | String | true | Body of message | ||
| media_url | String, Url | true | Must be video o image url with https | https://trust-assets.s3.amazonaws.com/enrollment/dialogo_covid.png | |
| action_color | String, Color | true | Color of buttons | #9E2626 | 
Buttons
Define los botones que se mostrarán en los mensajes, por ahora solo se utilizaran button_1 y button_2 siendo este último opcional
| Field | Type | Required | Default | Values | Comments | Examples | 
|---|---|---|---|---|---|---|
| action | String, Url | true | Only 'high' or 'normal' | https://google.cl | ||
| color | String, Color | false | RGB Hex color | #9E2626 | ||
| text | String | true | Presione Aquí | |||
| type | type | true | [url, call, mail] | url | 
Config
| Field | Type | Required | Default | Comments | Examples | 
|---|---|---|---|---|---|
| priority | String | false | high | Only 'high' or 'normal' | high | 
| persistent | Boolean | false | false | true | |
| cancelable | Boolean | false | false | false | |
| play_time | Int | false | 0 | 5 | |
| open_app | Boolean | false | None | Field that indicates whether the "open_app" button is available. It only works for notification type messages. | true | 
Metadata
| Field | Type | Required | Default | Comments | Examples | 
|---|---|---|---|---|---|
| reactions | Array of strings | false | None | Array of strings than contains the "reaction_name" of emojis. Max 5, min 1 | reactions: [ "smile", "blush", "joy" ] | 
Revisar la lista de emojis permitidos para este endpoint
Code Examples
- Curl
 - JavaScript
 - Python
 
curl --location --request POST 'https://api.trust.lat/message-persistance/api/v1/factory' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer LVwuk3_oug0D6...' \
--data-raw '{
    "notification_version": "trust_notifications_v1",
    "notification_type": "notification",
    "data": {
        "title": "titulo prueba",
        "message": "body prueba",
        "media_url": "https://.google.cl/photo.svg",
        "action_color": "x0x0000x0"
    },
    "buttons": {
        "button_1": {
            "action": "https://www.google.cl",
            "color": "#ff00ff",
            "text": "Ir al sitio",
            "type": "url"
        },
        "button_2": {
            "action": "https://www.google.cl",
            "color": "#ff00ff",
            "text": "Ir al sitio",
            "type": "url"
        }
    },
    "config": {
        "priority": "normal",
        "persistent": true,
        "cancelable": false,
        "play_time": 1,
        "open_app": true
    },
    "values": [],
    "metadata": {
        "reactions": [
            "smile", "heart_eyes", "heart_eyes", "heart_eyes", "heart_eyes"
        ]
    },
}'
import requests
url = "https://api.trust.lat/message-persistance/api/v1/factory"
payload = "{\n    \"notification_version\": \"trust_notifications_v1\",\n    \"notification_type\": \"notification\",\n    \"data\": {\n        \"title\": \"titulo prueba\",\n        \"message\": \"body prueba\",\n        \"media_url\": \"https://.google.cl/photo.svg\",\n        \"action_color\": \"x0x0000x0\"\n    },\n    \"buttons\": {\n        \"button_1\": {\n            \"action\": \"https://www.google.cl\",\n            \"color\": \"#ff00ff\",\n            \"text\": \"Ir al sitio\",\n            \"type\": \"url\"\n        },\n        \"button_2\": {\n            \"action\": \"https://www.google.cl\",\n            \"color\": \"#ff00ff\",\n            \"text\": \"Ir al sitio\",\n            \"type\": \"url\"\n        }\n    },\n    \"config\": {\n        \"priority\": \"normal\",\n        \"persistent\": true,\n        \"cancelable\": false,\n        \"play_time\": 1,\n \"open_app\": true\n    },\n    \"values\": [],\n    \"metadata\": {\n        \"reactions\": [\n            \"smile\", \"blush\", \"joy\"\n        ]\n    }"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer LVwuk3_oug0D...'
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
var axios = require('axios');
var data = JSON.stringify({"notification_version":"trust_notifications_v1","notification_type":"notification","data":{"title":"titulo prueba","message":"body prueba","media_url":"https://.google.cl/photo.svg","action_color":"x0x0000x0"},"buttons":{"button_1":{"action":"https://www.google.cl","color":"#ff00ff","text":"Ir al sitio","type":"url"},"button_2":{"action":"https://www.google.cl","color":"#ff00ff","text":"Ir al sitio","type":"url"}},"config":{"priority":"normal","persistent":true,"cancelable":false,"play_time":1,"open_app":true},"values":[]},"metadata":{"reactions":["smile","blush","joy"]});
var config = {
  method: 'post',
  url: 'https://api.trust.lat/message-persistance/api/v1/factory',
  headers: { 
    'Content-Type': 'application/json', 
    'Authorization': 'Bearer LVwuk3_oug0D6...'
  },
  data : data
};
axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
Responses
HTTP Code: 201 Created
{
    "code": 201,
    "resource": "message",
    "data": {
        "id": 1,
        "uuid": "bdcaa73a-61de...",
        "custom_notification": {
            "priority": "normal",
            "data": {
                "type": "notification",
                "reactions": "[{\"reaction_name\":\"smile\",\"emoji_hex\":\"U+1F604\"},{\"reaction_name\":\"heart_eyes\",\"emoji_hex\":\"U+1F60D\"},{\"reaction_name\":\"blush\",\"emoji_hex\":\"U+1F60A\"}]",
                "notificationBody": "{\"text_title\":\"titulo prueba\",\"text_body\":\"body prueba\",\"image_url\":\"https://.google.cl/photo.svg\",\"isPersistent\":true,\"isCancelable\":false,\"min_play_time\":\"1\",\"buttons\":[{\"action\":\"none\",\"color\":\"#000000\",\"text\":\"none\",\"type\":\"open_app\"},{\"action\":\"https://www.google.cl\",\"color\":\"#ff00ff\",\"text\":\"Ir al sitio\",\"type\":\"url\"},{\"action\":\"https://www.google.cl\",\"color\":\"#ff00ff\",\"text\":\"Ir al sitio\",\"type\":\"url\"}]}"
            },
            "apns": {
                "payload": {
                    "aps": {
                        "sound": "default",
                        "category": "url-url",
                        "mutable-content": 1,
                        "alert": {
                            "title": "titulo prueba",
                            "body": "body prueba"
                        },
                        "badge": 1
                    },
                    "data": {
                        "type": "notification",
                        "reactions": "[{\"reaction_name\":\"smile\",\"emoji_hex\":\"U+1F604\"},{\"reaction_name\":\"heart_eyes\",\"emoji_hex\":\"U+1F60D\"},{\"reaction_name\":\"blush\",\"emoji_hex\":\"U+1F60A\"}]",
                        "notificationBody": "{\"text_title\":\"titulo prueba\",\"text_body\":\"body prueba\",\"image_url\":\"https://.google.cl/photo.svg\",\"isPersistent\":true,\"isCancelable\":false,\"min_play_time\":\"1\",\"buttons\":[{\"action\":\"none\",\"color\":\"#000000\",\"text\":\"none\",\"type\":\"open_app\"},{\"action\":\"https://www.google.cl\",\"color\":\"#ff00ff\",\"text\":\"Ir al sitio\",\"type\":\"url\"},{\"action\":\"https://www.google.cl\",\"color\":\"#ff00ff\",\"text\":\"Ir al sitio\",\"type\":\"url\"}]}"
                    }
                }
            }
        },
        "values": [],
        "created_at": "2020-05-26T22:21:39.701Z",
        "updated_at": "2020-05-26T22:21:39.701Z",
        "status": true,
        "type_notification": "trust_notification",
        "disposable": false,
        "factory_message": {
            "type": "notification",
            "data": {
                "title": "titulo test 4",
                "message": "body prueba 4",
                "media_url": "https://.google.cl/photo.svg",
                "action_color": "#348dfc"
            },
            "config": {
                "priority": "normal",
                "persistent": true,
                "cancelable": true,
                "play_time": 1,
                "portrait": true,
                "auto_play": true,
                "is_sound": true,
                "open_app": true
            },
            "buttons": {
                "button_1": {
                    "action": "https://www.google.cl",
                    "color": "#348dfc",
                    "text": "Ir al sitio",
                    "type": "url"
                },
                "button_2": {
                    "action": "https://www.google.cl",
                    "color": "#348dfc",
                    "text": "Ir al sitio",
                    "type": "url"
                }
            },
            "metadata": {
                "reactions": [
                    "smile",
                    "heart_eyes",
                    "blush"
                ]
            }
        },
        "company_uuid": null
    },
    "message": "Created"
}
HTTP Code: 422 Unprocessable Entity
{
    "code": 422,
    "resource": "message",
    "message": "Fail",
    "errors": "invalid notification_version, only [trust_notifications_v1] are valid"
}
HTTP Code: 422 Unprocessable Entity (reactions errors)
{
    "code": 422,
    "resource": "message",
    "message": "Fail",
    "errors": {
        "metadata": {
            "reactions": [
                "Min 1 and no more than 5 reactions are allowed"
            ]
        }
    }
}