Tengo un bot de equipos (nodejs) que genera una tarjeta adaptable con algunos datos de la tabla. Queremos proporcionar una experiencia de visualización de datos más rica mediante la creación de un marco flotante de un widget de javascript dentro de un módulo de tareas que mostrará los datos mediante gráficos D3 interactivos.
Básicamente, la tarjeta adaptable tendrá un botón "ver más", que invocará un módulo de tareas que contiene el contenido html.
La parte que no puedo entender es cómo acceder a los datos del html dentro del módulo de tareas. Me doy cuenta de que hay un objeto global llamado microsoftTeams
que contiene metadatos y contexto, pero no parece específico de la tarjeta adaptable en la que se hizo clic (la tarjeta adaptable que invocó el módulo de tareas). Tiene mucha más información global utilizada para equipos como el usuario y los metadatos de conversación.
Pude insertar los datos en el objeto taskInfo
al invocar el módulo de tareas como un parámetro personalizado. Entonces, mi pregunta es, ¿hay alguna forma de acceder al objeto taskInfo
desde dentro del iframe HTML?
Estoy usando cadenas de consulta para obtener datos del servidor al cliente (podría haber una mejor manera, espero que @Saonti-MSFT regrese con una forma más fácil/limpia).
Este es mi objeto de tarea:
task: { type: "continue", value: { url: `${process.env.HostName}?message=${JSON.stringify(Buffer.from(message).toString("base64"))}`, width: 500, height: 736 }, }
En el lado del cliente, obtengo la consulta de búsqueda y la vuelvo a convertir, haga lo siguiente
const urlParams = new URLSearchParams(window.location.search); const message = urlParams.get('message'); // Needed to remove the quotes and convert spaces to "+" as this was getting lost const data = atob(message.replace(/"/g,"").replace(/\s/g, "+"));
NOTA: solo estaba haciendo esto para una sola cadena, pero no veo por qué no podría usar un objeto si lo convirtió en una cadena en el servidor y luego lo analizó en el cliente.
Espero que esto ayude