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 Filled

CUSTOM API

DOCS: https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/custom-api#customapi-entity-attributes

Rellenemos la Custom API con los siguientes atributos

Custom API Filled

Creemos nuestro parámetro de petición, que será el término a buscar.

PARÁMETRO DE PETICIÓN

DOCS: https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/custom-api#customapirequestparameter-entity-attributes

Rellenemos el Párametro de petición de búsqueda con:

Custom API Request Parameter

PARÁMETRO DE RESPUESTA

DOCS: https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/custom-api#customapiresponseproperty-entity-attributes

Rellenemos el parámetro de respuesta Joke con:

Custom API Request Parameter

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…

Probably GIF

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

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:

Plugin Type Custom API

¡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.

CODE YOURSELF

🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨

Solution Power Automate

Así es como se muestra la respuesta en el Power Automate (En la imagen anterior no se veía muy bien)

Solution Power Automate Response

Ejemplo

Asi que vayamos al ejemplo final cuando tenemos todo hecho y creamos nuestro registro chiste.

Joke created

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…🙄 )

Joke created

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


Únete a la newsletter