Skip to content

Andes Services

Andrés edited this page Sep 24, 2021 · 11 revisions

Los servicios son configurables por base de datos.

Tipos:

  • HTTP Request type: http-client
  • Mongo Query
  • Dato estático type: static-client
  • Dato dinámico type: dynamic-client
  • Envio email type: email-client
  • Función JavaScript

http-client

Ejemplo con Push Notifications (todas en el documento mongo)

  1. configuraciones generales
  • name (string): configura el nombre (se usa para llamarlo)
  • type (string): configura el tipo (determina qué función va usar @andes/services)
  • logging (object): nivel del log
  1. nodo configuration
  • url (string): la dirección externa del servicio
  • headers (object): los headers que espera el servicio
  • method (string): el método de request
  • body (object): los datos a enviar (en caso de que sea POST, PUT, PATCH)
  • form (bool): determina si los datos se envían como un form HTML
  • json (bool): determina si los datos se envían como JSON
  • cache (bool): determina si se cachea
// collection: andes-services
// mongo document
{
	"name" : "push-notifications-default",
	"type" : "http-client",
	"configuration" : {
		"url" : "https://fcm.googleapis.com/fcm/send",
		"headers" : {
			"Content-Type" : "application/json",
			"Authorization" : "key=KEY"
		},
		"method" : "POST",  // GET, DELETE, PATCH...
		"body" : { // objeto principal
			"notification" : {
				"title" : "$.title", // reemplazo 1
				"body" : "$.body", // reemplazo 2
				"sound" : "default", // dato estático
				"icon" : "fcm_push_icon" // dato estático
			},
			"data" : {
				"extraData" : "$.extraData" // reemplazo 3
			},
			"to" : "$.to", // reemplazo 4
			"priority" : "$.priority", // reemplazo 5
			"restricted_package_name" : "", // dato estático
			"time_to_live" : "$.time_to_live" // reemplazo 6
		},
		"form" : false, // true => datos encodeados como form HTML
		"json" : true // true => datos como JSON
	},
	"logging" : {
		"error" : true
                "info" : false
	}
}

Ejemplo de envío

// .ts
// Datos de la notificación push que ve el usuario
const notificacion = {
     title: 'Aviso de suspensión de turno',
     body: 'Tocá para ver los detalles'
};

// Datos extra (se envían pero no se ven en la push)
const extraData: {
    action: 'suspender-turno',
    id: pacienteId
}

const body = {
    title: 'Andes Salud', // reemplazo 1
    body: notificacion, // reemplazo 2
    extraData: extraData, // reemplazo 3
    to: 'USER_TOKEN', // reemplazo 4
    priority: 'high', // reemplazo 5
    time_to_live: 0, // reemplazo 6
};

// Ejemplo 1: Enviar push con http-client y recibir la respuesta (sincrónico)
const respuesta = await services.get('push-notifications-default').exec(body);

// Ejemplo 2: Enviar push con http-client e ignorar la respuesta (asincrónico)
services.get('push-notifications-default').exec(body);
Clone this wiki locally