🟢 Introducción
Cuando construyes un bot usando Power Virtual Agents, manejar datos de usuario, contexto de conversación o estados internos te permite crear interacciones más inteligentes y personalizadas. Las variables son el mecanismo clave para persistir esa información durante la conversación y reutilizarla. En este artículo veremos qué son, para qué sirven y cómo usarlas de forma correcta 😊.
🧠 Qué es / para qué sirve
- Una variable es un contenedor que almacena un valor que puede cambiar durante la conversación del bot.
- Sirve para:
- Guardar respuestas del usuario (por ejemplo: nombre, correo, elección).
- Pasar datos entre diferentes temas del bot o reutilizarlos más adelante. Microsoft Learn+1
- Gestionar estados del flujo conversacional (por ejemplo: “¿ya preguntamos por X?”, “¿esta opción está activada?”, etc.).
- Usar listas o arrays para iteraciones o bucles en la conversación (por ejemplo: recopilar múltiples elementos).
🧩 Sintaxis
En el entorno del bot (Copilot Studio / PVA) la definición y uso de variables se realiza con nodos de tipo “Set variable” o “Question – Guardar respuesta” y luego se referencia simplemente por su nombre.
Ejemplo conceptual:
- Crear variable:
bot.UserName(scope global) Microsoft Learn - En un nodo de mensaje: “Hola {bot.UserName}, ¿cómo puedo ayudarte hoy?”
- Evaluar condición:
If bot.IsPremiumUser = true Then …
💻 Ejemplos con código (o configuración)
🔹 Ejemplo 1 — Guardar nombre del usuario
- Nodo Pregunta: “¿Cuál es tu nombre?” → guarda respuesta en variable
bot.UserName(escala global) - Nodo Mensaje siguiente: “Gracias, {bot.UserName}, ¿en qué podemos ayudarte hoy?”
🔹 Ejemplo 2 — Usar lista de valores para iteración
- En un tema, recibes un array desde un flujo de Power Automate y lo almacenas en
topic.SelectedItems(tipo Lista) - Luego usas bucle / loop para iterar cada elemento del array y mostrar: “Seleccionaste …” a cada uno. Microsoft Learn
🔹 Ejemplo 3 — Variable de estado global
- Crear
bot.IsReturningUsercomo booleano global - En el inicio del bot:
If bot.IsReturningUser = true Then
Mensaje: “¡Bienvenido otra vez!”
Else
Mensaje: “Hola, es la primera vez que conversas conmigo”
Set bot.IsReturningUser = true
EndIf
Esto permite personalizar la bienvenida según el contexto.
🧱 Buenas prácticas
✅ Define claramente el scope de la variable: ¿solo este tema (topic) o global para todo el bot? Microsoft Learn+1
✅ Utiliza nombres descriptivos para variables (ej: bot.UserEmail, topic.OrderList) para facilitar mantenimiento.
✅ Inicializa valores adecuados (tipo correcto) para evitar errores de tipo en la conversación. Microsoft Learn
✅ Resetea variables cuando finalice la conversación (especialmente globales) si es necesario para evitar “estado sucio” en la siguiente interacción. Microsoft Learn
✅ Usar variables de tipo lista / array para escenarios donde se necesiten múltiples valores, y combinarlas con bucles o nodos de iteración.
⚠️ Errores comunes
🚫 Crear variables con scope incorrecto: por ejemplo, usarlas como global cuando solo se necesita en un tema → puede generar lógica innecesaria o reutilización incorrecta.
🚫 No inicializar la variable o asignar tipo incorrecto → “valor desconocido” o error de conversión. Microsoft Learn
🚫 Uso excesivo de variables globales y mezclado de contextos → dificulta mantenimiento y control del flujo.
🚫 No limpiar o resetear variables de sesión → un usuario puede ver valores de conversaciones anteriores inesperadamente.
🚫 No validar el tipo de dato antes de usar en condiciones o bucles → errores de ejecución o lógica incorrecta.
🔄 Variantes o alternativas
- Variables topic‑level vs global: usar
topic.VariableNamecuando solo aplica dentro de un tema, obot.VariableNamepara global. - No usar variables para todo: en chats simples quizá bastan preguntas y respuestas directas sin almacenamiento de variables.
- Integrar con Power Automate u otros flujos: las variables pueden receber valores desde un flujo externo y luego reutilizarse en el bot.
- Manejar listas y bucles (iteración) para escenarios más complejos de conversación.


Deja un comentario