0eff6bc200
Inline/pasted images in Teams arrive with a contentUrl on smba.trafficmanager.net (/v3/attachments/...). Unlike file uploads (pre-authenticated SharePoint downloadUrls), these connector URLs require the bot's own bearer token; fetching them anonymously fails with 401 Unauthorized and the image is silently dropped. - add _get_botframework_token(): client-credentials token for https://api.botframework.com/.default, cached until ~5 min before expiry - _fetch_attachment_bytes(): attach the token when the attachment host is *.trafficmanager.net / *.botframework.com; SharePoint and other URLs remain auth-free as before - route image/* attachments with Bot Framework contentUrls through the authenticated fetch instead of cache_image_from_url (which sends no Authorization header) SSRF guards unchanged. Verified on a live Teams personal-scope bot: pasted images previously logged '[teams] Failed to cache image attachment: 401 Unauthorized' and now cache and deliver correctly.