Custom APIs
Has estado usando Actions de tipo Global o asociadas a una entidad para realizar peticiones dentro de tu entorno llamandolas a través de la API con Javascript o probalemente las estés llamando con código C# realizando un Execute, sin embargo, siempre has usado estas Actions para ejecutar logica dentro de tu CRM desde una fuente externa. Hace poco, Microsoft añadió un nuevo post diciendo: “Eh! Hemos desarrollado las Custom APIs, una cosa que has estado viendo en el ribbon del make.powerapps.com y ahora tiene algo de valor para ti”
Bueno, literalmente no fue así el post, fue este: https://powerapps.microsoft.com/en-us/blog/introducing-custom-api-preview
Sin embargo, esta no fue la primera vez que lo ví, ya que Mark Carrington (@MarkMpn) escribió este artículo (Inglés): https://markcarrington.dev/2020/10/22/cds-custom-apis/
Ese artículo es mucho mejor de lo que pueda escribir yo aquí, de eso estoy seguro, asi que, ¿que os parece si creamos una Custom API paso a paso y vemos como se hace?
Si vas a los docs de Microsoft, verás que hay dos formas de crear Custom APIs. Una es creándolo por código, y la segunda es a través del Maker Portal. Para aquellos que no sepais que es el Maker Portal: Es solamente crear registros desde tu entorno de Dataverse, solo que le llaman Maker Portal.
¿Qué vamos a hacer?
A modo resumen, vamos a crear una nueva solución y crearemos nuestra API, la añadiremos a la solución, la registraremos con el Plugin Registration (yo usaré el XrmToolBox), lo usaremos en un Power Automate y finalmente lo probaremos.
Boommm! 💥💥 Hecho. Parece fácil, ¿eh? Eso es porque en realidad es fácil.
Para tu interés, vamos a crear una Action de tipo global de tipo “POST” que buscará una palabra en https://icanhazdadjoke.com (Es una página de chistes en inglés) y devolverá un chiste que escribiremos en un campo de nuestra entidad.
Si estás interesado en el código ahora mismo dirígete a: https://github.com/victorsolaya/customapi-dadzjoke
Manos a la obra
Primero, ¿Cuáles son las entidades que vamos a usar?
CUSTOM API
Rellenemos la Custom API con los siguientes atributos
Creemos nuestro parámetro de petición, que será el término a buscar.
PARÁMETRO DE PETICIÓN
Rellenemos el Párametro de petición de búsqueda con:
PARÁMETRO DE RESPUESTA
Rellenemos el parámetro de respuesta Joke con:
Para tu interés
Para tu interés, he creado una nueva tabla (entidad) llamada Joke que usaré para propósitos de este post.😁 Cada vez que se cree un nuevo registro o actualicemos el campo Search se rellenará el campo chiste.
Esto es solamente un ejemplo, probablemente no haré esto nunca en un entorno de producción…
Sigamos
Por supuesto, añadiremos el Custom API, y los parámetros de petición y respuesta a la solución, siempre las mejores prácticas y ALM es super importante. Entonces, vamos a crear un nuevo plugin como el que os muestro en github: https://github.com/victorsolaya/customapi-dadzjoke Después de haber creado todo el código (No voy a pegarlo aqui, porque eso es para lo que existe Github 😜) registraremos nuestro ensamblado con el Plugin Registration
Añadir tu Plugin al Custom API
Ahora, necesitas que el Plugin se una a la API creada en el primer paso. Para ello, vamos a añadir, si lo recuerdas, el campo Plugin Type:
¡Y eso es todo! Acabas de crear tu Custom API.
¿Y ahora qué?
Por supuesto, tendremos que usar nuestra fántastica y maravillosa Custom API.
Power Automate
Para probar esto, he creado un Power Automate, pero puedes usar un Javascript o lo que prefieras. Solamente quiero mostrarte como ejecutar esto desde un Power Automate y como los parámetros de petición y respuesta aparecen dentro de un Flow.
Como he dicho antes, vamos a usar el trigger del Power Automate de Crear / Actualizar, asi cuando se actualice o se vaya a crear un registro, vamos a rellenar ese campo chiste. Sin embargo…
🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
¿Por qué no pruebas a hacer todo este desarrollo tú y luego checkeas la solución que está justo debajo?
Prueba a hacerlo tú, es la mejor manera de aprender, o si prefieres échale un vistazo a la solución.
🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
Así es como se muestra la respuesta en el Power Automate (En la imagen anterior no se veía muy bien)
Ejemplo
Asi que vayamos al ejemplo final cuando tenemos todo hecho y creamos nuestro registro chiste.
Para comprobar una vez cambiemos el término de búsqueda del chiste que se cambia también el chiste os dejo un GIF. (A veces toma algo de tiempo ya que es un Flow y lo refresqué varias veces…🙄 )
Conclusión
Las Custom APIs todavía estan en Preview pero parece que van a reemplazar a las Actions que tenemos ahora mismo en Dataverse, asi que preparaos para cambiarlas.
Tienen mucho futuro por delante, ya que ahora toda la lógica puede ser desarrollada fácilmente dentro de un plugin y como desarrolladores, es bastante bueno, o esa es mi percepción.
Como siempre, si tienes una pregunta o lo que sea, no dudes en ponerte en contacto conmigo en me@victorsolaya.com