Nos habíamos quedado revisando las métricas de la cola en el “Service Bus” y comprobando que llegaban peticiones a la misma. Pues bien, partir de este punto, podríamos interactuar con Project Online mediante una LogicApp que se disparara al recibir un elemento en la cola.
Sin embargo, no se dispone actualmente de suficiente funcionalidad para el ejemplo que estamos planteando. Sí se podría crear un proyecto nuevo o una tarea en un proyecto, por ejemplo.
Azure Functions
En nuestro caso, vamos a crear una “Azure Function”, que se ejecute cada vez que entre un elemento nuevo en la cola “windalerts”. Partiendo de que tenemos configurado el servicio “Azure Functions”, para añadir una nueva función pulsaremos el botón “+” y, de los diferentes tipos de triggers que ofrece el sistema, se debe localizar “Service Bus Queue trigger”, tal y como se muestra en la imagen:
En nuestro caso, vamos a utilizar c#, así que pulsaremos en el enlace a dicho lenguaje y se mostrará el formulario para crear la nueva función.
Además del nombre que se le va a dar a la función, lo importante es seleccionar la conexión al service bus. Si no apareciera en el desplegable correspondiente, se debe pulsar en el enlace “nuevo” y se mostrará un formulario parecido a este
Aquí se debe seleccionar el espacio de nombres del service bus y la directiva (no debería aparecer otra que la que se muestra en la imagen).
Finalmente, se debe seleccionar el nivel de permisos y el nombre de la cola que va a disparar la función (“windalerts”, no nos confundamos).
Ya solo nos queda añadir las dll’s de CSOM para SharePoint y Project Online en la carpeta bin de la aplicación y referenciarlas. A partir de este momento, podemos hacer uso de estas apis.
No voy a entrar al detalle del código, simplemente indicar que deserializa el JSON del mensaje que recibe como parámetro para obtener sus propiedades y, a partir de ahí, se obtiene el contexto de la instancia de pwa que se va a utilizar.
A continuación, se accede al proyecto que gestiona los dispositivos, se obtiene la url de su sitio de SharePoint y se crea un nuevo elemento en la lista de “Issues” con los datos recibidos. Puesto que se trata de una demostración, los valores de la instancia de pwa, GUID del proyecto, usuarios y contraseñas están directamente en el código, aunque por seguridad no sería la opción más recomendable.
El resultado es el siguiente
Y este sería el código completo de la función: