Puedes enviar notificaciones por HSMs cuando se disparen eventos externos en aplicaciones ajenas a Cliengo .
Si cuentas con el servicio activo de HSMs de Cliengo, podrás desde una aplicación externa enviar un HSM por fuera del Manager de Cliengo cuando se dispare un determinado evento.
En este articulo te daremos las herramientas para que puedas configurarlo.
Request
Para enviar eventos externos es necesario contar con un api key, a enviar en un header de nombre apikey
. Si su empresa no cuenta con un apikey comuniquese con soporte de Cliengo para que le provean una a hola@cliengo.com
curl --location '<http://technical-solutions-api.cliengo.com/website/{websiteId}/hsm/notifications>' \\
--header 'Content-Type: application/json' \\
--header 'apikey: {apikey}' \\
--data '{
"templateId": "7",
"destination": "542994843975",
"params": {
"name": "Julieta"
}
}'
El endopint requiere las siguientes entradas:
apikey
clave privada de la empresa, en el header.websiteId
identificador del canal de Cliengo, en la URL.- Body, cuyo payload contiene:
templateId
: ID del la plantilla a enviar indicada en HSM Manager.destination
: número de teléfono de destino.params
: objeto JSON con los valores de las variables de la plantilla (en caso que la plantilla contenga variables). Debe enviarse vacío si no hay variables.
Ejemlpo:
{
"templateId": 1,
"destination": "542994843975",
"params": {
"name": "Santiago"
}
}
Dependiendo el tipo de plantilla, el payload será distinto.
Para el caso de plantillas de tipo imagen, video y documento, se puede inclurir un objeto media
para indicar el archivo multimedia a enviar. Si no se envía este objeto, el archivo multimedia será el indicado al crear la plantilla.
El media.link
debe cumplir los siguientes requisitos:
- Debe ser una URL pública que resuelva a un archivo multimedia por el método
GET
. - Debe permitir requests por el metodo
HEAD
. - Debe devolver un header
content-type
y su mimetype debe corresponder con el tipo de plantilla. - Debe devolver un header
content-length
y el tamaño debe ser menor al máximo para ese tipo de plantilla.
Caso: Image
Requisitos:
- Valid ContentTypes:
image/jpeg
image/png
- MaxFileSize:
2000000 // (2 MB)
Ejemplo:
{
"templateId": 1,
"destination": "542994843975",
"params": {
"name": "Santiago"
},
"media": {
"link": "<https://plus.unsplash.com/premium_photo-1661889099855-b44dc39e88c9>"
}
}
Caso: Video
Requisitos:
- Valid ContentTypes:
audio/mpeg
video/mp4
- MaxFileSize:
20000000 // 20 MB
Ejemplo:
{
"templateId": 1,
"destination": "542994843975",
"params": {
"name": "Santiago"
},
"media": {
"link": "<https://edisciplinas.usp.br/pluginfile.php/5196097/mod_resource/content/1/Teste.mp4>"
}
}
Caso: Document
Requisitos:
- Valid ContentTypes:
application/pdf
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- MaxFileSize:
2000000 // (2 MB)
Ejemplo:
{
"templateId": 1,
"destination": "542994843975",
"params": {
"name": "Santiago"
},
"media": {
"link": "<https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf>"
"filename": "PDF name here"
}
}
Response
El API puede responder con los siguientes códigos:
200
:SUCCESS
400
:INVALID_BODY
,INVALID_CONTENT_LENGTH
,INVALID_CONTENT_TYPE
,HEAD_METHOD_NOT_ALLOWED
401
:UNAUTHORIZED
404
:NOT_FOUND
409
:FILE_SIZE_EXCEEDED
A continuación se muestran algunos ejemplos
Éxito
SUCCESS
{
"code": "SUCCESS",
"statusCode": 200,
"description": "Resource successfully created",
"result": "HSM notification sent to 542994231917."
}
Error
SUCCESS
{
"code": "SUCCESS",
"statusCode": 200,
"description": "Resource successfully created",
"result": "HSM notification sent to 542994231917."
}
INVALID_BODY
{
"code": "INVALID_BODY",
"statusCode": 400,
"description": "Invalid body, query or params",
"result": [
{
"message": "\\"templateId\\" is required",
"path": [
"templateId"
],
"type": "any.required",
"context": {
"label": "templateId",
"key": "templateId"
}
},
{
"message": "\\"destination\\" is required",
"path": [
"destination"
],
"type": "any.required",
"context": {
"label": "destination",
"key": "destination"
}
},
{
"message": "\\"params\\" is required",
"path": [
"params"
],
"type": "any.required",
"context": {
"label": "params",
"key": "params"
}
}
]
}
INVALID_CONTENT_LENGTH
{
"code": "INVALID_CONTENT_LENGTH",
"statusCode": 400,
"description": "Cant get content-lenght header",
"result": {
"link": "<https://cima.aemps.es/cima/pdfs/es/p/83321/P_83321.pdf>",
"contentLength": null,
"contentType": "application/pdf",
"templateType": "DOCUMENT",
"maxFileSize": 2000000
}
}
INVALID_CONTENT_TYPE
{
"code": "INVALID_CONTENT_TYPE",
"statusCode": 400,
"description": "content-type does not match valid values.",
"result": {
"link": "<https://edisciplinas.usp.br/pluginfile.php/5196097/mod_resource/content/1/Teste.mp4>",
"contentLength": 1570024,
"contentType": "video/mp4",
"templateType": "IMAGE",
"allowedMimeTypes": [
"image/png",
"image/jpeg"
]
}
}
HEAD_METHOD_NOT_ALLOWED
{
"code": "HEAD_METHOD_NOT_ALLOWED",
"statusCode": 400,
"description": "The link does not support method HEAD.",
"result": {
"link": "<https://picsum.photos/200>"
}
}
UNAUTHORIZED
{
"code": "UNAUTHORIZED",
"statusCode": 401,
"description": "Invalid ApiKey",
"result": {
"websiteId": "64652663e65219005dc61bd6"
}
}
NOT_FOUND
{
"code": "NOT_FOUND",
"statusCode": 404,
"description": "Cant find requested template 5 for website 6377e1f22f9fc600267345c3",
"result": {
"templateId": "5",
"websiteId": "6377e1f22f9fc600267345c3"
}
}
FILE_SIZE_EXCEEDED
{
"code": "FILE_SIZE_EXCEEDED",
"statusCode": 409,
"description": "File size exeeded for template type",
"result": {
"link": "<https://upload.wikimedia.org/wikipedia/commons/2/2d/Snake_River_%285mb%29.jpg>",
"contentLength": 5245329,
"contentType": "image/jpeg",
"templateType": "IMAGE",
"maxFileSize": 2000000
}
}