Consultando datos en Business Central con Power Virtual Agent - Business Central

Breaking

viernes, 25 de noviembre de 2022

Consultando datos en Business Central con Power Virtual Agent

Hoy vamos a ver como hacer que un Power Virtual Agents pueda comprobar datos en Business Central.  Para el ejemplo, usaremos una consulta de clientes, pero podría ser cualquier tabla estandar.



Creación del BOT

Un BOT es un asistente virtual que emula lo que respondería un humano.  Dentro de la Power Platform, disponemos de una herramienta llamada Power Virtual Agents, que nos permite diseñar nuestros asistentes virtuales, sin necesidad de tener conocimientos ni de inteligencia artificial ni de programación.

En este post, no usararemos nada de código para desarrollar nuestro BOT que será capaz de leer datos de clientes en Business Central.

Para crear un BOT podemos acceder desde nuestro diseñador de Power Apps (make.powerapps.com)


El sistema nos pide que le pongamos un nombre y le digamos que idioma hablará el BOT.  Un Power Virtual Agents, solamente puede hablar un idioma.


Después de un tiempo, nuestro agente virtual estará disponible.

Temas

Los temas son conversaciones que tenemos con nuestro Power Virtual Agents (PVA).  Estas conversaciones se disparan por una palabra o frase desencadenadora. En nuestro ejemplo crearemos un nuevo tema, seleccionando del menú Temas -> Nuevo tema


Frases desencadenadoras

Para que se lance nuestra conversación, lo primero que debemos definir serán nuestras frases desencadenadoras, por ejemplo: Business Central, clientes, consultar cliente,...




Mensajes, preguntas y acciones

Los mensajes son textos que aparecerán en la conversación.   Después simplemente pinchando sobre el simbolo de más (+) procederemos a añadir una nueva acción, en este caso una pregunta, para consultar si lo que queremos hacer es consultar un cliente.  Para ello le diremos que la respuesta es un booleano y la guardaremos en una variable VarConsultarCliente:




En el caso de que la respuesta sea negativa (no quieres consultar un cliente) cerraremos la conversación mediante el redireccionamiento a otro tema (uno de los temas del sistema llamado Adios).  En el caso de que sí, haremos una nueva pregunta para solicitar el número de cliente de Business Central y guardarlo en otra variable (varNumCliente)



Llamada a una acción: Power Automate

Una vez que nuestro interlocutor ha introducido el número de cliente, debemos comprobar que existe dentro de Business Central y para eso utilizamos Power Automate, al que le pasamos como parámetro la variable varNumCliente:


El tipo de flujo es inmediato desencadenado por una llamada de Power Virtual Agents, donde podemos encontrar un parámetro de entrada (el número de cliente a buscar).  En el paso siguiente de Power Automate, usamos el conector de Business Central con la acción "Buscar Registros", donde introducimos el Entorno, el nombre de la empresa, la categoría de la API (en estos momentos v2.0) y la tabla donde buscar (en este caso customers).  Dentro de opciones avanzadas, ponemos el filtro de busqueda:

number eq 'ENTRADA'

La notación es de filtros API, donde le indicamos que el número de cliente (number) sea igual (eq) al parámetro que recibimos de Power Virtual Agents (Entrada).

En los siguientes pasos, inicializamos unas variables:



numItems: Donde guardamos el número de registros que nos devuelve el conector Buscar Registros.  En nuestro caso, puede ser uno o ninguno.  Por lo que usaremos una expresión para ver la longitud del dato devuelto:

length(outputs('Buscar_registros_(V3)')?['body/value'])

CustomerInfo: Donde almacenaremos el nombre del cliente

El siguiente paso del flujo será comprobar que se ha encontrado el cliente (numItems > 0), por lo que usaremos un condicional:




En caso de que no lo encuentre (numItems = 0) entonces sale del flujo.

Si por el contrario, localizamos el número de cliente (caso positivo) debemos usar un paso de control "Aplicar a cada uno", debido a que el conector "Buscar registros" nos puede devolver varios registros, aunque en nuestro caso solamente podrá ser uno.  


El control Aplicar a a cada uno necesita un parámetro que será el valor devuelto por Buscar registros (value).  Allí usaremos otra acción del conector de Business Central llamada Obtener registro, para localizar todos los datos del cliente, pasándo como parámetro el ID obtenido en la búsqueda.

Componemos un texto con todos los datos que queramos consultar, mediante la acción "Redactar".


Finalmente inicializamos la variable CustomerInfo, con todos la salida obtenida de "Redactar".  Es decir, con todos los valores que queramos recuperar de clientes.

En el último paso, el flujo devolverá un parámetro con todos la variable CustomerInfo.

Volviendo a Power Virtual Agents


Una vez que hemos terminado el flujo con la llamada, desde Power Virtual Agents, comprobaremos con una condición si la variable devuelta del flujo (CustomerInfo) tiene algún valor.   Es decir, se ha encontrado el cliente. 


Si el cliente no existe, nos mostrará un error indicándolo.  En caso de localizarlo mostraremos un mensaje con los datos obtenidos, usando para ello las variables recibidas:



Finalizaremos la conversación redirigiendo a otro Tema: Fin de la conversación.

Cuando acabemos nuestro Tema, lo guardaremos para poder probarlo.

Probando el flujo


El propio entorno dispone de un BOT para poder ver en directo como está funcionando nuestro tema.  Es decir, comprobar que recorre el arbol de conversación según lo que le hemos dicho.  Para ello tenemos que ejecutarlo mediante una frase desencadenadora:




Publicando tu BOT


Una vez finalizadas las pruebas, podemos proceder a publicar nuestro BOT.  Para ello, iremos al menú publicar y una vez allí, pulsaremos al botón "Publicar"



Cuando nos indique que está listo, podemos probarlo en alguno de los canales disponibles, como podr ejemplo el sitio web de demostración:



Conclusión


Aquí hemos comprobado como hacer consultas a Business Central usando el conector de Power Automate, sin utilizar código. 

Evidentemente, podríamos usar API personalizadas para poder usarlo también.  

Si quieres ver como hago para crear pedidos en Business Central desde un BOT puedes ver este video donde lo explico paso a paso:


Espero que te guste y si tienes cualquier duda, ponlo en los comentarios.




No hay comentarios: