[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-microsoft--BotFramework-WebChat":3,"tool-microsoft--BotFramework-WebChat":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":79,"owner_email":80,"owner_twitter":81,"owner_website":82,"owner_url":83,"languages":84,"stars":115,"forks":116,"last_commit_at":117,"license":118,"difficulty_score":23,"env_os":119,"env_gpu":120,"env_ram":120,"env_deps":121,"category_tags":125,"github_topics":126,"view_count":135,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":136,"updated_at":137,"faqs":138,"releases":164},151,"microsoft\u002FBotFramework-WebChat","BotFramework-WebChat","A highly-customizable web-based client for Azure Bot Services.","BotFramework-WebChat 是微软推出的开源 Web 聊天组件，用于在网页中嵌入与 Azure Bot Services 对接的聊天机器人界面。它解决了开发者需要快速集成美观、功能完整且安全的聊天窗口的问题，避免从零构建前端交互逻辑。该组件高度可定制，适合前端开发者、全栈工程师或产品团队使用，尤其适用于希望在网站或应用中嵌入企业级对话机器人的场景。普通用户无需直接操作，但会作为终端用户与之交互。\n\nBotFramework-WebChat 支持内容安全策略（CSP），提升对话安全性；最新版本引入了响应式“直播流”消息、文件上传优化、主题包机制，并实验性支持 Fluent UI 主题，便于实现类似 Copilot 的现代界面体验。同时，它已支持 ES 模块导出，更贴合现代前端工程化需求。开发者可通过 npm 轻松集成，并根据项目需求灵活调整样式与行为。","# ![Bot Framework Web Chat](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_BotFramework-WebChat_readme_f56d5ad0de06.png)\n\n### [Click here to find out what is new in Web Chat](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002FCHANGELOG.md)\n\n# Bot Framework Web Chat\n\n[![npm version](https:\u002F\u002Fbadge.fury.io\u002Fjs\u002Fbotframework-webchat.svg)](https:\u002F\u002Fbadge.fury.io\u002Fjs\u002Fbotframework-webchat)\n[![Build Status](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_BotFramework-WebChat_readme_ef196a5a87ad.png)](https:\u002F\u002Ffuselabs.visualstudio.com\u002FBotFramework-WebChat\u002F_build\u002Flatest?definitionId=498&branchName=main)\n\nThis repository contains code for the Bot Framework Web Chat component. The Bot Framework Web Chat component is a highly-customizable web-based client for the Bot Framework v4 SDK. The Bot Framework SDK v4 enables developers to model conversation and build sophisticated bot applications.\n\nThis repository is part of the [Microsoft Bot Framework](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fbotframework) - a comprehensive framework for building enterprise-grade conversational AI experiences.\n\nWeb Chat supports [Content Security Policy (CSP)](https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FCSP). Web developers are recommended to enable CSP to improve security and protect conversations. You can read more about CSP in [this article](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fdocs\u002FCONTENT_SECURITY_POLICY.md).\n\nNote: The [Bot Framework SDK](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fbotframework-sdk) was archived on GitHub on December 2025. *This* Web Chat component specifically is *not* archived, and still is available on GitHub as under the related licences covered in this readme.\n\n\u003Chr \u002F>\n\n# Version notes\n\n> This section points out important version notes. For further information, please see the related links and check the [`CHANGELOG.md`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002FCHANGELOG.md)\n\n[Our achievements](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002FACHIEVEMENTS.md)\n\nNotes: web developers are advised to use [`~` (tilde range)](https:\u002F\u002Fgithub.com\u002Fnpm\u002Fnode-semver?tab=readme-ov-file#tilde-ranges-123-12-1) to select minor versions, which contains new features and\u002For fixes. Use [`^` (caret range)](https:\u002F\u002Fgithub.com\u002Fnpm\u002Fnode-semver?tab=readme-ov-file#caret-ranges-123-025-004) to select major versions, which may contains breaking changes.\n\n## 4.19.0 notable changes\n\n- Supports informative message in [livestreaming](.\u002Fdocs\u002FLIVESTREAMING.md)\n\n## 4.18.0 notable changes\n\nIn this release, we are focusing on performance improvements, including memory and load time optimizations.\n\n## 4.17.0 notable changes\n\n### Support livestreaming response\n\nBots can now livestream their responses. Before Bot Framework SDK support this feature, bot authors can follow the details in [LIVESTREAMING.md](.\u002Fdocs\u002FLIVESTREAMING.md) to construct the livestream responses.\n\n### Debut of ES Modules\n\nWeb Chat now exports as ES Modules (named exports) along with CommonJS (named and unnamed exports).\n\n### Improvement to file upload experience\n\nEnd-user can now add a message and confirm before uploading their file to the bot. To opt-out of the new experience, pass `sendAttachmentOn: 'send'` in style options.\n\n### Theme pack support\n\nWe are excited to add theme pack support. Developers can now pack all their customization in a single package and publish it to NPM.\n\n### Experimental Fluent UI theme pack\n\nWe are excited to announce Fluent UI theme pack is in the work and is currently in experimental phase. This theme pack is designed for web developers who want to bring a native Copilot user experience to their customers.\n\nWe will continue to add new features and support both white-label experience and Fluent UI experience with the same level of parity.\n\nYou can wrap Web Chat with `\u003CFluentThemeProvider>` to try out the new experience.\n\n```tsx\nimport ReactWebChat from 'botframework-webchat';\nimport { FluentThemeProvider } from 'botframework-webchat-fluent-theme';\n\nexport default function MyComponent() {\n   return (\n      \u003CFluentThemeProvider>\n         \u003CReactWebChat \u002F>\n      \u003C\u002FFluentThemeProvider>\n   );\n}\n```\n\n#### Support HTML-in-Markdown\n\nWeb Chat will now render HTML-in-Markdown. We have ported our sanitizer and accessibility fixer to work on HTML level. Both Markdown and HTML-in-Markdown will receive the same treatment and meet our security and accessibility requirements.\n\nYou can turn off this option by setting `styleOptions.markdownRenderHTML` to `false`.\n\n## 4.16.1 notable changes\n\nWeb Chat now supports [Adaptive Cards schema up to 1.6](https:\u002F\u002Fadaptivecards.io\u002Fexplorer\u002F). Some features in Adaptive Cards are in preview or designed to use outside of Bot Framework. Web Chat does not support these features.\n\n## 4.16.0 notable changes\n\nStarting from 4.16.0, Internet Explorer is no longer supported. After more than a year of the Internet Explorer 11 officially retirement, we decided to stop supporting Internet Explorer. This will help us to bring new features to Web Chat. 4.15.9 is the last version which supports Internet Explorer in limited fashion.\n\n## 4.12.1 patch: New style property `adaptiveCardsParserMaxVersion`\n\nWeb Chat 4.12.1 patch includes a new style property allowing developers to choose the max Adaptive Cards schema version. See [PR #3778](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3778) for code changes.\n\nTo specify a different max version, you can adjust the style options, shown below:\n\n```js\nwindow.WebChat.renderWebChat(\n   {\n      directLine,\n      store,\n      styleOptions: {\n         adaptiveCardsParserMaxVersion: '1.2'\n      }\n   },\n   document.getElementById('webchat')\n);\n```\n\n- Web Chat will apply the maximum schema available according to the Adaptive Cards version (as of this patch, schema 1.3) by default.\n- An invalid version will revert to Web Chat's default.\n\n## Visual focus changes to transcript in Web Chat 4.12.0\n\nA new accessibility update has been added to Web Chat from PR [#3703](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3703). This change creates visual focus for the transcript (bold black border) and `aria-activedescendent` focused activity (black dashed border) by default. Where applicable, `transcriptVisualKeyboardIndicator...` values will also be applied to carousel (`CarouselFilmStrip.js`) children. This is done in order to match current default focus styling for Adaptive Cards, which may be a child of a carousel.\n\nTo modify these styles, you can change the following props via `styleOptions`:\n\n```\n  transcriptActivityVisualKeyboardIndicatorColor: DEFAULT_SUBTLE,\n  transcriptActivityVisualKeyboardIndicatorStyle: 'dashed',\n  transcriptActivityVisualKeyboardIndicatorWidth: 1,\n  transcriptVisualKeyboardIndicatorColor: 'Black',\n  transcriptVisualKeyboardIndicatorStyle: 'solid',\n  transcriptVisualKeyboardIndicatorWidth: 2,\n```\n\nThe above code shows the default values you will see in Web Chat.\n\n## API refactor into new package in Web Chat 4.11.0\n\nThe Web Chat API has been refactored into a separate package. To learn more, check out the [API refactor summary](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3543).\n\n## Direct Line Speech support in Web Chat 4.7.0\n\nStarting from Web Chat 4.7.0, Direct Line Speech is supported, and it is the preferred way to provide an integrated speech functionality in Web Chat. We are working on [closing feature gaps](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Flabels\u002FDirect%20Line%20Speech) between Direct Line Speech and Web Speech API (includes Cognitive Services and browser-provided speech functionality).\n\n## Upgrading to 4.6.0\n\nStarting from Web Chat 4.6.0, Web Chat requires React 16.8.6 or up.\n\nAlthough we recommend that you upgrade your host app at your earliest convenience, we understand that host app may need some time before its React dependencies are updated, especially in regards to huge applications.\n\nIf your app is not ready for React 16.8.6 yet, you can follow the [hybrid React sample](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fsamples\u002F01.getting-started\u002Fg.hybrid-react-npm) to dual-host React in your app.\n\n## Speech changes in Web Chat 4.5.0\n\nThere is a breaking change on behavior expectations regarding speech and input hint in Web Chat. Please refer to the section on [input hint behavior before 4.5.0](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fdocs\u002FSPEECH.md#input-hint-behavior-before-4-5-0) for details.\n\n## Migrating from Web Chat v3 to v4\n\n[View migration docs](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FMIGRATION.md) to learn about migrating from Web Chat v3.\n\n\u003Chr \u002F>\n\n# How to use\n\nFirst, create a bot using [Azure Bot Service](https:\u002F\u002Fazure.microsoft.com\u002Fen-us\u002Fservices\u002Fbot-service\u002F).\nOnce the bot is created, you will need to [obtain the bot's Web Chat secret](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fbot-service\u002Fbot-service-channel-connect-webchat?view=azure-bot-service-3.0#step-1) in Azure Portal. Then use the secret to [generate a token](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fbot-service\u002Frest-api\u002Fbot-framework-rest-direct-line-3-0-authentication?view=azure-bot-service-4.0) and pass it to your Web Chat.\n\n## Connect a client app to bot\n\nWeb Chat provides UI on top of the Direct Line and Direct Line Speech Channels. There are two ways to connect to your bot through HTTP calls from the client: by sending the Bot secret or generating a token via the secret.\n\n\u003C!-- TODO: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F2151 (ongoing) -->\n\u003C!-- Update the following paragraph and the API table (`directline`) with new documentation when updated docs are published  -->\n\nWe strongly recommend using the token API instead of providing the app with your secret. To learn more about why, see the [authentication documentation](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fbot-service\u002Frest-api\u002Fbot-framework-rest-direct-line-3-0-authentication?view=azure-bot-service-4.0) on the [token API](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fbot-service\u002Frest-api\u002Fbot-framework-rest-direct-line-3-0-api-reference?view=azure-bot-service-4.0) and client security.\n\nFor further reading, please see the following links:\n\n- Using Web Chat with [Azure Bot Services authentication](https:\u002F\u002Fblog.botframework.com\u002F2018\u002F09\u002F01\u002Fusing-webchat-with-azure-bot-services-authentication\u002F)\n\n- [Enhanced Direct Line authentication features](https:\u002F\u002Fblog.botframework.com\u002F2018\u002F09\u002F25\u002Fenhanced-direct-line-authentication-features\u002F)\n\n## Integrate with JavaScript\n\nWeb Chat is designed to integrate with your existing website using JavaScript or React. Integrating with JavaScript will give you moderate styling and customizability options.\n\nYou can use the full, typical Web Chat package (called full-feature bundle) that contains the most typically used features.\n\nHere is how how you can add Web Chat control to your website:\n\n\u003C!-- prettier-ignore-start -->\n```html\n\u003C!DOCTYPE html>\n\u003Chtml>\n  \u003Chead>\n    \u003Cscript\n      crossorigin=\"anonymous\"\n      src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002Flatest\u002Fwebchat.js\"\n    >\u003C\u002Fscript>\n    \u003Cstyle>\n      html,\n      body {\n         height: 100%;\n      }\n\n      body {\n        margin: 0;\n      }\n\n      #webchat {\n        height: 100%;\n        width: 100%;\n      }\n    \u003C\u002Fstyle>\n  \u003C\u002Fhead>\n  \u003Cbody>\n    \u003Cdiv id=\"webchat\" role=\"main\">\u003C\u002Fdiv>\n    \u003Cscript>\n      window.WebChat.renderWebChat(\n        {\n          directLine: window.WebChat.createDirectLine({\n            token: 'YOUR_DIRECT_LINE_TOKEN'\n          }),\n          userID: 'YOUR_USER_ID',\n          username: 'Web Chat User',\n          locale: 'en-US'\n        },\n        document.getElementById('webchat')\n      );\n    \u003C\u002Fscript>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n```\n\u003C!-- prettier-ignore-end -->\n\n> `userID`, `username`, and `locale` are all optional parameters to pass into the `renderWebChat` method. To learn more about Web Chat props, look at the [Web Chat API Reference](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FAPI.md) documentation.\n\n> Assigning `userID` as a static value is not recommended since this will cause all users to share state. Please see the [`API userID entry`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fdocs\u002FAPI.md#userID) for more information.\n\nMore information on localization can be found in the [Localization](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FLOCALIZATION.md) documentation.\n\n![Screenshot of Web Chat](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_BotFramework-WebChat_readme_d60d23c26a17.jpg)\n\nSee the working sample of the [full Web Chat bundle](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fsamples\u002F01.getting-started\u002Fa.full-bundle).\n\n## Integrate with React\n\nFor full customizability, you can use React to recompose components of Web Chat.\n\nTo install the production build from NPM, run `npm install botframework-webchat`. See our [version notes](#version-notes) on how to select a version.\n\n\u003C!-- prettier-ignore-start -->\n```js\nimport React, { useMemo } from 'react';\nimport ReactWebChat, { createDirectLine } from 'botframework-webchat';\n\nexport default () => {\n  const directLine = useMemo(() => createDirectLine({ token: 'YOUR_DIRECT_LINE_TOKEN' }), []);\n\n  return \u003CReactWebChat directLine={directLine} userID=\"YOUR_USER_ID\" \u002F>;\n};\n```\n\u003C!-- prettier-ignore-end -->\n\n> You can also run `npm install botframework-webchat@main` to install a development build that is synced with Web Chat's GitHub `main` branch.\n\nSee the working sample of [Web Chat rendered via React](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fsamples\u002F01.getting-started\u002Fe.host-with-react\u002F).\n\n### Experimental support for Redux DevTools\n\nWeb Chat internally use Redux for state management. [Redux DevTools](https:\u002F\u002Fgithub.com\u002Freduxjs\u002Fredux-devtools) is enabled in the NPM build as an opt-in feature.\n\nThis is for glancing into how Web Chat works. This is not an API explorer and is not an endorsement of using the Redux store to programmatically access the UI. The [hooks API](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FHOOKS.md) should be used instead.\n\nTo use Redux DevTools, use the `createStoreWithDevTools` function for creating a Redux DevTools-enabled store.\n\n\u003C!-- prettier-ignore-start -->\n```diff\n  import React, { useMemo } from 'react';\n- import ReactWebChat, { createDirectLine, createStore } from 'botframework-webchat';\n+ import ReactWebChat, { createDirectLine, createStoreWithDevTools } from 'botframework-webchat';\n\n  export default () => {\n    const directLine = useMemo(() => createDirectLine({ token: 'YOUR_DIRECT_LINE_TOKEN' }), []);\n-   const store = useMemo(() => createStore(), []);\n+   const store = useMemo(() => createStoreWithDevTools(), []);\n\n    return \u003CReactWebChat directLine={directLine} store={store} userID=\"YOUR_USER_ID\" \u002F>;\n  };\n```\n\u003C!-- prettier-ignore-end -->\n\nThere are some limitations when using the Redux DevTools:\n\n- The Redux store uses side-effects via [`redux-saga`](https:\u002F\u002Fgithub.com\u002Fredux-saga\u002Fredux-saga). Time-traveling may break the UI.\n- Many UI states are stored in React context and state. They are not exposed in the Redux store.\n- Some time-sensitive UIs are based on real-time clock and not affected by time-traveling.\n- Dispatching actions are not officially supported. Please use [hooks API](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FHOOKS.md) instead.\n- Actions and reducers may move in and out of Redux store across versions. [Hooks API](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FHOOKS.md) is the official API for accessing the UI.\n\n# Customizing the Web Chat UI\n\nWeb Chat is designed to be customizable without forking the source code. The table below outlines what kind of customizations you can achieve when you are importing Web Chat in different ways. This list is not exhaustive.\n\n|                               | CDN bundle |  React   |\n| ----------------------------- | :--------: | :------: |\n| Change colors                 |  &#10004;  | &#10004; |\n| Change sizes                  |  &#10004;  | &#10004; |\n| Update\u002Freplace CSS styles     |  &#10004;  | &#10004; |\n| Listen to events              |  &#10004;  | &#10004; |\n| Interact with hosting webpage |  &#10004;  | &#10004; |\n| Custom render activities      |            | &#10004; |\n| Custom render attachments     |            | &#10004; |\n| Add new UI components         |            | &#10004; |\n| Recompose the whole UI        |            | &#10004; |\n\nSee more about [customizing Web Chat](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fsamples\u002FREADME.md) to learn more on customization.\n\n## Supported Activity Types on the Web Chat Client\n\nBot Framework has many activity types, but not all are supported in Web Chat. [View activity types docs](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FACTIVITYTYPES.md) to learn more.\n\n# Samples list\n\n[View the complete list of Web Chat samples](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fsamples) for more ideas on customizing Web Chat.\n\n# Further reading\n\n## API Reference\n\nView the [API documentation](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FAPI.md) for implementing Web Chat.\n\n## Browser compatibility\n\nWeb Chat supports the latest 2 versions of modern browsers like Chrome, Microsoft Edge, and FireFox.\nIf you need Web Chat in Internet Explorer 11, please see the [ES5 bundle demo](https:\u002F\u002Fmicrosoft.github.io\u002FBotFramework-WebChat\u002F01.getting-started\u002Fc.es5-bundle).\n\nPlease note, however:\n\n- Web Chat does not support Internet Explorer older than version 11\n- Customization as shown in non-ES5 samples are not supported for Internet Explorer. Because IE11 is a non-modern browser, it does not support ES6, and many samples that use arrow functions and modern promises would need to be manually converted to ES5. If you are in need of heavy customization for your app, we strongly recommend developing your app for a modern browser like Google Chrome or Microsoft Edge.\n- Web Chat has no plan to support samples for IE11 (ES5).\n   - For customers who wish to manually rewrite our other samples to work in IE11, we recommend looking into converting code from ES6+ to ES5 using polyfills and transpilers like [`babel`](https:\u002F\u002Fbabeljs.io\u002Fdocs\u002Fen\u002Fnext\u002Fbabel-standalone.html).\n\n## Accessibility\n\nView the [accessibility documentation](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FACCESSIBILITY.md).\n\n## Localization\n\nView the [localization documentation](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FLOCALIZATION.md) for implementing in Web Chat.\n\n## Notifications\n\nView the [notification documentation](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FNOTIFICATION.md) for implementing in Web Chat.\n\n## Telemetry\n\nView the [telemetry documentation](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FTELEMETRY.md) for implementing in Web Chat.\n\n## Technical Support Guide\n\nView the [Technical Support Guide](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FTECHNICAL_SUPPORT_GUIDE.md) to get guidance and help on troubleshooting in the Web Chat repo for more information before filing a new issue.\n\n## Speech\n\nWeb Chat supports a wide-range of speech engines for a natural chat experience with a bot. This section outlines the different engines that are supported:\n\n- [Direct Line Speech](#integrate-with-direct-line-speech)\n- [Cognitive Services Speech Services](#integrate-with-cognitive-services-speech-services)\n- [Browser-provided engine or other engines](#browser-provided-engine-or-other-engines)\n\n### Integrate with Direct Line Speech\n\nDirect Line Speech is the preferred way to add speech functionality in Web Chat. Please refer to the [Direct Line Speech](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fdocs\u002FDIRECT_LINE_SPEECH.md) documentation for details.\n\n### Integrate with Cognitive Services Speech Services\n\nYou can use Cognitive Services Speech Services to add speech functionality to Web Chat. Please refer to the [Cognitive Services Speech Services](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fdocs\u002FSPEECH.md) documentation for details.\n\n### Browser-provided engine or other engines\n\nYou can also use any speech engines which support [W3C Web Speech API standard](https:\u002F\u002Fwicg.github.io\u002Fspeech-api\u002F). Some browsers support the [Speech Recognition API](https:\u002F\u002Fcaniuse.com\u002F#feat=mdn-api_speechrecognition) and the [Speech Synthesis API](https:\u002F\u002Fcaniuse.com\u002F#feat=mdn-api_speechsynthesis). You can mix-and-match different engines - including Cognitive Services Speech Services - to provide best user experience.\n\n\u003Chr \u002F>\n\n# How to test with Web Chat's latest bits\n\nWeb Chat latest bits are available on the [Web Chat daily releases page](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Freleases\u002Fdaily).\n\nDailies will be released after 3:00AM Pacific Standard Time when changes have been committed to the main branch.\n\n# Contributing\n\nSee our [Contributing page](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002F.github\u002FCONTRIBUTING.md) for details on how to build the project and our repository guidelines for Pull Requests.\n\nSee our [CODE OF CONDUCT page](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002F.github\u002FCODE_OF_CONDUCT.md) for details about the Microsoft Code of Conduct.\n\n# Reporting Security Issues\n\n[View the security documentation](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FSECURITY.md) to learn more about reporting security issues.\n","# ![Bot Framework Web Chat](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_BotFramework-WebChat_readme_f56d5ad0de06.png)\n\n### [点击此处了解 Web Chat 的最新功能](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002FCHANGELOG.md)\n\n# Bot Framework Web Chat\n\n[![npm version](https:\u002F\u002Fbadge.fury.io\u002Fjs\u002Fbotframework-webchat.svg)](https:\u002F\u002Fbadge.fury.io\u002Fjs\u002Fbotframework-webchat)\n[![Build Status](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_BotFramework-WebChat_readme_ef196a5a87ad.png)](https:\u002F\u002Ffuselabs.visualstudio.com\u002FBotFramework-WebChat\u002F_build\u002Flatest?definitionId=498&branchName=main)\n\n本仓库包含 Bot Framework Web Chat 组件的代码。Bot Framework Web Chat 组件是一个高度可定制的、基于 Web 的客户端，用于 Bot Framework v4 SDK。Bot Framework SDK v4 使开发者能够建模对话并构建复杂的机器人应用。\n\n本仓库是 [Microsoft Bot Framework](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fbotframework) 的一部分 —— 这是一个用于构建企业级对话式 AI 体验的综合性框架。\n\nWeb Chat 支持 [内容安全策略（Content Security Policy, CSP）](https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FCSP)。建议 Web 开发者启用 CSP 以提升安全性并保护对话内容。您可以在[这篇文章](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fdocs\u002FCONTENT_SECURITY_POLICY.md)中了解更多关于 CSP 的信息。\n\n注意：[Bot Framework SDK](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fbotframework-sdk) 已于 2025 年 12 月在 GitHub 上归档。但 *本* Web Chat 组件 *并未* 归档，仍可在 GitHub 上获取，并遵循本 README 中所述的相关许可证。\n\n\u003Chr \u002F>\n\n# 版本说明\n\n> 本节指出重要的版本说明。如需进一步信息，请参阅相关链接并查看 [`CHANGELOG.md`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002FCHANGELOG.md)\n\n[我们的成就](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002FACHIEVEMENTS.md)\n\n注意：建议 Web 开发者使用 [`~`（波浪号范围）](https:\u002F\u002Fgithub.com\u002Fnpm\u002Fnode-semver?tab=readme-ov-file#tilde-ranges-123-12-1) 来选择次版本号，其中包含新功能和\u002F或修复。使用 [`^`（脱字符范围）](https:\u002F\u002Fgithub.com\u002Fnpm\u002Fnode-semver?tab=readme-ov-file#caret-ranges-123-025-004) 来选择主版本号，其中可能包含破坏性变更。\n\n## 4.19.0 主要变更\n\n- 在 [直播流（livestreaming）](.\u002Fdocs\u002FLIVESTREAMING.md) 中支持信息性消息\n\n## 4.18.0 主要变更\n\n本次发布聚焦于性能改进，包括内存和加载时间的优化。\n\n## 4.17.0 主要变更\n\n### 支持直播流响应\n\n机器人现在可以直播其响应内容。在 Bot Framework SDK 正式支持此功能之前，机器人开发者可参考 [LIVESTREAMING.md](.\u002Fdocs\u002FLIVESTREAMING.md) 中的详细说明来构造直播流响应。\n\n### ES 模块（ES Modules）首次亮相\n\nWeb Chat 现在同时导出 ES 模块（命名导出）和 CommonJS（命名及未命名导出）。\n\n### 文件上传体验改进\n\n最终用户现在可以在将文件上传给机器人之前添加消息并确认。若要禁用此新体验，可在样式选项中传入 `sendAttachmentOn: 'send'`。\n\n### 主题包（Theme pack）支持\n\n我们很高兴地宣布新增主题包支持。开发者现在可以将其所有自定义内容打包成一个单独的包并发布到 NPM。\n\n### 实验性 Fluent UI 主题包\n\n我们很高兴地宣布 Fluent UI 主题包正在开发中，目前处于实验阶段。该主题包专为希望为其客户带来原生 Copilot 用户体验的 Web 开发者设计。\n\n我们将继续添加新功能，并确保白标（white-label）体验与 Fluent UI 体验具有同等水平的功能支持。\n\n您可以通过 `\u003CFluentThemeProvider>` 包裹 Web Chat 来试用新体验：\n\n```tsx\nimport ReactWebChat from 'botframework-webchat';\nimport { FluentThemeProvider } from 'botframework-webchat-fluent-theme';\n\nexport default function MyComponent() {\n   return (\n      \u003CFluentThemeProvider>\n         \u003CReactWebChat \u002F>\n      \u003C\u002FFluentThemeProvider>\n   );\n}\n```\n\n#### 支持 Markdown 中嵌入 HTML（HTML-in-Markdown）\n\nWeb Chat 现在将渲染 Markdown 中嵌入的 HTML。我们已将清理器（sanitizer）和无障碍修复器移植到 HTML 层级工作。Markdown 和 Markdown 中嵌入的 HTML 将受到相同的处理，并满足我们的安全性和无障碍要求。\n\n您可以通过将 `styleOptions.markdownRenderHTML` 设置为 `false` 来关闭此选项。\n\n## 4.16.1 主要变更\n\nWeb Chat 现在支持 [最高至 1.6 版本的 Adaptive Cards schema](https:\u002F\u002Fadaptivecards.io\u002Fexplorer\u002F)。Adaptive Cards 中的部分功能处于预览状态，或专为 Bot Framework 之外的场景设计。Web Chat 不支持这些功能。\n\n## 4.16.0 主要变更\n\n从 4.16.0 版本开始，不再支持 Internet Explorer。在 Internet Explorer 11 官方退役一年多之后，我们决定停止对其支持。这将帮助我们为 Web Chat 引入新功能。4.15.9 是最后一个以有限方式支持 Internet Explorer 的版本。\n\n## 4.12.1 补丁：新增样式属性 `adaptiveCardsParserMaxVersion`\n\nWeb Chat 4.12.1 补丁新增了一个样式属性，允许开发者选择 Adaptive Cards schema 的最大版本。有关代码变更，请参见 [PR #3778](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3778)。\n\n要指定不同的最大版本，您可以调整样式选项，如下所示：\n\n```js\nwindow.WebChat.renderWebChat(\n   {\n      directLine,\n      store,\n      styleOptions: {\n         adaptiveCardsParserMaxVersion: '1.2'\n      }\n   },\n   document.getElementById('webchat')\n);\n```\n\n- Web Chat 默认会根据 Adaptive Cards 版本应用可用的最大 schema（截至此补丁，默认为 schema 1.3）。\n- 如果指定无效版本，则会回退到 Web Chat 的默认值。\n\n## Web Chat 4.12.0 中对话记录（transcript）的视觉焦点变更\n\n从 PR [#3703](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3703) 开始，Web Chat 新增了一项无障碍更新。此变更默认为对话记录添加视觉焦点（粗黑边框），并为 `aria-activedescendent` 聚焦的活动项添加黑色虚线边框。在适用的情况下，`transcriptVisualKeyboardIndicator...` 的值也会应用于轮播图（`CarouselFilmStrip.js`）的子元素，以匹配当前 Adaptive Cards 的默认焦点样式（Adaptive Cards 可能是轮播图的子元素）。\n\n要修改这些样式，您可以通过 `styleOptions` 更改以下属性：\n\n```\n  transcriptActivityVisualKeyboardIndicatorColor: DEFAULT_SUBTLE,\n  transcriptActivityVisualKeyboardIndicatorStyle: 'dashed',\n  transcriptActivityVisualKeyboardIndicatorWidth: 1,\n  transcriptVisualKeyboardIndicatorColor: 'Black',\n  transcriptVisualKeyboardIndicatorStyle: 'solid',\n  transcriptVisualKeyboardIndicatorWidth: 2,\n```\n\n以上代码展示了 Web Chat 中的默认值。\n\n## Web Chat 4.11.0 中的 API 重构为新包\n\nWeb Chat API 已被重构为一个独立的包。欲了解更多信息，请参阅 [API 重构摘要](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3543)。\n\n## Web Chat 4.7.0 中的 Direct Line Speech 支持\n\n从 Web Chat 4.7.0 开始，支持 Direct Line Speech（直连语音），这是在 Web Chat 中提供集成语音功能的推荐方式。我们正在努力[弥合 Direct Line Speech 与 Web Speech API（包括认知服务和浏览器提供的语音功能）之间的功能差距](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Flabels\u002FDirect%20Line%20Speech)。\n\n## 升级到 4.6.0\n\n从 Web Chat 4.6.0 开始，Web Chat 要求 React 版本为 16.8.6 或更高。\n\n尽管我们建议您尽早升级宿主应用，但我们理解某些宿主应用（尤其是大型应用）可能需要一些时间才能更新其 React 依赖项。\n\n如果您的应用尚未准备好升级到 React 16.8.6，可以参考 [混合 React 示例](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fsamples\u002F01.getting-started\u002Fg.hybrid-react-npm)，在您的应用中同时托管两个 React 版本。\n\n## Web Chat 4.5.0 中的语音变更\n\nWeb Chat 中关于语音和输入提示（input hint）的行为期望存在一项破坏性变更。详情请参阅 [4.5.0 之前的输入提示行为](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fdocs\u002FSPEECH.md#input-hint-behavior-before-4-5-0) 章节。\n\n## 从 Web Chat v3 迁移到 v4\n\n请查看[迁移文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FMIGRATION.md)，了解如何从 Web Chat v3 迁移。\n\n\u003Chr \u002F>\n\n# 如何使用\n\n首先，使用 [Azure Bot Service（Azure 机器人服务）](https:\u002F\u002Fazure.microsoft.com\u002Fen-us\u002Fservices\u002Fbot-service\u002F) 创建一个机器人。  \n创建完成后，您需要在 Azure 门户中[获取机器人的 Web Chat 密钥（secret）](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fbot-service\u002Fbot-service-channel-connect-webchat?view=azure-bot-service-3.0#step-1)。然后使用该密钥[生成令牌（token）](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fbot-service\u002Frest-api\u002Fbot-framework-rest-direct-line-3-0-authentication?view=azure-bot-service-4.0)，并将其传递给您的 Web Chat。\n\n## 将客户端应用连接到机器人\n\nWeb Chat 在 Direct Line 和 Direct Line Speech 通道之上提供了用户界面。有两种方式可通过客户端的 HTTP 调用连接到您的机器人：直接发送机器人密钥，或通过密钥生成令牌。\n\n\u003C!-- TODO: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F2151 (ongoing) -->\n\u003C!-- 当新文档发布后，请更新以下段落和 API 表格（`directline`）中的内容 -->\n\n我们强烈建议使用令牌 API，而不是将密钥直接提供给应用。要了解原因，请参阅关于[令牌 API](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fbot-service\u002Frest-api\u002Fbot-framework-rest-direct-line-3-0-api-reference?view=azure-bot-service-4.0) 和客户端安全性的[身份验证文档](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fbot-service\u002Frest-api\u002Fbot-framework-rest-direct-line-3-0-authentication?view=azure-bot-service-4.0)。\n\n更多阅读材料，请参见以下链接：\n\n- 使用 Web Chat 与 [Azure Bot Services 身份验证](https:\u002F\u002Fblog.botframework.com\u002F2018\u002F09\u002F01\u002Fusing-webchat-with-azure-bot-services-authentication\u002F)\n\n- [增强的 Direct Line 身份验证功能](https:\u002F\u002Fblog.botframework.com\u002F2018\u002F09\u002F25\u002Fenhanced-direct-line-authentication-features\u002F)\n\n## 通过 JavaScript 集成\n\nWeb Chat 设计用于通过 JavaScript 或 React 与您现有的网站集成。使用 JavaScript 集成可提供中等程度的样式和自定义选项。\n\n您可以使用包含最常用功能的完整版 Web Chat 包（称为全功能捆绑包，full-feature bundle）。\n\n以下是将 Web Chat 控件添加到您网站的方法：\n\n\u003C!-- prettier-ignore-start -->\n```html\n\u003C!DOCTYPE html>\n\u003Chtml>\n  \u003Chead>\n    \u003Cscript\n      crossorigin=\"anonymous\"\n      src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002Flatest\u002Fwebchat.js\"\n    >\u003C\u002Fscript>\n    \u003Cstyle>\n      html,\n      body {\n         height: 100%;\n      }\n\n      body {\n        margin: 0;\n      }\n\n      #webchat {\n        height: 100%;\n        width: 100%;\n      }\n    \u003C\u002Fstyle>\n  \u003C\u002Fhead>\n  \u003Cbody>\n    \u003Cdiv id=\"webchat\" role=\"main\">\u003C\u002Fdiv>\n    \u003Cscript>\n      window.WebChat.renderWebChat(\n        {\n          directLine: window.WebChat.createDirectLine({\n            token: 'YOUR_DIRECT_LINE_TOKEN'\n          }),\n          userID: 'YOUR_USER_ID',\n          username: 'Web Chat User',\n          locale: 'en-US'\n        },\n        document.getElementById('webchat')\n      );\n    \u003C\u002Fscript>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n```\n\u003C!-- prettier-ignore-end -->\n\n> `userID`、`username` 和 `locale` 都是传递给 `renderWebChat` 方法的可选参数。要了解更多关于 Web Chat 属性（props）的信息，请查阅 [Web Chat API 参考文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FAPI.md)。\n\n> 不建议将 `userID` 设置为静态值，因为这会导致所有用户共享相同的状态。更多信息请参阅 [`API userID 条目`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fdocs\u002FAPI.md#userID)。\n\n有关本地化的更多信息，请参阅 [本地化（Localization）](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FLOCALIZATION.md) 文档。\n\n![Web Chat 截图](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_BotFramework-WebChat_readme_d60d23c26a17.jpg)\n\n请参阅 [完整 Web Chat 捆绑包](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fsamples\u002F01.getting-started\u002Fa.full-bundle) 的工作示例。\n\n## 通过 React 集成\n\n如需完全自定义，您可以使用 React 重新组合 Web Chat 的组件。\n\n要从 NPM 安装生产版本，请运行 `npm install botframework-webchat`。有关如何选择版本的信息，请参阅我们的[版本说明](#version-notes)。\n\n\u003C!-- prettier-ignore-start -->\n```js\nimport React, { useMemo } from 'react';\nimport ReactWebChat, { createDirectLine } from 'botframework-webchat';\n\nexport default () => {\n  const directLine = useMemo(() => createDirectLine({ token: 'YOUR_DIRECT_LINE_TOKEN' }), []);\n\n  return \u003CReactWebChat directLine={directLine} userID=\"YOUR_USER_ID\" \u002F>;\n};\n```\n\u003C!-- prettier-ignore-end -->\n\n> 您也可以运行 `npm install botframework-webchat@main` 来安装与 Web Chat GitHub `main` 分支同步的开发版本。\n\n请参阅通过 React 渲染的 [Web Chat 工作示例](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fsamples\u002F01.getting-started\u002Fe.host-with-react\u002F)。\n\n### Redux DevTools 的实验性支持\n\nWeb Chat 内部使用 Redux 进行状态管理。[Redux DevTools](https:\u002F\u002Fgithub.com\u002Freduxjs\u002Fredux-devtools) 在 NPM 构建版本中作为可选功能启用。\n\n此功能仅用于快速了解 Web Chat 的内部工作原理。它**不是** API 探索工具，也**不推荐**通过 Redux store 以编程方式访问 UI。应改用 [hooks API](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FHOOKS.md)。\n\n要使用 Redux DevTools，请使用 `createStoreWithDevTools` 函数来创建启用了 Redux DevTools 的 store。\n\n\u003C!-- prettier-ignore-start -->\n```diff\n  import React, { useMemo } from 'react';\n- import ReactWebChat, { createDirectLine, createStore } from 'botframework-webchat';\n+ import ReactWebChat, { createDirectLine, createStoreWithDevTools } from 'botframework-webchat';\n\n  export default () => {\n    const directLine = useMemo(() => createDirectLine({ token: 'YOUR_DIRECT_LINE_TOKEN' }), []);\n-   const store = useMemo(() => createStore(), []);\n+   const store = useMemo(() => createStoreWithDevTools(), []);\n\n    return \u003CReactWebChat directLine={directLine} store={store} userID=\"YOUR_USER_ID\" \u002F>;\n  };\n```\n\u003C!-- prettier-ignore-end -->\n\n使用 Redux DevTools 时存在一些限制：\n\n- Redux store 通过 [`redux-saga`](https:\u002F\u002Fgithub.com\u002Fredux-saga\u002Fredux-saga) 使用副作用（side-effects）。时间旅行（time-traveling）可能会破坏 UI。\n- 许多 UI 状态存储在 React context 和 state 中，并未暴露在 Redux store 中。\n- 某些对时间敏感的 UI 基于实时时钟，不受时间旅行影响。\n- 分发（dispatching）action **未被官方支持**。请改用 [hooks API](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FHOOKS.md)。\n- action 和 reducer 可能在不同版本间移入或移出 Redux store。[Hooks API](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FHOOKS.md) 是访问 UI 的官方 API。\n\n# 自定义 Web Chat UI\n\nWeb Chat 的设计目标是在无需 fork 源代码的情况下实现高度自定义。下表列出了在以不同方式导入 Web Chat 时可实现的自定义类型。此列表并非详尽无遗。\n\n|                               | CDN bundle |  React   |\n| ----------------------------- | :--------: | :------: |\n| 更改颜色                      |  &#10004;  | &#10004; |\n| 更改尺寸                      |  &#10004;  | &#10004; |\n| 更新\u002F替换 CSS 样式            |  &#10004;  | &#10004; |\n| 监听事件                      |  &#10004;  | &#10004; |\n| 与宿主网页交互                |  &#10004;  | &#10004; |\n| 自定义渲染活动（activities）  |            | &#10004; |\n| 自定义渲染附件（attachments） |            | &#10004; |\n| 添加新的 UI 组件              |            | &#10004; |\n| 重组整个 UI                   |            | &#10004; |\n\n查看更多关于 [自定义 Web Chat](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fsamples\u002FREADME.md) 的内容，了解如何进行自定义。\n\n## Web Chat 客户端支持的 Activity 类型\n\nBot Framework 提供了多种 activity 类型，但并非全部都在 Web Chat 中受支持。[查看 activity 类型文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FACTIVITYTYPES.md) 以了解更多信息。\n\n# 示例列表\n\n[查看完整的 Web Chat 示例列表](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fsamples)，获取更多关于自定义 Web Chat 的灵感。\n\n# 延伸阅读\n\n## API 参考\n\n查看 [API 文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FAPI.md) 以了解如何实现 Web Chat。\n\n## 浏览器兼容性\n\nWeb Chat 支持 Chrome、Microsoft Edge 和 Firefox 等现代浏览器的最新两个版本。  \n如果您需要在 Internet Explorer 11 中使用 Web Chat，请参阅 [ES5 bundle 示例](https:\u002F\u002Fmicrosoft.github.io\u002FBotFramework-WebChat\u002F01.getting-started\u002Fc.es5-bundle)。\n\n但请注意：\n\n- Web Chat **不支持** Internet Explorer 11 之前的版本。\n- 非 ES5 示例中展示的自定义功能**不支持** Internet Explorer。由于 IE11 是非现代浏览器，不支持 ES6，许多使用箭头函数和现代 Promise 的示例需要手动转换为 ES5。如果您的应用需要大量自定义，我们强烈建议为 Google Chrome 或 Microsoft Edge 等现代浏览器开发应用。\n- Web Chat **没有计划**为 IE11（ES5）提供示例支持。\n   - 对于希望手动重写我们的其他示例以在 IE11 中运行的客户，我们建议使用 polyfill 和转译器（如 [`babel`](https:\u002F\u002Fbabeljs.io\u002Fdocs\u002Fen\u002Fnext\u002Fbabel-standalone.html)）将 ES6+ 代码转换为 ES5。\n\n## 无障碍（Accessibility）\n\n查看 [无障碍文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FACCESSIBILITY.md)。\n\n## 本地化（Localization）\n\n查看 [本地化文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FLOCALIZATION.md)，了解如何在 Web Chat 中实现本地化。\n\n## 通知（Notifications）\n\n查看 [通知文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FNOTIFICATION.md)，了解如何在 Web Chat 中实现通知功能。\n\n## 遥测（Telemetry）\n\n查看 [遥测文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FTELEMETRY.md)，了解如何在 Web Chat 中实现遥测功能。\n\n## 技术支持指南\n\n在提交新 issue 前，请先查阅 [技术支持指南](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FTECHNICAL_SUPPORT_GUIDE.md)，获取 Web Chat 仓库中故障排查的指导和帮助。\n\n## 语音（Speech）\n\nWeb Chat 支持多种语音引擎，以提供与机器人自然对话的体验。本节概述了支持的不同引擎：\n\n- [Direct Line Speech](#integrate-with-direct-line-speech)\n- [Cognitive Services Speech Services](#integrate-with-cognitive-services-speech-services)\n- [浏览器提供的引擎或其他引擎](#browser-provided-engine-or-other-engines)\n\n### 集成 Direct Line Speech\n\nDirect Line Speech 是在 Web Chat 中添加语音功能的首选方式。详情请参阅 [Direct Line Speech 文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fdocs\u002FDIRECT_LINE_SPEECH.md)。\n\n### 集成 Cognitive Services Speech Services\n\n您可以使用 Cognitive Services Speech Services 为 Web Chat 添加语音功能。详情请参阅 [Cognitive Services Speech Services 文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fdocs\u002FSPEECH.md)。\n\n### 浏览器提供的引擎或其他引擎\n\n你也可以使用任何支持 [W3C Web Speech API 标准](https:\u002F\u002Fwicg.github.io\u002Fspeech-api\u002F) 的语音引擎。部分浏览器支持 [Speech Recognition API（语音识别 API）](https:\u002F\u002Fcaniuse.com\u002F#feat=mdn-api_speechrecognition) 和 [Speech Synthesis API（语音合成 API）](https:\u002F\u002Fcaniuse.com\u002F#feat=mdn-api_speechsynthesis)。你可以混合搭配不同的引擎——包括 Cognitive Services Speech Services（认知服务语音服务）——以提供最佳的用户体验。\n\n\u003Chr \u002F>\n\n# 如何使用 Web Chat 的最新版本进行测试\n\nWeb Chat 的最新版本可在 [Web Chat 每日发布页面](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Freleases\u002Fdaily) 获取。\n\n当有代码提交到 main 分支后，每日构建版本将在太平洋标准时间凌晨 3:00 之后发布。\n\n# 贡献代码\n\n有关如何构建项目以及 Pull Request（拉取请求）的仓库规范，请参阅我们的 [贡献指南页面](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002F.github\u002FCONTRIBUTING.md)。\n\n有关 Microsoft 行为准则的详细信息，请参阅我们的 [行为准则页面](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002F.github\u002FCODE_OF_CONDUCT.md)。\n\n# 报告安全问题\n\n请[查看安全文档](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Ftree\u002Fmain\u002Fdocs\u002FSECURITY.md)以了解如何报告安全问题。","# BotFramework-WebChat 快速上手指南\n\n## 环境准备\n\n- **浏览器要求**：支持现代浏览器（Chrome、Edge、Firefox、Safari 等），**从 v4.16.0 起不再支持 Internet Explorer**\n- **React 项目**：若使用 React 集成，需 **React 16.8.6 或更高版本**\n- **Bot 服务**：需已通过 [Azure Bot Service](https:\u002F\u002Fazure.microsoft.com\u002Fzh-cn\u002Fservices\u002Fbot-service\u002F) 创建机器人，并获取 **Direct Line 密钥或令牌**\n\n> ⚠️ 强烈建议通过后端服务生成 Direct Line 令牌（而非直接在前端使用密钥），以保障安全性。\n\n## 安装步骤\n\n### 方式一：CDN 引入（推荐用于简单集成）\n\n无需安装，直接在 HTML 中引入：\n\n```html\n\u003Cscript\n  crossorigin=\"anonymous\"\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002Flatest\u002Fwebchat.js\"\n>\u003C\u002Fscript>\n```\n\n> 国内访问 CDN 可能较慢，可考虑自行托管 `webchat.js` 文件或使用国内 CDN 加速服务。\n\n### 方式二：npm 安装（适用于 React 项目）\n\n```bash\nnpm install botframework-webchat\n```\n\n> 建议使用 `~`（波浪号）指定次要版本以避免破坏性变更，例如：`\"botframework-webchat\": \"~4.19.0\"`\n\n## 基本使用\n\n### 1. 使用 JavaScript 集成（最简示例）\n\n```html\n\u003C!DOCTYPE html>\n\u003Chtml>\n  \u003Chead>\n    \u003Cscript\n      crossorigin=\"anonymous\"\n      src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002Flatest\u002Fwebchat.js\"\n    >\u003C\u002Fscript>\n    \u003Cstyle>\n      html, body { height: 100%; margin: 0; }\n      #webchat { height: 100%; width: 100%; }\n    \u003C\u002Fstyle>\n  \u003C\u002Fhead>\n  \u003Cbody>\n    \u003Cdiv id=\"webchat\" role=\"main\">\u003C\u002Fdiv>\n    \u003Cscript>\n      window.WebChat.renderWebChat(\n        {\n          directLine: window.WebChat.createDirectLine({\n            token: 'YOUR_DIRECT_LINE_TOKEN' \u002F\u002F 替换为你的 Direct Line 令牌\n          }),\n          userID: 'user-id',\n          username: '用户',\n          locale: 'zh-CN'\n        },\n        document.getElementById('webchat')\n      );\n    \u003C\u002Fscript>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n```\n\n### 2. 在 React 项目中使用\n\n```tsx\nimport React from 'react';\nimport ReactWebChat from 'botframework-webchat';\n\nexport default function WebChat() {\n  return (\n    \u003CReactWebChat\n      directLine={window.WebChat.createDirectLine({ token: 'YOUR_DIRECT_LINE_TOKEN' })}\n      userID=\"user-id\"\n      username=\"用户\"\n      locale=\"zh-CN\"\n    \u002F>\n  );\n}\n```\n\n> 请将 `YOUR_DIRECT_LINE_TOKEN` 替换为通过 Azure Bot Service 获取的有效令牌。","某在线教育平台希望在官网嵌入一个智能客服机器人，用于解答学生关于课程安排、作业提交和系统操作的常见问题，同时要求界面风格与网站整体设计一致，并保障用户对话安全。\n\n### 没有 BotFramework-WebChat 时\n- 需从零开发聊天界面，耗费大量前端资源实现消息气泡、输入框、滚动加载等基础功能  \n- 无法直接对接 Azure Bot Services，需额外编写适配层处理 WebSocket 或 Direct Line 协议  \n- 界面样式固定，难以匹配品牌色系和 UI 规范，导致用户体验割裂  \n- 缺乏对内容安全策略（CSP）的原生支持，存在潜在 XSS 风险  \n- 文件上传、流式响应等高级交互需自行实现，开发周期长且稳定性差  \n\n### 使用 BotFramework-WebChat 后\n- 直接通过 npm 引入组件，几行代码即可嵌入功能完整的聊天窗口，大幅缩短上线时间  \n- 原生支持 Azure Bot Services 的 Direct Line 通道，无缝连接后端对话逻辑  \n- 提供深度定制能力，可调整颜色、字体、布局，甚至打包为 Fluent UI 主题包复用  \n- 内置 CSP 兼容机制，帮助团队轻松满足企业级安全合规要求  \n- 开箱支持文件上传确认、响应流式输出（livestreaming）等体验优化功能，提升用户满意度  \n\nBotFramework-WebChat 让团队以最小成本快速部署安全、美观且功能完备的对话界面，真正聚焦于核心业务逻辑而非重复造轮子。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmicrosoft_BotFramework-WebChat_438ed387.png","microsoft","Microsoft","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fmicrosoft_4900709c.png","Open source projects and samples from Microsoft",null,"opensource@microsoft.com","OpenAtMicrosoft","https:\u002F\u002Fopensource.microsoft.com","https:\u002F\u002Fgithub.com\u002Fmicrosoft",[85,89,93,97,101,105,108,112],{"name":86,"color":87,"percentage":88},"HTML","#e34c26",50.8,{"name":90,"color":91,"percentage":92},"TypeScript","#3178c6",33.8,{"name":94,"color":95,"percentage":96},"JavaScript","#f1e05a",12,{"name":98,"color":99,"percentage":100},"CSS","#663399",3.2,{"name":102,"color":103,"percentage":104},"Shell","#89e051",0.1,{"name":106,"color":107,"percentage":104},"Makefile","#427819",{"name":109,"color":110,"percentage":111},"Dockerfile","#384d54",0,{"name":113,"color":114,"percentage":111},"Pug","#a86454",1769,1604,"2026-04-03T13:32:30","MIT","Linux, macOS, Windows","未说明",{"notes":122,"python":120,"dependencies":123},"该工具为前端 Web 组件，基于 JavaScript\u002FTypeScript 开发，可通过 CDN 或 npm 引入；不支持 Internet Explorer 11（4.16.0 起）；若使用 React 集成，需 React 16.8.6 或更高版本；支持 ES Modules 和 CommonJS 两种模块格式；推荐通过 Direct Line Token 而非密钥连接 Bot；支持 CSP（内容安全策略）以增强安全性。",[124],"React >=16.8.6",[13,26,54],[127,128,129,130,131,132,133,134],"bot-framework","adaptive-cards","azure-bot-services","chat","conversational-ui","conversational-ai","bot","chatbot",5,"2026-03-27T02:49:30.150509","2026-04-06T06:54:41.468530",[139,144,149,154,159],{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},259,"如何在 WebChat 启动时加载历史消息？","可以通过后端获取已存档的消息，并以前端活动（activities）数组的形式传入 WebChat。每条活动需包含 type、from（含 role: 'user' 或 'bot'）、text 和 timestamp 等字段。例如：\n\n```js\nconst activities = [\n  {\n    type: 'message',\n    from: { id: 'userid', name: 'username', role: 'user' },\n    text: '用户消息',\n    timestamp: '2019-08-08T16:41:12.939Z'\n  },\n  {\n    type: 'message',\n    from: { id: 'botid', name: 'botname', role: 'bot' },\n    text: '机器人回复',\n    timestamp: '2019-08-08T16:41:13.183Z'\n  }\n];\n```\n\n确保 from.role 正确设置，否则所有消息都会显示为机器人发送。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F365",{"id":145,"question_zh":146,"answer_zh":147,"source_url":148},260,"如何在本地运行 WebChat 并直接连接到本地托管的机器人进行调试？","可以使用 Bot Framework Emulator Core 作为中间服务。一种可行方案是使用 Docker 容器组合：一个容器运行 WebChat 前端，一个运行本地机器人（如监听 3978 端口），另一个运行 Emulator Core。参考示例项目：https:\u002F\u002Fgithub.com\u002Fcompulim\u002Fdocker-bot。执行 `docker-compose build` 和 `docker-compose up` 即可启动整套本地调试环境。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F243",{"id":150,"question_zh":151,"answer_zh":152,"source_url":153},261,"OAuth 卡在 Azure\u002FCDN 生产环境中无法渲染，显示为文件类型怎么办？","此问题通常与 Direct Line 的安全配置有关。解决方案是使用 Direct Line 密钥和用户 ID 获取令牌，并启用增强型 Direct Line 身份验证（Enhanced Direct Line Authentication），限制有效域名。具体步骤可参考 Bot Framework 团队博客：https:\u002F\u002Fblog.botframework.com\u002F2018\u002F09\u002F25\u002Fenhanced-direct-line-authentication-features\u002F。注意：跳过“magic code”会降低安全性，应配合域名白名单使用。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F1001",{"id":155,"question_zh":156,"answer_zh":157,"source_url":158},262,"Adaptive Card 的 speak 属性在 WebChat 中不生效怎么办？","从 Web Chat v4.7.1 开始，speak 属性已支持，但需同时在 activity 的 channelData 中显式启用 speak。示例代码如下：\n\n```js\nawait context.sendActivity({\n  attachments: [CardFactory.adaptiveCard({\n    type: \"AdaptiveCard\",\n    version: \"1.0\",\n    body: [],\n    $schema: \"http:\u002F\u002Fadaptivecards.io\u002Fschemas\u002Fadaptive-card.json\",\n    speak: \"The bot should speak this\"\n  })],\n  channelData: { speak: true }\n});\n```\n\n若使用 Cognitive Services Speech，确保 SSML 格式正确，避免因 payload 错误导致 TTS 接口返回 400 错误。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F894",{"id":160,"question_zh":161,"answer_zh":162,"source_url":163},263,"WebChat 显示“发送失败，请重试”，但消息实际已送达机器人，如何避免重复发送？","该问题通常由 Direct Line 连接不稳定或响应超时引起。虽然消息已成功发送至机器人，但 WebChat 未收到确认，因此提示重试。建议：1）优化网络稳定性；2）在机器人端实现消息去重逻辑（如基于 message.id 缓存已处理消息）；3）升级到最新版 WebChat，部分版本已改进重试机制。避免用户多次点击“重试”导致重复处理。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F465",[165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260],{"id":166,"version":167,"summary_zh":168,"released_at":169},99934,"v4.17.1","### Subresource Integrity\r\n\r\n> The CDN URL will be online in about a day after we completed publish to NPM.\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-LynUoADxKA68aLZmG1IcfDMKZ24bj7vs6QTbh58fZXt6h3JIQLW5d6kupe7PPR8X\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.17.1\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-lbbvmXFlu6stikVbD\u002F3PfLyYYq\u002FE1RMtuvfgXCjk3EnOIIVoZoxGQKelNA9uRxgD\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.17.1\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-hJwaknPiqRYPUmSxMWERSrVTQwOaz0PMhiwyGUUNc4kO3\u002FDsy+R\u002F6FKoBNw75B8B\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.17.1\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n## [4.17.1] - 2025-07-23\r\n\r\n### Fixed\r\n\r\n-  Fixes [#4965](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4965). Removed keyboard helper screen in [#5234](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5234) and [#5522](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5522), by [@amirmursal](https:\u002F\u002Fgithub.com\u002Famirmursal) and [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n","2025-07-25T19:55:23",{"id":171,"version":172,"summary_zh":173,"released_at":174},99935,"v4.18.0","### Subresource Integrity\r\n\r\n> The CDN URL will be online in about a day after we completed publish to NPM.\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-YCF4860lf811lnrrIBL4pfZ+UqiNit+8lXEhSY3R+dSc+C1rg6UnEQR5avdOTbj0\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.18.0\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-RuyQM7i2h9QDvJTm5quFymi0qfuWyIZocRdsgUaPIhlZnAM\u002FQz1\u002FYnUxH55Dt9Rd\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.18.0\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-YXzfTEuq6x+8VEBZcHmPE9rM+NpSTVfRQsU1X0v4drgjp3S4F8d8rnq\u002FanR3WLpj\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.18.0\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n## [4.18.0] - 2024-07-10\r\n\r\n### Added\r\n\r\n-  (Experimental) Added initial decorators support, in PR [#5205](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5205), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n   -  Introduced internal `botframework-webchat-api\u002Fdecorator` import, in PR [#5205](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5205), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n   -  Added `DecoratorComposer` and `ActivityDecorator` to be used for decorating activity border, in PR [#5205](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5205), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n\r\n### Fixed\r\n\r\n-  Read deeper into citation objects in order to provide names, in PR [#5215](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5215), by [@beyackle2](https:\u002F\u002Fgithub.com\u002Fbeyackle2)\r\n-  Improved performance for `useActivityWithRenderer`, in PR [#5172](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5172), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n-  Fixes [#5162](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F5162). Improved performance for `useActivityTreeWithRenderer`, in PR [#5163](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5163), by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim)\r\n-  Fixes [#5175](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F5175). `PrecompiledGlobalize.js` is emitted instead of `.cjs`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#5181](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5181)\r\n-  Improved performance for `BasicTranscript`, in PR [#5183](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5183), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n-  Fixed potential memory usage issues caused by `useActivitiesWithRenderer`, in PR [#5183](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5183), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n-  Improved performance for `useMemoized`, in PR [#5190](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5190), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n-  Fixed send box zoomed in when clicked on mobile Safari, in PR [#5192](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5192), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n-  Added missing support for chat history scroll with keyboard when Fluent send box is focused, in PR [#5191](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5191), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n-  Fixed DTMF command usage sent by telephone keypad, in PR [#5198](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5198), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n-  Fixed decorator import in legacy CommonJS environments, in [#5231](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5231), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n\r\n### Changed\r\n\r\n-  Bumped all dependencies to the latest versions, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#5174](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5174) and PR [#5181](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5181)\r\n   -  Production dependencies\r\n      -  [`classnames@2.5.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fclassnames)\r\n      -  [`core-js@3.37.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fcore-js)\r\n      -  [`deep-freeze-strict@1.1.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fdeep-freeze-strict)\r\n      -  [`merge-refs@1.3.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmerge-refs)\r\n      -  [`mime@4.0.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmime)\r\n      -  [`p-defer@4.0.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fp-defer)\r\n      -  [`redux-saga@1.3.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fredux-saga)\r\n      -  [`redux@5.0.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fredux)\r\n      -  [`sanitize-html@2.13.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fsanitize-html)\r\n      -  [`swiper@8.4.7`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fswiper)\r\n      -  [`whatwg-fetch@3.6.20`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fwhatwg-fetch)\r\n   -  Development dependencies\r\n      -  [`@fluentui\u002Freact-components@9.49.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@fluentui\u002Freact-components)\r\n      -  [`@types\u002Fnode@20.12.11`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@types\u002Fnode)\r\n      -  [`@typescript-eslint\u002Feslint-plugin@7.8.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@typescript-eslint\u002Feslint-plugin)\r\n      -  [`@typescript-eslint\u002Fparser@7.","2024-07-11T04:10:54",{"id":176,"version":177,"summary_zh":178,"released_at":179},99936,"v4.17.0","### Subresource Integrity\r\n\r\n> The CDN URL will be online in about a day after we completed publish to NPM.\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-JrrxPK4UiMUpQfRYck+TH35vDgpZLtot9HqkG6F\u002FpbubNCnNyRCYEbQ0mXH2z8s2\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.17.0\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-N+hZt09yrG7gT\u002FxDkupYZeFnCoFR1S4ig9v3h1liavEgPm9C+Lt4MFPv85gfBp6E\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.17.0\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-Z6hLc33tM1RVHGaYJbzrd6XkfxUwB+q4915W9K9ogwYqpIIew3oHhDfEzCfk1JgD\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.17.0\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n## [4.17.0] - 2024-05-06\r\n\r\n### Known issues\r\n\r\n-  Web Chat is not loading with error `Uncaught TypeError: Super constructor null of anonymous class is not a constructor`\r\n   -  A [bug in webpack@>=5.84.1](https:\u002F\u002Fgithub.com\u002Fwebpack\u002Fwebpack\u002Fissues\u002F17711) is causing the issue. Please update to [`webpack@>=5.90.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fwebpack\u002Fv\u002F5.90.0)\r\n\r\n### Breaking changes\r\n\r\n-  `useSendMessage` hook is updated to support sending attachments with a message. To reduce complexity, the `useSendFiles` hook is being deprecated. The hook will be removed on or after 2026-04-03\r\n-  `styleOptions.uploadThumbnailHeight` and `styleOptions.uploadThumbnailWidth` must be a `number` of pixels\r\n-  `useSuggestedActions` type is updated to align with its actual implementation, by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny), in PR [#5122](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5122)\r\n-  Removed deprecated code: `connect*`, `useRenderActivity`, `useRenderActivityStatus`, `useRenderAvatar`, in PR [#5148](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5148), by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim)\r\n-  Added named exports in both CommonJS and ES Modules module format, in PR [#5148](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5148), by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim)\r\n-  Removed deprecated `useFocusSendBox()` hook, please use `useFocus('sendBox')` instead, in PR [#5150](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5150), by [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n-  HTML-in-Markdown is now supported. To disable this feature, set `styleOptions.markdownRenderHTML` to `false`\r\n\r\n### Added\r\n\r\n-  Resolves [#5083](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F5083). Added `sendAttachmentOn` style option to send attachments and text in a single activity, by [@ms-jb](https:\u002F\u002Fgithub.com\u002Fms-jb) and [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#5123](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5123)\r\n   -  `useSendMessage` hook is updated to support sending attachments with a message\r\n   -  `useSendBoxAttachments` hook is added to get\u002Fset attachments in the send box\r\n-  Resolves [#5081](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F5081). Added `uploadAccept` and `uploadMultiple` style options, by [@ms-jb](https:\u002F\u002Fgithub.com\u002Fms-jb), in PR [#5048](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5048)\r\n-  Added `sendBoxMiddleware` and `sendBoxToolbarMiddleware`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#5120](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5120)\r\n-  (Experimental) Added `botframework-webchat-fluent-theme` package for applying Fluent UI theme to Web Chat, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) and [@OEvgeny](https:\u002F\u002Fgithub.com\u002FOEvgeny)\r\n   -  Initial commit, in PR [#5120](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5120)\r\n   -  Inherits Fluent CSS palette if available, in PR [#5122](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5122)\r\n   -  New send box with Fluent look-and-feel, in PR [#5122](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5122)\r\n      -  `styleOptions.maxMessageLength` to specify maximum length of the outgoing message\r\n   -  Drag-and-drop file support, in PR [#5122](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5122)\r\n   -  Added telephone keypad (DTMF keypad), in PR [#5122](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5122)\r\n   -  Fixed `botframework-webchat-fluent-theme\u002Fpackage.json` to export `*.d.[m]ts` and default exports, in PR [#5131](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5131)\r\n   -  Added support of `styleOptions.hideUploadButton`, in PR [#5132](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5132)\r\n   -  Added `styleOptions.hideTelephoneKeypadButton` and default to `true`, in PR [#5132](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5132)\r\n   -  Fit-and-finish on suggested actions and telephone keypad, in PR [#5132](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F5132)\r\n   -  Fixed to keep telephone keypad on-screen on click, in PR [#5132](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebC","2024-05-07T21:25:26",{"id":181,"version":182,"summary_zh":183,"released_at":184},99937,"v4.16.0","### Subresource Integrity\r\n\r\n> The CDN URL will be online in about a day after we completed publish to NPM.\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-4LcbsBbx9Pr+\u002F7Hm0HxHOuhHMFlbf4ecmHUekoAnbBRiURTJx3HaaLuo7PrP1aBD\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.16.0\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-fhdXAQj5PD+9CBeiZ3dGYjJ3mzH1DePD30cKtJKWzGxyioYiNYOaw5oRw7+AMg+e\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.16.0\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-7tv7NO7xJd\u002FdCNFy3qBd+Nxqhbi2Zx+Voh6YuCr4BqwoIMRevb4O89giG8kshrCF\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.16.0\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Breaking changes\r\n\r\n-  Starting from 4.16.0, Internet Explorer is no longer supported\r\n   -  After more than a year of the Internet Explorer 11 officially retirement, we decided to stop supporting Internet Explorer. This will help us to bring new features to Web Chat\r\n   -  4.15.9 is the last version which supports Internet Explorer in limited fashion\r\n-  `useTextBoxValue` setter will no longer replace emoticon with emoji, in PR [#4861](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002Fpull\u002F4861)\r\n\r\n### Fixed\r\n\r\n-  Fixes [#4865](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4865). Fixed \u003Ckbd>CTRL\u003C\u002Fkbd> + \u003Ckbd>Z\u003C\u002Fkbd> should undo correctly, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4861](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002Fpull\u002F4861)\r\n-  Fixes [#4863](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4863). Disable dark theme for link references until chat history has dark theme support, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4864](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4864)\r\n-  Fixes [#4866](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4866). Citation modal show fill screen width on mobile device and various fit-and-finish, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4867](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4867)\r\n-  Fixes [#4878](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4878). `createStore` should return type of `Redux.Store`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4877](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4877)\r\n-  Fixes [#4957](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4957). Native chevron of the accordion in citation should be hidden, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4958](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4958)\r\n\r\n### Added\r\n\r\n-  Resolves [#4853](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4853). Shorten URLs in link definitions UI, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4860](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4860)\r\n-  Resolves [#4840](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4840). Added feedback buttons in activity status, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4846](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4846)\r\n-  Resolves [#4841](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4841). Added link definitions UI in Markdown, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4846](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4846)\r\n-  Resolves [#4842](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4842). Added provenance in activity status, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4846](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4846)\r\n-  Resolves [#4856](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4856). Added types for `useStyleSet`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4857](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4857)\r\n","2023-11-17T23:52:50",{"id":186,"version":187,"summary_zh":188,"released_at":189},99938,"v4.15.9","### Subresource Integrity\r\n\r\n> The CDN URL will be online in about a day after we completed publish to NPM.\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-kr+6QqBRD45fWiraMYzQdm0CpHzmKMtNk0gRLBVqa379eQdjCHNnm8jfmAhiOQnI\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.9\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-04jpTOxuj3fbYmyDC2\u002FjU3rdwhoC4OWnNbo6zh6RNEq+qvzNggRWDzdN788GnXs6\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.9\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-nCB7vnhkKK\u002FwLHWq8fqOaZM5YlsR0X\u002F6FcS31MOnl7aYmMB+qo3qPp0hacahdAbN\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.9\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Fixed\r\n\r\n-  Fixes [#4718](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4718). In high contrast mode, Adaptive Card buttons, when pushed, should highlighted properly, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4746](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4746)\r\n-  Fixes [#4721](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4721) and [#4726](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4726). Adaptive Cards `TextBlock` heading elements should start at level 2, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4747](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4747)\r\n-  Fixes [#3699](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3699). Correcting timestamp roundoff, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4821](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4821)\r\n","2023-08-26T00:37:15",{"id":191,"version":192,"summary_zh":193,"released_at":194},99939,"v4.15.8","### Subresource Integrity\r\n\r\n> The CDN URL will be online in about a day after we completed publish to NPM.\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-4vGD9F0KRTew8maUTxtkCq0vbJDB+o05wRdhSEP3HGU6P6Nob7gt+OG\u002F\u002FfYfvbYL\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.8\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-aMT2td\u002FgP8Wy5N+3pVTV0Wc85z8P9UoNGMZbLEHr8kqbySXFXGLJ1uzwYUGVmIQe\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.8\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-Tzp6VuLIY8CEHwULCIzP6jdMkjhjWK7M13mHKSObh5Rh0MQoptGsA11NDs9qpvL6\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.8\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Breaking changes\r\n\r\n-  When `activity.channelData['webchat:fallback-text']` is present but empty, it will no longer applies `aria-hidden` to the activity\r\n   -  The activity will not be narrated through live region. However, when navigating the transcript, it will be narrated as empty\r\n   -  To make an activity presentational or hide from screen reader, please use `activityMiddleware` to customize the rendering\r\n\r\n### Added\r\n\r\n-  Resolved [#4643](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4643). Decoupling `botframework-directlinejs` from business logic of Web Chat for better tree-shaking, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4645](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4645) and PR [#4648](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4648)\r\n-  Resolved [#4650](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4650). Added automated accessibility check using [`axe-core`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Faxe-core)\r\n   -  Add `axe-core` in end-to-end tests, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4704](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4704)\r\n   -  HTML test: using `\u003Cmain>` for the root container, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4684](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4684) and PR [#4704](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4704)\r\n   -  HTML test: changed contrast ratio in tests that use different background colors, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4686](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4686) and PR [#4704](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4704)\r\n   -  Added `ponyfill` prop to `\u003CReactWebChat>`\u002F`\u003CComposer>` and `createStoreWithOptions`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4662](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4662)\r\n      -  This is for development scenarios where fake timer is needed and will only applies to Web Chat only\r\n   -  HTML test: fix accessibility issues on HTML file, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4685](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4685)\r\n   -  HTML test: ensure all images has alternate text, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4704](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4704)\r\n   -  Adaptive Cards: always set `role` attribute, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4704](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4704)\r\n   -  Adaptive Cards: update host config to use lighter color for disabled inputs, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4704](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4704)\r\n   -  Keyboard help screen: remove `\u003Cheader>` container, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4704](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4704)\r\n   -  Live region: added `\u003Clabel>` for input fields in Adaptive Cards, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4704](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4704)\r\n\r\n### Fixed\r\n\r\n-  Fixes [#4557](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4557). Flipper buttons in carousels and suggested actions is now renamed to \"next\u002Fprevious\" from \"left\u002Fright\", by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4646](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4646)\r\n-  Fixes [#4652](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4652). Keyboard help screen, activity focus traps, and chat history terminator should not be hidden behind `aria-hidden` because they are focusable, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4659](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4659)\r\n-  Fixes [#4665](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4665). Updated development server with latest ESBuild API, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4662](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4662).\r\n-  Fixes [#4706](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4706). Send button and \u003Ckbd>ENTER\u003C\u002Fkbd> key should function after reconnected, by [@compulim](https:\u002F\u002Fg","2023-06-07T19:39:31",{"id":196,"version":197,"summary_zh":198,"released_at":199},99940,"v4.15.7","### Subresource Integrity\r\n\r\n> The CDN URL will be online in about a day after we completed publish to NPM.\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-fUKSEwGc3\u002FWXaZ4SN0Mm5DglQXbtPJFIgeN79b369v6duzoU3wP1Ix9zdxugfDBR\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.7\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-1T+LvOs6\u002F1ShG\u002F+c7tarxIR\u002FJ0dUIjrba2M9SbyOv9Ls8ElcnhLZFnLGdiVf\u002Fu4W\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.7\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-kkb9jeNuZWQaueb4XkclbjwjfB0IOH2gjCFEHgKVVtrpqqdUmJtjXqGBeGsb2DZT\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.7\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Added\r\n\r\n-  Added function to emit status change telemetry event for activities, by [@Erli-ms](https:\u002F\u002Fgithub.com\u002FErli-ms), in PR [#4631](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4631)\r\n-  Added ability for developers to customize Web Chat by extending the default UI without having to re-implement existing components, by [@dawolff-ms](https:\u002F\u002Fgithub.com\u002Fdawolff-ms), in PR [#4539](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4539)\r\n\r\n### Fixed\r\n\r\n-  Fixes [#4558](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4558). In high contrast mode, \"Retry\" link button should use link color as defined by [CSS System Colors](https:\u002F\u002Fw3c.github.io\u002Fcsswg-drafts\u002Fcss-color\u002F#css-system-colors), by [@beyackle2](https:\u002F\u002Fgithub.com\u002Fbeyackle2) in PR [#4537](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4537)\r\n-  Fixes [#4566](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4566). For YouTube and Vimeo `\u003Ciframe>`, add `sandbox=\"allow-same-origin allow-scripts\"`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4567](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4567)\r\n-  Fixes [#4561](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4561). Header title of keyboard help dialog should be the `aria-labelledby` of the dialog and close button should be the first element of the header, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4609](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4609)\r\n-  Fixes [#4559](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4559). Keyboard help screen should be scrollable and its close button should appear correctly in light-themed high contrast mode, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4619](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4619)\r\n-  Fixes [#4623](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4623). Screen reader should read error when failed to send an empty message or offline, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4637](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4637)\r\n\r\n### Changed\r\n\r\n-  Updated test harness to use [Selenium Hub 4.6.0](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fselenium\u002Fhub) and [Chrome 107](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fselenium\u002Fnode-chrome), by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4540](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4540)\r\n","2023-02-16T01:33:40",{"id":201,"version":202,"summary_zh":203,"released_at":204},99941,"v4.15.6","### Subresource Integrity\r\n\r\n> The CDN URL will be online in about a day after we completed publish to NPM.\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-BChMYgWOMDj3xBzl1hyoByer96YSj9RSbu55SgoyLhiGtCkcIPCTaMCfC81FdJra\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.6\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-Ik2jNknNTBCaI\u002FNP3GRMfDCWKnApGSdYMcdA6EtEJkL1LtUZEdNdjeNkfZZk3UlS\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.6\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-PH82AmArERnsV9DCQozdeAUGwiuy\u002F1cchDvHaQmgdS9+\u002FqvWqX2lY3rwz7aPpCYN\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.6\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Fixed\r\n\r\n-  Fixes [#4501](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4501). Outgoing activities restored from chat service should be marked as sent, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4532](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4532)\r\n\r\n### Changed\r\n\r\n-  Fixes [#4523](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4523). Bumped Microsoft Cognitive Services Speech SDK to [`microsoft-cognitiveservices-speech-sdk@1.17.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmicrosoft-cognitiveservices-speech-sdk), by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4533](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4533)\r\n   -  Also bumped [`web-speech-cognitive-services@7.1.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fweb-speech-cognitive-services)\r\n","2022-12-02T03:55:22",{"id":206,"version":207,"summary_zh":208,"released_at":209},99942,"v4.15.5","### Subresource Integrity\r\n\r\n> The CDN URL will be online in about a day after we completed publish to NPM.\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-yZ3Ugoikjn2nnqUATWlZR3e2PfDz\u002FfopbI\u002FJ77anxs6pnoauHENVS3hObWSAOxmr\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.5\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-t278QukjDZq\u002FzQN4GdMwm+wPjb3glhiqydECL5o9le9PfgGwgACfwkARzlGj6GeI\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.5\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-L\u002FK5c9oKPS2+VbgxTOXnHL\u002FfQQg9G+agAc1eB3I3t\u002F+XnXdGHOqs8kMB9ViQTSMQ\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.5\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Fixed\r\n\r\n-  Card action image alt text should use `imageAltText` field and fallback to `text` field, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4333](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4333)\r\n-  Fixes [#4472](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4472). Removed `role` attributes for notification bar and use `\u003Cdiv>` instead of `\u003Cul>`\u002F`\u003Cli>`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4475](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4475)\r\n-  Fixes [#4393](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4393). Renders `\u003Csection role=\"feed\">` only if there are one or more activities contained within, by [@beyackle2](https:\u002F\u002Fgithub.com\u002Fbeyackle2) and [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4420](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4420)\r\n-  Fixes [#4473](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4473). Bumped `strip-ansi@6.0.1` for `test-harness` as `@^7` does not support CommonJS project, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4474](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4474)\r\n-  Fixes [#4476](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4476). When focus on the keyboard help screen, it should focus on the close button, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4479](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4479)\r\n-  Fixes [#4442](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4442). Change the keyboard help screen string \"Leave message\" to \"Exit message\", by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4479](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4479)\r\n\r\n### Changed\r\n\r\n-  Bumped Adaptive Cards to [`adaptivecards@2.11.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fadaptivecards), by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4424](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4424)\r\n-  Bumped Microsoft Cognitive Services Speech SDK to [`microsoft-cognitiveservices-speech-sdk@1.23.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmicrosoft-cognitiveservices-speech-sdk), by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4424](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4435)\r\n   -  Also bumped [`web-speech-cognitive-services@7.1.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fweb-speech-cognitive-services)\r\n-  Bumped all dependencies to the latest versions, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4423](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4423) and [#4435](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4435)\r\n   -  Production dependencies\r\n      -  [`@babel\u002Fruntime@7.19.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fruntime)\r\n      -  [`classnames@2.3.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fclassnames)\r\n      -  [`core-js@3.25.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fcore-js)\r\n      -  [`redux-saga@1.2.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fredux-saga)\r\n      -  [`sanitize-html@2.7.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fsanitize-html)\r\n   -  Development dependencies\r\n      -  [`@babel\u002Fcore@7.19.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fcore)\r\n      -  [`@babel\u002Fplugin-transform-runtime@7.19.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-transform-runtime)\r\n      -  [`@babel\u002Fplugin-transform-typescript@7.19.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-transform-typescript)\r\n      -  [`@babel\u002Fpreset-env@7.19.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-env)\r\n      -  [`@babel\u002Fruntime@7.19.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fruntime)\r\n      -  [`@types\u002Fnode@18.7.22`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@types\u002Fnode)\r\n      -  [`@types\u002Freact@18.0.21`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@types\u002Freact)\r\n      -  [`@typescript-eslint\u002Feslint-plugin@5.38.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@typescript-eslint\u002Feslint-plugin)\r\n      -  [`@typescript-eslint\u002Fparser@5.38.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@typescript-eslint\u002Fparser)\r\n      -  [`babel-jest@29.0.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fbabel-jest)\r\n      -  [`concurrently@7.4.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fconcurrently)\r\n      -  [`core-js@3.25.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fcore-js)\r\n      -  [`dotenv@16.0.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fdotenv)\r\n      -  [`esbuild@0.15.9`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fesbuild)\r\n      -  [`eslint-plugin-react@7.31.8`](https:\u002F\u002Fn","2022-11-17T00:03:46",{"id":211,"version":212,"summary_zh":213,"released_at":214},99943,"v4.15.4","### Subresource Integrity\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-hm7B00mbtnkFvRyz6+PZuG2yfM3JaBdEUPYw7BEPKQWZqu1s3G8KFiyOIqOMEk+v\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.4\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-9pDJTvPL0wLKBbhzIDeYtyOXpMQgf3VVqPMKPWKTs+p\u002FJ8oOqOEy0piRhj9Atlzz\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.4\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-yyVMTpA21TwmR+Cfm3ktfuYwApD\u002FXUCxVYOSfUssIKI05H25L\u002F2D5bJQ817fFsMp\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.4\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Fixed\r\n\r\n-  Fixes [#4403](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4403). Patched Unicode CLDR database which caused file upload in Polish to appear blank, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4404](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4404)\r\n-  Fixes [#4412](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4412). Fixed inconsistent in `packages\u002Fsupport\u002Fcldr-data\u002Fpackage.json`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4411](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4411)\r\n\r\n### Changed\r\n\r\n-  Bumped all dependencies to the latest versions, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4392](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4392)\r\n   -  Production dependencies\r\n      -  [`@babel\u002Fruntime@7.18.9`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fruntime)\r\n      -  [`@emotion\u002Fcss@11.10.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@emotion\u002Fcss)\r\n      -  [`core-js@3.24.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fcore-js)\r\n      -  [`markdown-it-attrs@4.1.4`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmarkdown-it-attrs)\r\n      -  [`markdown-it@13.0.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmarkdown-it)\r\n      -  [`redux@4.2.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fredux)\r\n      -  [`sanitize-html@2.7.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fsanitize-html)\r\n   -  Development dependencies\r\n      -  [`@babel\u002Fcli@7.18.10`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fcli)\r\n      -  [`@babel\u002Fcore@7.18.10`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fcore)\r\n      -  [`@babel\u002Fplugin-proposal-class-properties@7.18.6`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-proposal-class-properties)\r\n      -  [`@babel\u002Fplugin-proposal-object-rest-spread@7.18.9`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-proposal-object-rest-spread)\r\n      -  [`@babel\u002Fplugin-transform-runtime@7.18.10`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-transform-runtime)\r\n      -  [`@babel\u002Fplugin-transform-typescript@7.18.12`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-transform-typescript)\r\n      -  [`@babel\u002Fpreset-env@7.18.10`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-env)\r\n      -  [`@babel\u002Fpreset-react@7.18.6`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-react)\r\n      -  [`@babel\u002Fpreset-typescript@7.18.6`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-typescript)\r\n      -  [`@babel\u002Fruntime@7.18.9`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fruntime)\r\n      -  [`@emotion\u002Freact@11.10.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@emotion\u002Freact)\r\n      -  [`@fluentui\u002Freact@8.87.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@fluentui\u002Freact)\r\n      -  [`@types\u002Fnode@18.7.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@types\u002Fnode)\r\n      -  [`@types\u002Freact@18.0.17`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@types\u002Freact)\r\n      -  [`@typescript-eslint\u002Feslint-plugin@5.33.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@typescript-eslint\u002Feslint-plugin)\r\n      -  [`@typescript-eslint\u002Fparser@5.33.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@typescript-eslint\u002Fparser)\r\n      -  [`babel-jest@28.1.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fbabel-jest)\r\n      -  [`babel-loader@8.2.5`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fbabel-loader)\r\n      -  [`babel-plugin-transform-inline-environment-variables@0.4.4`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fbabel-plugin-transform-inline-environment-variables)\r\n      -  [`concurrently@7.3.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fconcurrently)\r\n      -  [`core-js@3.24.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fcore-js)\r\n      -  [`dotenv@16.0.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fdotenv)\r\n      -  [`error-stack-parser@2.1.4`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Ferror-stack-parser)\r\n      -  [`esbuild@0.15.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fesbuild)\r\n      -  [`eslint-plugin-prettier@4.2.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Feslint-plugin-prettier)\r\n      -  [`eslint-plugin-react-hooks@4.6.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Feslint-plugin-react-hooks)\r\n      -  [`eslint-plugin-react@7.30.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Feslint-plugin-react)\r\n      -  [`eslint-plugin-security@1.5.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Feslint-plugin-security)\r\n      -  [`eslint@8.21.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Feslint)\r\n      -  [`express@4.18.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fexpress)\r\n      -  [`http-proxy-middleware@2.0.6`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fhttp-proxy-middleware)\r\n      -  [`husky@8.0.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fhusky)\r\n      -  [`jest-environment-node@28.1.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fjest-environment-node)\r\n      -  [`jest-image-snapshot@5.1.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fjest-image-sna","2022-09-18T02:04:10",{"id":216,"version":217,"summary_zh":218,"released_at":219},99944,"v4.14.2","### Subresource Integrity\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-TX+6Xqq20HcCfn9vFBfivPrnGantvLj6bVoeZMiRt3TDf7QL0l3y0h5NfXPHeMYD\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.14.2\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-rICoECir+m94sA3D9FN2nWP76JKfcGJA5uhCZ\u002FnSM3JNYWtnqUk5mHCgVvgWE+if\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.14.2\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-FDtL64x1C0SfN3jynhpEExETYworgZHfADHx+04wRT4RGxeXQulwMv7u9s8gUkkZ\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.14.2\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Fixed\r\n\r\n-  QFE: Fixes [#4403](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4403). Patched Unicode CLDR database which caused file upload in Polish to appear blank, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4406](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4406)\r\n","2022-09-07T07:05:29",{"id":221,"version":222,"summary_zh":223,"released_at":224},99945,"v4.15.3","### Subresource Integrity\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-Va7pNFHjKGxgI1g9J4tvLCSGEhtfpZzf76PDRDDKkaI+ZZXMCz7FplIZdjUrjkxg\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.3\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-G\u002F4GhuAj4f+IvvVgyTT1u6m5DjjdPI7hcrfgXmnWKC6uWtZkrI+jDkVk2MmJoclR\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.3\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-1CAMb60XukTImMnaUTHJvRYbYckPlkzXGVibWExFb5e8WbLsCrfkbQM+K1smVB5a\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.3\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Breaking changes\r\n\r\n-  Suggested actions is now a [`role=\"toolbar\"`](https:\u002F\u002Fwww.w3.org\u002FWAI\u002FARIA\u002Fapg\u002Fpatterns\u002Ftoolbar\u002F) and adopted roving tab index\r\n   -  \u003Ckbd>TAB\u003C\u002Fkbd> key will now land on the container, instead of individual button\r\n   -  While the focus is on the container, \u003Ckbd>LEFT\u003C\u002Fkbd>\u002F\u003Ckbd>RIGHT\u003C\u002Fkbd> arrow keys are used to select different buttons (\u003Ckbd>UP\u003C\u002Fkbd>\u002F\u003Ckbd>DOWN\u003C\u002Fkbd> for stacked layout)\r\n   -  Visual focus indicator is now two tiered. The default styling is same as the one we use in chat history\r\n      -  New style options added `suggestedActionsVisualKeyboardIndicatorColor`, `suggestedActionsVisualKeyboardIndicatorStyle`, `suggestedActionsVisualKeyboardIndicatorWidth`\r\n   -  Suggested actions container will be unmounted when there are no suggested action button to display\r\n   -  Suggested actions container is not longer a live region. The suggested action buttons will now be narrated by the chat history live region\r\n-  Published NPM packages will now include `\u002Fdist`, `\u002Flib`, and `\u002Fsrc` folders\r\n   -  The `\u002Fdist` folder was previously missing from our NPM packages\r\n-  The `activity.channelData.state` property is being deprecated in favor of the updated [`activity.channelData['webchat:send-status']`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fpackages\u002Fcore\u002Fsrc\u002Ftypes\u002FWebChatActivity.ts) property. Main differences include:\r\n   -  Previously, we would set the `state` property to `\"send failed\"` when the chat adapter failed to send the activity, or after passing a timeout as defined in `styleOptions.sendTimeout`\r\n   -  The new `'webchat:send-status'` property will be set to `\"send failed\"` when the chat adapter fails to send the activity or after passing a hardcoded timeout of 5 minutes\r\n   -  See PR [#4362](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4362) for details\r\n\r\n### Changed\r\n\r\n-  Resolves [#4301](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4301). Updated `Dockerfile` to support secure container supply chain, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4303](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4303)\r\n-  Resolves [#4317](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4317). Updated `package.json` to allowlist `\u002Fdist`, `\u002Flib`, `\u002Fsrc`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4318](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4318)\r\n-  Resolves [#4322](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4322). Improved error messages for sending activities, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4362](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4362)\r\n-  Resolves [#4211](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4211). Added new `useSendStatusByActivityKey` hook to check the UI send status of an outgoing activity, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4362](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4362)\r\n   -  The send status returned by this hook is designed to display different UIs that reflect the \"sending\", \"send failed\" or \"sent\" status of the activity\r\n   -  When modifying `styleOptions.sendTimeout` prop, the send status returned by this hook may transition from `\"send failed\"` to `\"sending\"`, and vice versa\r\n   -  This is different from the send status provided by the chat adapter, namely `activity.channelData['webchat:send-status']`\r\n\r\n### Fixed\r\n\r\n-  Fixes [#4293](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4293) and [#4296](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4296). Fixed accessibility issues for suggested actions, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4314](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4314)\r\n   -  Centralized live region of suggested actions into chat history live region for better live region control\r\n   -  Suggested actions container is now a `role=\"toolbar\"` and uses roving tab index for multiple suggested action\r\n-  Fixes [#4319](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4319). Fixed navigation keys not working in suggested actions under IE Mode, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4320](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4320)\r\n-  Fixes [#4315](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002F","2022-08-10T22:48:59",{"id":226,"version":227,"summary_zh":228,"released_at":229},99946,"v4.15.2","### Subresource Integrity\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-+K6Bkp3HdwB6IL\u002FMooiD8DGF4zg7iLJbYBq+ReT+PGBXW2skSoRPvF\u002FArXmbFD+K\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.2\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-lUORlicC7NzeZQx9OQ8\u002FuCjmblHgyo9cOV4Q4UlnTct4AXwWzNiS5+4w3rCcO\u002Fh5\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.2\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-M00P0dYPmEonRFUbU5QwM2ozxxgVLHHbyoeOwd\u002Fx4IDxUhTBSnzbASfa4tk2yYmc\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.2\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Breaking changes\r\n\r\n-  A new `type WebChatActivity` is introduced in the `botframework-webchat-core` package\r\n   -  If you are previously using the `type DirectLineActivity`, you may need to move to this new type\r\n   -  All Web Chat APIs will use the newer `type WebChatActivity`\r\n   -  The new `type WebChatActivity` is a well-defined type for handling activities inside Web Chat\r\n   -  The existing `type DirectLineActivity` will be used solely for communicating with `type DirectLineJSBotConnection`, a.k.a. `botframework-directlinejs` package\r\n\r\n### Fixed\r\n\r\n-  Fixes [#4102](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4102). Fixed `cldr-data-downloader` package not working properly on Windows, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4223](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4223)\r\n-  Fixes [#4232](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4232). Added `blob:` to allowed protocol list for file attachment UI (`\u003CFileContent>`), by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4233](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4233)\r\n-  Fixes [#4204](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4204). Sort using `activity.channelData['webchat:sequence-id']` and fallback to epoch time of `activity.timestamp`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4203](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4203)\r\n-  Fixes [#4264](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4264). Fixed focus trap should leave when the activity no longer contains any tabbable elements (including elements with `aria-disabled=\"true\"`), by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4265](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4265)\r\n\r\n### Added\r\n\r\n-  Resolves [#4099](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4099), added typing indicator to live region for screen reader, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4210](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4210)\r\n\r\n### Changed\r\n\r\n-  Bumped all dependencies to the latest versions, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#4195](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4195) and PR [#4230](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4230)\r\n   -  Production dependencies\r\n      -  [`@babel\u002Fruntime@7.17.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fruntime)\r\n      -  [`@emotion\u002Fcss@11.7.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@emotion\u002Fcss)\r\n      -  [`base64-arraybuffer@1.0.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fbase64-arraybuffer)\r\n      -  [`core-js@3.21.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fcore-js)\r\n      -  [`globalize@1.7.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fglobalize)\r\n      -  [`markdown-it-attrs@4.1.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmarkdown-it-attrs)\r\n      -  [`memoize-one@6.0.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmemoize-one)\r\n      -  [`mime@3.0.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmime)\r\n      -  [`prop-types@15.8.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fprop-types)\r\n      -  [`react-redux@7.2.8`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Freact-redux)\r\n      -  [`redux@4.1.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fredux)\r\n      -  [`sanitize-html@2.7.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fsanitize-html)\r\n   -  Development dependencies\r\n      -  [`@babel\u002Fcli@7.17.6`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fcli)\r\n      -  [`@babel\u002Fcore@7.17.5`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fcore)\r\n      -  [`@babel\u002Fplugin-proposal-class-properties@7.16.7`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-proposal-class-properties)\r\n      -  [`@babel\u002Fplugin-proposal-object-rest-spread@7.17.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-proposal-object-rest-spread)\r\n      -  [`@babel\u002Fplugin-transform-runtime@7.17.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-transform-runtime)\r\n      -  [`@babel\u002Fpreset-env@7.16.11`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-env)\r\n      -  [`@babel\u002Fpreset-react@7.16.7`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-react)\r\n      -  [`@babel\u002Fpreset-typescript@7.16.7`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-typescript)\r\n      -  [`@babel\u002Fruntime@7.17.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fruntime)\r\n      -  [`@emotion\u002Freact@11.8.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@emotion\u002Freact)\r\n      -  [`@fluentui\u002Freact@8.57.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@fluentui\u002Freact)\r\n      -  [`@types\u002Fnode@17.0.21`](https","2022-05-09T21:09:18",{"id":231,"version":232,"summary_zh":233,"released_at":234},99947,"v4.15.1","### Subresource Integrity\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-e2zspajCn8G7DzOMi\u002F9M6fdAPERyN5S11E5QzrAK0HXxMwyw7a6\u002FFHLie73RUzdD\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.1\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-9o6xJEK8DboSm23+cyRi\u002F6ROyiQFbCXgSN+GkpMXVtIC0QeYRPA9lD8MlXPikyub\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.1\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-gy9DN+p1zEnZY24LW0HtuFhmhF17qhO8QM0vlrZupIXggEUih+uYAPZ+uGCTT1f7\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.1\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Fixed\r\n\r\n-  Fixes [#4196](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4196). Should render\u002Fmount to a detached DOM node without errors, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4197](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4197)","2022-03-04T20:25:14",{"id":236,"version":237,"summary_zh":238,"released_at":239},99948,"v4.15.0","### Subresource Integrity\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-w3rSEnqXidJWdUi5rzyfT+ge4heH7DfPfZnzwfFPqRx5s\u002FTxTRhFbizmbX6kQe2v\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.0\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-TtowdQBmshxMHrPmS4fj8c7Y1++TrzO2Z7TvQ1lF9EskDY6cchxo8RO9\u002FJT21JTL\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.0\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-oQJ4itwTnOHHjD3Gkl9pUfcNMZDSG9LixGJ5H5ib50uBihBhAtWkkFzvOvUK9YPj\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.15.0\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Breaking changes\r\n\r\n-  New [`Map` object](https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FGlobal_Objects\u002FMap) polyfill is required for IE11 when using NPM version of Web Chat:\r\n   -  `Map` object polyfill is not required when using ES5 bundle of Web Chat from our CDN (`webchat-es5.js`)\r\n   -  If you are seeing new errors while loading NPM version of Web Chat under IE11, please add a polyfill\r\n   -  We recommend `core-js` package, it can be loaded by `import 'core-js\u002Ffeatures\u002Fmap'`\r\n   -  Our current list of required polyfills can be found in [`packages\u002Fbundle\u002Fsrc\u002Fpolyfill.ts`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fpackages\u002Fbundle\u002Fsrc\u002Fpolyfill.ts)\r\n-  Style options are introduced to send button for improved accessibility:\r\n   -  `suggestedActionBackground` and `suggestedActionXXXBackground` are being deprecated in favor of `suggestedActionBackgroundColor` and `suggestedActionBackgroundColorOnXXX` respectively, for consistencies when porting to other platforms\r\n   -  `suggestedActionDisabledXXX` is being renamed to `suggestedActionXXXOnDisabled`, for consistencies with other style options\r\n   -  `suggestedActionXXXOnActive`, `suggestedActionXXXOnFocus`, `suggestedActionXXXOnHover` are introduced for styling per user gestures\r\n   -  `suggestedActionKeyboardFocusIndicatorXXX` are introduced for styling the \"focus ring\" when [focused using a keyboard](https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002F:focus-visible)\r\n\r\n### Added\r\n\r\n-  Adds `eslint-plugin-security`, consolidate `.eslintrc.yml` at project root, and treat warnings as errors, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4079](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4079)\r\n-  Adds allowed protocol list to file attachment and OAuth card, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4143](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4143)\r\n\r\n### Fixed\r\n\r\n-  Fixes [#4018](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4018). When using \u003Ckbd>TAB\u003C\u002Fkbd> or \u003Ckbd>SHIFT\u003C\u002Fkbd> + \u003Ckbd>TAB\u003C\u002Fkbd> key to focus on the transcript, it should select the last activity, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4035](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4035)\r\n-  Fixes [#4020](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4020). With or without scan mode turned on, screen reader users should be able to press \u003Ckbd>ENTER\u003C\u002Fkbd> to focus on interactive activity, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4041](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4041)\r\n-  Fixes [#4021](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4021). For screen reader usability, suggested actions container should not render \"Is empty\" alt text initially, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4041](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4041)\r\n-  Fixes [#4029](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4029). Added new keyboard focus indicator for suggested actions, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4035](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4035)\r\n   -  New style options are introduced: `suggestedActionXXXOnActive`, `suggestedActionXXXOnFocus`, `suggestedActionXXXOnHover`, `suggestedActionKeyboardFocusIndicatorXXX`\r\n   -  Style options are renamed: `suggestedActionDisabledXXX` become `suggestedActionXXXOnDisabled`\r\n-  Fixes [#4028](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4028). Added new keyboard focus indicator for send box buttons, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4035](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4035)\r\n   -  New style options are introduced: `sendBoxButtonXXXOnActive`, `sendBoxButtonXXXOnFocus`, `sendBoxButtonXXXOnHover`, `sendBoxButtonKeyboardFocusIndicatorXXX`\r\n-  Fixes [#4015](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4015). Added `role=\"heading\"` to titles of rich card, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#4074](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4074)\r\n-  Fixes [#4081](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4081). Updated typing for `StyleOptions.suggestedActionsStackedOverflow`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fc","2022-03-03T20:20:53",{"id":241,"version":242,"summary_zh":243,"released_at":244},99949,"v4.14.1","### Subresource Integrity\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-uJWBe8iPb6wN8\u002FAaLQ0UKjgYEtWY9uIVgpkAID5kUNo2sV9hYmFbTDQXeRXyq7bl\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.14.1\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-R4Eevwf75H8RQkTqCaFNpvO0V9nq+heLX30jLGKNrAICynjuHUbMo7D2usohGsRu\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.14.1\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-Xyp6O3TOCrP+PVhd15I1Ehs8QTga7zqc\u002FKYj6Idr9MbR10\u002FSX5p6pSBhTAvAT\u002FSd\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.14.1\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Fixed\r\n\r\n-  Fixes [#3968](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3968). Fix typing for `usePerformCardAction` hook, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#3969](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3969)\r\n\r\n### Changed\r\n\r\n-  Resolves [#4017](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F4017). In samples, moved [`react-scripts`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Freact-scripts`) to `devDependencies`, in PR [#4023](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4023)\r\n-  Forked [`cldr-data`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fcldr-data) and [`cldr-data-downloader`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fcldr-data-downloader), in PR [#3998](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3998)\r\n   -  Moved source code to under `.\u002Fsrc` folder\r\n   -  Moved to `fs.readFileSync()` from `require()` when reading JSON files\r\n   -  Moved to `node:fs.mkdir()` and removed `mkdirp`\r\n   -  Moved tests from `node:assert` to Jest\r\n   -  Updated Unicode CLDR download folder to `\u002Fdist\u002F` folder from project root\r\n   -  Moved from Grunt\u002FJSHint to [`eslint`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Feslint)\r\n   -  Upgraded from CommonJS to ES Module\r\n   -  Use [`read-pkg-up`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fread-pkg-up) to determines parent `package.json`\r\n      -  In Web Chat, since we use `lerna` to run the `install` script, we need to relax how `cldr-data` read from parent `package.json`\r\n-  Updated peer dependency of `react` to `>= 16.8.6`, in PR [#3996](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3996)\r\n-  Bumped all dependencies to the latest versions and sample bumps, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3996](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3996), PR [#3998](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3998), and PR [#4023](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F4023)\r\n   -  Production dependencies\r\n      -  [`@babel\u002Fruntime@7.14.6`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fruntime)\r\n      -  [`abort-controller-es5@2.0.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fabort-controller-es5)\r\n      -  [`botframework-directlinejs@0.15.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fbotframework-directlinejs)\r\n      -  [`core-js@3.15.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fcore-js)\r\n      -  [`event-target-shim@6.0.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fevent-target-shim)\r\n      -  [`markdown-it-attrs-es5@2.0.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmarkdown-it-attrs-es5)\r\n      -  [`markdown-it@12.1.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmarkdown-it)\r\n      -  [`memoize-one@5.2.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmemoize-one)\r\n      -  [`p-defer-es5@2.0.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fp-defer-es5)\r\n      -  [`p-defer@4.0.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fp-defer)\r\n      -  [`react-redux@7.2.4`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Freact-redux)\r\n      -  [`web-speech-cognitive-services@7.1.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fweb-speech-cognitive-services)\r\n   -  Development dependencies\r\n      -  [`@babel\u002Fcli@7.14.5`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fcli)\r\n      -  [`@babel\u002Fcore@7.14.6`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fcore)\r\n      -  [`@babel\u002Fplugin-proposal-class-properties@7.14.5`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-proposal-class-properties)\r\n      -  [`@babel\u002Fplugin-proposal-object-rest-spread@7.14.7`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-proposal-object-rest-spread)\r\n      -  [`@babel\u002Fplugin-transform-runtime@7.14.5`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-transform-runtime)\r\n      -  [`@babel\u002Fpreset-env@7.14.7`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-env)\r\n      -  [`@babel\u002Fpreset-react@7.14.5`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-react)\r\n      -  [`@babel\u002Fpreset-typescript@7.14.5`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-typescript)\r\n      -  [`@babel\u002Fruntime@7.14.6`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fruntime)\r\n      -  [`@emotion\u002Freact@11.4.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@emotion\u002Freact)\r\n      -  [`@fluentui\u002Freact@8.22.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@fluentui\u002Freact)\r\n      -  [`@types\u002Fnode@16.3.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@types\u002Fnode)\r\n      -  [`@types\u002Freact-dom@17.0.9`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@types\u002Freact-dom)\r\n      -  [`@types\u002Freact@17.0.14`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@types\u002Freact)\r\n      -  [`@typescript-eslint\u002Feslint-plugin@4.28.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@typescript-eslint\u002Feslint-plugin)\r\n      -  [`@t","2021-09-08T19:30:05",{"id":246,"version":247,"summary_zh":248,"released_at":249},99950,"v4.14.0","### Subresource Integrity\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-hXz10Qsp8m3FpR+4hxcQCYezS77mZKSB\u002Fk\u002FG62JsQqdgIAn23zLkarnuK+5Qrjz2\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.14.0\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-apZcViyYAeDhjrDJ0l1qVdlGkejY0+pIk8wsQBGc8xN1OqbWbDTjRbY2AlvgJMQW\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.14.0\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-Zj\u002FZWIYzMSTk+hREAhqE9Jq2whlhUh3jtWC11HH8w6KMdmAuZtJKmdvzMDLfNqDa\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.14.0\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Breaking changes\r\n\r\n-  A new style option `scrollToEndButtonBehavior` is introduced to control when the scroll to end button should show (formerly \"new messages\" button):\r\n   -  `styleOptions.hideScrollToEndButton` has been deprecated. To hide the scroll to end button, set `styleOptions.scrollToEndButtonBehavior` to `false`;\r\n   -  `styleOptions.newMessageButtonFontSize` has been renamed to `styleOptions.scrollToEndButtonFontSize` to better reflect its purpose.\r\n\r\n### Added\r\n\r\n-  Cleanup repo URLs to point to main branch, by [@corinagum](https:\u002F\u002Fgithub.com\u002Fcorinagum), in PR [#3870](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3870)\r\n-  Resolves [#3557](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3557) and [#3736](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3736). Improved test harness and added browser pooling, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#3871](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3871)\r\n-  Resolves [#3788](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3788). Added `localTimestamp` and `localTimezone` (if available) to all outgoing activities, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#3896](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3896)\r\n-  Resolves [#3925](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3925). Added `scrollToEndButtonBehavior` to control when the scroll to end button should show, removed `hideScrollToEndButton`, and renamed `newMessagesButtonFontSize` to `scrollToEndButtonFontSize`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#3926](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3926).\r\n   -  Values for `scrollToEndButtonBehavior`:\r\n      -  If unset, will maintain same behavior as previous versions, same as `\"unread\"`;\r\n      -  `\"unread\"` will show when there are any unread and offscreen messages (default);\r\n      -  `\"any\"` will show when there are any offscreen messages;\r\n      -  `false` will always hide the button.\r\n   -  Added new [`scrollToEndButtonMiddleware`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmain\u002Fpackages\u002Fapi\u002Fsrc\u002Ftypes\u002FscrollToEndButtonMiddleware.ts) to customize the appearance of the scroll to end button.\r\n-  Resolves [#3752](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3752). Added typings (`*.d.ts`) for all public interfaces, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#3931](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3931) and [#3946](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3946)\r\n-  Resolves [#2316](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F2316). Added blessing\u002Fpriming of `AudioContext` when clicking on microphone button, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#3974](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3974)\r\n\r\n### Fixed\r\n\r\n-  Fixes [#3814](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3814). Allow carousel's scrollable content to be tabbable, by [@corinagum](https:\u002F\u002Fgithub.com\u002Fcorinagum) in PR [#3841](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3841)\r\n-  Fixes [#3834](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3834). Ensure carousel attachments are read by AT on tab focus, by [@corinagum](https:\u002F\u002Fgithub.com\u002Fcorinagum) in PR [#3841](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3841)\r\n-  Fixes [#3812](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3812). Update `adaptiveCardHostConfig` to accessible text color-contrasts, by [@corinagum](https:\u002F\u002Fgithub.com\u002Fcorinagum) in PR [#3853](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3853)\r\n-  Fixes [#3816](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3816). De-bumped Node.js engine requirement for Direct Line Speech SDK to `>= 10.14.2` from `>= 12.0.0`, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3854](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3854)\r\n-  Fixes [#3842](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3842). Updated [`husky`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fhusky), [`lint-staged`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Flint-staged) and corresponding `precommit` scripts, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim), in PR [#3871](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fp","2021-07-09T23:08:08",{"id":251,"version":252,"summary_zh":253,"released_at":254},99951,"v4.13.0","### Visual breaking changes for 4.13.0\r\n- PR [#3817](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3817)\r\n   - Markdown anchors will now include an icon and accessibility label indicating that the link will send to an external resource.\r\n\r\n\r\n### Subresource Integrity\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-Xm4uX5+AacO2cl3ffEKrytyC+iHBSsNvXrJTTzodBhgkiuxIS0YWHGq1KFcf0Rr+\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.13.0\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-wwdw+KudAKGhnGV4ewfJL1KE1dqx8DgQ6TrY3z4hIHXc1GHjuI\u002FHwoEx4p5VOGx1\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.13.0\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-WoHYVO0be3nxbYXAhMO3COEoH9aBH2TGHj\u002FLkphxECLKvlDDsobF2v8LOzeKvGSV\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.13.0\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n\r\n### Added\r\n\r\n-  Resolves [#3087](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3087). External links in Markdown will now be appended with an \"open in new window\" icon and accessibility label, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3817](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3817)\r\n-  Resolves [#2100](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F2100). Add types declarations for Style Options in api bundle, by [@corinagum](https:\u002F\u002Fgithub.com\u002Fcorinagum), in PR [#3818](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3818)\r\n\r\n### Changed\r\n\r\n-  Bumped all dependencies to the latest versions and sample bumps, by [@corinagum](https:\u002F\u002Fgithub.com\u002Fcorinagum) in PR [#3805](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3805)\r\n   -  Development dependencies\r\n      -  [`@babel\u002Fcli@7.13.10`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fcli)\r\n      -  [`@babel\u002Fcore@7.13.10`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fcore)\r\n      -  [`@babel\u002Fplugin-proposal-class-properties@7.13.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-proposal-class-properties)\r\n      -  [`@babel\u002Fplugin-proposal-object-rest-spread@7.13.8`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-proposal-object-rest-spread)\r\n      -  [`@babel\u002Fplugin-transform-runtime@7.13.10`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fplugin-transform-runtime)\r\n      -  [`@babel\u002Fpreset-env@7.13.10`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-env)\r\n      -  [`@babel\u002Fpreset-react@7.12.13`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-react)\r\n      -  [`@babel\u002Fpreset-typescript@7.13.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fpreset-typescript)\r\n      -  [`@babel\u002Fruntime@7.13.10`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fruntime)\r\n      -  [`@types\u002Fnode@14.14.35`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@types\u002Fnode)\r\n      -  [`@types\u002Freact@16.9.55`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@types\u002Freact)\r\n      -  [`@typescript-eslint\u002Feslint-plugin@4.18.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@typescript-eslint\u002Feslint-plugin)\r\n      -  [`@typescript-eslint\u002Fparser@4.18.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@typescript-eslint\u002Fparser)\r\n      -  [`babel-jest@26.6.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fbabel-jest)\r\n      -  [`eslint-plugin-prettier@3.3.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Feslint-plugin-prettier)\r\n      -  [`eslint-plugin-react-hooks@4.2.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Feslint-plugin-react-hooks)\r\n      -  [`eslint-plugin-react@7.22.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Feslint-plugin-react)\r\n      -  [`eslint@7.22.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Feslint)\r\n      -  [`husky@4.3.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fhusky)\r\n      -  [`jest-image-snapshot@4.2.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fjest-image-snapshot)\r\n      -  [`jest-junit@12.0.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fjest-junit)\r\n      -  [`jest-trx-results-processor@2.2.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fjest-trx-results-processor)\r\n      -  [`jest@26.6.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fjest)\r\n      -  [`lint-staged@10.5.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Flint-staged)\r\n      -  [`lolex@6.0.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Flolex)\r\n      -  [`node-dev@6.4.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fnode-dev)\r\n      -  [`node-fetch@2.6.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fnode-fetch)\r\n      -  [`prettier@2.2.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fprettier)\r\n      -  [`source-map-loader@1.1.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fsource-map-loader)\r\n      -  [`terser-webpack-plugin@4.2.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fterser-webpack-plugin)\r\n      -  [`typescript@4.2.3`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Ftypescript)\r\n      -  [`webpack-cli@4.2.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fwebpack-cli)\r\n      -  [`webpack-stats-plugin@1.0.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fwebpack-stats-plugin)\r\n      -  [`webpack@4.44.2`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fwebpack)\r\n   -  Production dependencies\r\n      -  [`@babel\u002Fruntime@7.13.10`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@babel\u002Fruntime)\r\n      -  [`botframework-directlinejs@0.14.1`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fbotframework-directlinejs)\r\n      -  [`globalize@1.6.0`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fglobalize)\r\n      -  [`markdown-it@12.0.4`](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fmarkdown-it)\r\n      -  [`microsoft-cognitiveservices-speech-s","2021-04-05T20:38:46",{"id":256,"version":257,"summary_zh":258,"released_at":259},99952,"v.4.12.1","## [4.12.1] - 2021-03-16\r\n\r\n```html\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-P85ESDfJwtC9CaJYhEZP2DXz7NfxR3wWdH6OyercA0qvUSUoAHJrU0776yEcnkxs\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.12.1\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-YT\u002F\u002FLqZJgkEXrmVxm6RZJKs4dSZJQo5kEX0tE9dP1XaOaVsC7NEvwnlP2gW2KWcl\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.12.1\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-Bm5FqTqjOwx2JWpJGYW1urz8ypnAJh2BELjekWc1XkYsT1lX7837Tlqxsbmoy\u002FO8\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.12.1\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n### 4.12.1 patch: New style property `adaptiveCardsParserMaxVersion`\r\n\r\nWeb Chat 4.12.1 patch includes a new style property allowing developers to choose the max Adaptive Cards schema version. See [PR #3778](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3778) for code changes. \r\n\r\nTo specify a different max version, you can adjust the style options, shown below:\r\n\r\n```js\r\n  window.WebChat.renderWebChat(\r\n    {\r\n      directLine,\r\n      store,\r\n      styleOptions: {\r\n        adaptiveCardsParserMaxVersion: '1.2'\r\n      }\r\n    },\r\n    document.getElementById('webchat')\r\n  );\r\n```\r\n\r\n- Web Chat will apply the maximum schema available according to the Adaptive Cards version (as of this patch, schema 1.3) by default.\r\n- An invalid version will revert to Web Chat's default.\r\n\r\n\r\n## CHANGELOG\r\n\r\n### Added\r\n\r\n-  Resolves [#3777](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3777). Added a new `adaptiveCardsParserMaxVersion` style options for selecting the maximum supported version when parsing an Adaptive Cards, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3778](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3778)\r\n\r\n### Fixed\r\n\r\n-  Fixes [#3773](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3773). Remove `replyToId` when using Direct Line Speech adapter, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3776](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3776)\r\n\r\n### Samples\r\n\r\n-  Fixes [#3632](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3632). Update reaction button sample : Add replyToId to the postActivity object, by [@amal-khalaf](https:\u002F\u002Fgithub.com\u002Famal-khalaf) in PR [#3769](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3769)","2021-03-16T19:26:49",{"id":261,"version":262,"summary_zh":263,"released_at":264},99953,"v.4.12.0","## Subresource integrity\r\n\r\n```\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-1hUtvbhn6rdRq7dYBczWVucaQGX53aXutn3sJ3Wj9JQHUTOeOi+ygEM0oS8\u002FYUN1\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.12.1\u002Fwebchat.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-Lo8JE8FwwWIxjxRK4348SVwbkib4+HJQfOf6amhb1Lem5aODsMLJAp9WaDrDlGDK\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.12.1\u002Fwebchat-es5.js\"\r\n>\u003C\u002Fscript>\r\n\r\n\u003Cscript\r\n  crossorigin=\"anonymous\"\r\n  integrity=\"sha384-K1x93oxVf8C0LsVAdO6sISEnUvY3urTM\u002Fa5UZjCxoiklvidmkvMN2PGGIaUa341+\"\r\n  src=\"https:\u002F\u002Fcdn.botframework.com\u002Fbotframework-webchat\u002F4.12.1\u002Fwebchat-minimal.js\"\r\n>\u003C\u002Fscript>\r\n```\r\n\r\n# Changelog\r\n## Breaking changes\r\n\r\nA new accessibility update has been added to Web Chat from PR [#3703](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3703). This change creates visual focus for the transcript (bold black border) and `aria-activedescendent` focused activity (black dashed border) by default.\r\n\r\nTo modify these styles, you can change the following props via `styleOptions`:\r\n```\r\n  transcriptActivityVisualKeyboardIndicatorColor: DEFAULT_SUBTLE,\r\n  transcriptActivityVisualKeyboardIndicatorStyle: 'dashed',\r\n  transcriptActivityVisualKeyboardIndicatorWidth: 1,\r\n  transcriptVisualKeyboardIndicatorColor: 'Black',\r\n  transcriptVisualKeyboardIndicatorStyle: 'solid',\r\n  transcriptVisualKeyboardIndicatorWidth: 2,\r\n```\r\n\r\nThe above code shows the default values you will see on Web Chat.\r\n\r\n### Added\r\n\r\n-  Resolves [#2745](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F2745). Added new `flow` layout to suggested actions, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3641](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3641) and PR [#3748](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3748)\r\n-  Added new style options to customize auto-scroll, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3653](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3653)\r\n   -  Set `autoScrollSnapOnActivity` to `true` to pause auto-scroll after more than one activity is shown, or a number to pause after X number of activities\r\n   -  Set `autoScrollSnapOnPage` to `true` to pause auto-scroll when a page is filled, or a number between `0` and `1` to pause after % of page is filled\r\n   -  Set `autoScrollSnapOnActivityOffset` and `autoScrollSnapOnPageOffset` to a number (in pixels) to overscroll\u002Funderscroll after the pause\r\n-  Supports multiple transcripts in a single composition, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3653](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3653)\r\n-  Resolves [#3368](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3368). Added new `sendBoxButtonAlignment` for button alignment in multi-line text mode, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3668](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3668)\r\n-  Resolves [#3666](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3666). Added support of sovereign clouds when using Direct Line Speech, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3694](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3694)\r\n   -  Please refer to [`DIRECT_LINE_SPEECH.md`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fblob\u002Fmaster\u002Fdocs\u002FDIRECT_LINE_SPEECH.md#directlinespeechcredentials) for instructions\r\n-  Resolves [#2996](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F2996). Added transcript navigation by keyboard navigation keys, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3703](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3703)\r\n-  Resolves [#3544](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3544). Send user ID from props to chat adapter, by [@timenick](https:\u002F\u002Fgithub.com\u002Ftimenick) in PR [#3544)(https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3544).\r\n-  Resolves [#3562](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3562). Add button word wrap to suggested actions stacked layout, by [@corinagum](https:\u002F\u002Fgithub.com\u002Fcorinagum), in PR [#3728](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3728) and [#3745](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3745)\r\n-  Resolves [#3658](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3658). Added new `containerRole` to default style options, by [@nfreear](https:\u002F\u002Fgithub.com\u002Fnfreear) in PR [#3669](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3669)\r\n-  Resolves [#3754](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3754). Added new `useObserveTranscriptFocus` hook, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3755](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpull\u002F3755)\r\n-  Translation for Yue, by [@compulim](https:\u002F\u002Fgithub.com\u002Fcompulim) in PR [#3749](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fpulls\u002F3749)\r\n\r\n### Fixed\r\n\r\n-  Fixes [#3278](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FBotFramework-WebChat\u002Fissues\u002F3278). Update `HOOKS.md` v","2021-03-01T23:05:20"]