Repository navigation
Render interactive Azure Maps results in the V2 chat (pan, zoom, point details) #1609
Copy link
Copy link
Closed
Labels
P2Priority 2: important, scheduled after P0/P1Priority 2: important, scheduled after P0/P1enhancementNew feature or requestNew feature or request
Description
Summary
Classic chat renders Azure Maps (OpenLayers) action results as an interactive map. The V2 chat has no map renderer, so these results can't be explored there. Bring the interactive map to V2 and add hover tooltips for points and paths.
User Value
A map with several locations, a route, or reads along a corridor is hard to read as one fixed view. Users want to start from the view that shows everything, then zoom into an area, pan along a path, and see what each point is and when it was recorded, without leaving the conversation.
Current Behavior
- Classic chat:
chat-inline-maps.jstakes the{{map:...}}inline block and theazure_maps_openlayerstool result, and draws an OpenLayers map with Azure Maps tiles through/api/azure-maps/tile. It supports pan, zoom and fit to features, and shows a popup when a marker, path or area is clicked. Hovering only changes the cursor. - V2 chat: no component handles the inline block or the tool result, and the V2 app has no map library.
azure_maps_openlayersappears only in the action editor.
Proposed Behavior
- A V2 map component for
azure_maps_openlayersresults and{{map:...}}blocks. It draws markers, ordered paths and areas on Azure Maps tiles, loaded through the existing tile proxy. - Expired tile tokens in older messages are refreshed, as
refresh_azure_maps_message_contentalready does. - The map opens fitted to all features. Pan, zoom and an expand option are available.
- Hovering a marker or path shows a tooltip with its label, time and description. Clicking keeps the details open.
- OpenLayers is bundled from a pinned local package, never a CDN, and the CSP stays as strict as classic chat's.
- A list of the map's points sits next to the map, for keyboard and screen-reader users.
- Where an interactive map can't render, such as exported documents, a readable fallback (summary text or a static snapshot) is shown.
Acceptance Criteria
- A V2 conversation with an Azure Maps result shows an interactive map with pan, zoom and fit to features.
- Hovering a marker or path shows its label and details, and clicking keeps them open.
- Tiles load through
/api/azure-maps/tile, and maps in older messages still load after their tile token expires. - No CDN assets are added, and the CSP is unchanged or tighter.
- Classic chat gets the same hover tooltips, or the issue records why not.
- Functional and UI tests cover the renderer and the tile token refresh.
Notes
- Classic renderer:
application/single_app/static/js/chat/chat-inline-maps.js, with OpenLayers vendored instatic/js/openlayers/ol.js. - Plugin:
semantic_kernel_plugins/azure_maps_openlayers_plugin.py. Payload helpers and token refresh:functions_azure_maps.py. Tile proxy:/api/azure-maps/tileinroute_frontend_conversations.py. - V2 references
azure_maps_openlayersonly inActionAuthentication.tsxandworkspaceActionRegistry.ts.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P2Priority 2: important, scheduled after P0/P1Priority 2: important, scheduled after P0/P1enhancementNew feature or requestNew feature or request
Type
Projects
- StatusShow more project fieldsReleased
Activity
Draw interactive Azure Maps results in the V2 chat
paullizer commentedon Oct 2, 2026
Implemented in PR #1612 (0.261.223), on top of the V2 inline media work.
Acceptance criteria
/api/azure-maps/tileonly: the card refuses any other tile template. Maps in older messages still load after their tile token expires:GET /api/get_messagesandGET /api/collaboration/conversations/<id>/messagesnow reissue tokens, as the classic message route already did. The collaboration route also covers group conversations that receive a workflow's reply.application/v2_ui/public/vendor/openlayers-10.6.1/, byte-identical to the published package and to the classic chat's copy, and is loaded only when a reply has a map.chat-inline-maps.js.functional_tests/test_v2_inline_maps.py(7),functional_tests/test_v2_inline_maps_logic.mjs(13) andui_tests/test_v2_inline_maps.py(4). The UI tests run the realMessageListand card in Chromium with production CSS. The tile token refresh is covered by the functional test.Also included
{{map:...}}blocks are hidden from V2 reply text, as the classic chat hides them. The map is drawn from the tool result./api/conversation/<id>/agent-citation/<artifact_id>.Not covered
Keep the Azure Maps tile token when tool results are redacted
paullizer commentedon Oct 2, 2026
Follow-up from deploying #1612 to a SimpleChat POC deployment:
token=rule replaced the tile proxy token with***REDACTED***, so every tile request returned 400.token=value only where it directly follows/api/azure-maps/tile?. That token is encrypted, expires, and only works on SimpleChat's signed-in tile proxy. Everything else is still redacted.Show marker photos and fields on V2 Azure Maps
paullizer commentedon Oct 2, 2026
Closing as complete. V2 now draws Azure Maps results under the reply, with pan, zoom, full screen and point details:
Verified on a SimpleChat POC deployment.