Al solicitar el servicio de notificaciones de NUBIX API es posible realizar la configuración de dicho servicio de la siguiente forma:
Recibir el contenido.
<?php
$postBody = file_get_contents('php://input');
Esto se ubicará en el archivo de ejemplo.php y recibirá la información de la solicitud POST que se hará a la ruta indicada (https://dominio.ext/ruta/ejemplo.php).
Convertir el contenido a JSON.
$message = json_decode($postBody, true);
if ($message) {
...
} else {
http_response_code(400);
}
Convertimos el contenido a JSON para su posterior uso y revisamos que no reciba contenido vacío.
Se obtiene tipo.
$type = $message['Type'];
if (strcmp($type, 'SubscriptionConfirmation') == 0) {
...
} elseif (strcmp($type, 'Notification') == 0) {
...
} else {
http_response_code(400);
}
Se verifican tres opciones la primera será la confirmación de la suscripción, de no ser esta la opción que se solicita se verifica si es una notificación o bien de no ser ninguna de las dos se envía un código de error 400.
Confirmar suscripción.
if (strcmp($type, 'SubscriptionConfirmation') == 0) {
file_get_contents($message['SubscribeURL']);
}
Se realiza la comparación de la cadena de tipo ($type) con la cadena de confirmación de la suscripción ('SubscriptionConfirmation'), si esta es igual a 0, se obtiene la información del GET REQUEST a la URL que recibe de la ruta indicada (https://dominio.ext/ruta/ejemplo.php) a través de la cadena 'SubscribeURL'.
Notificación.
elseif (strcmp($type, 'Notification') == 0) {
$subject = $message['Subject'];
if (strcmp($subject, 'New Study') == 0) {
...
} elseif (strcmp($subject, 'New Interpretation') == 0) {
...
} else {
http_response_code(400);
}
Se realiza la comparación del texto tipo ($type) con el texto de notificación ('Notification'), si el resultado es igual a 0, entonces se obtiene la información de la cadena de texto, almacenándola en la variable $subject la cual debe ser revisada, ya que en NUBIX se cuenta con dos tipos de notificaciones; una para indicar un estudio nuevo('New Study') y otra que informa acerca de una interpretación('New Interpretation'), de no contar con información en dicha variable entonces se devolverá el código 400.
Notificación de nuevo estudio.
if (strcmp($subject, 'New Study') == 0) {
echo $message['Message'];
// ...
}
Una vez que contamos con la información correspondiente de $subject se debe verificar el tipo de notificación, por lo que se realizará una primera comparación donde se validará si la notificación corresponde a un nuevo estudio en la plataforma.
Notificación de nueva interpretación.
} elseif (strcmp($subject, 'New Interpretation') == 0) {
echo $message['Message'];
// ...
}
O si corresponde a una nueva interpretación.
En ambos casos aquí podrá usted manejar la lógica de su aplicación.
A continuación se muestra el código completo del archivo ejemplo.php en la ruta dominio.ext/ruta/ejemplo.php, le recomendamos utilizar Ultrahoook durante la fase de desarrollo:
<?php
$postBody = file_get_contents('php://input');
$message = json_decode($postBody, true);
if ($message) {
$type = $message['Type'];
if (strcmp($type, 'SubscriptionConfirmation') == 0) {
file_get_contents($message['SubscribeURL']);
} elseif (strcmp($type, 'Notification') == 0) {
$subject = $message['Subject'];
if (strcmp($subject, 'New Study') == 0) {
echo $message['Message'];
// ...
} elseif (strcmp($subject, 'New Interpretation') == 0) {
echo $message['Message'];
// ...
} else {
http_response_code(400);
}
} else {
http_response_code(400);
}
} else {
http_response_code(400);
}
?>
Ver en GitHub Gist