Bot Framework Composer创建的Node回声机器人Web Chat无语音输入问题
解决Web Chat无语音输入选项的问题
核心原因
Bot Framework Emulator会自动集成语音能力,但Web Chat需要显式配置语音服务参数才能启用语音输入——即使Composer端已开启语音功能,Web Chat端仍需单独配置。
具体解决步骤
1. 准备语音服务凭证
从Azure门户的语音服务资源中,获取你的语音服务密钥和区域(例如eastus)。
2. 修改Web Chat嵌入代码
默认嵌入代码不包含语音配置,需添加语音相关参数到Web Chat初始化逻辑中:
const directLine = window.WebChat.createDirectLine({ token: '你的Direct Line令牌' }); const webChatConfig = { directLine: directLine, speechOptions: { speechRecognitionEndpoint: 'wss://你的语音服务区域.stt.speech.microsoft.com/speech/universal/v2', speechSynthesisEndpoint: 'https://你的语音服务区域.tts.speech.microsoft.com/cognitiveservices/v1', speechRecognitionKey: '你的语音服务密钥', speechSynthesisKey: '你的语音服务密钥' } }; window.WebChat.renderWebChat(webChatConfig, document.getElementById('webchat'));
注意:将代码中的占位符替换为实际的语音服务区域、密钥和Direct Line令牌。
3. 确认Composer端配置正确性
再次检查Composer的以下配置:
- 进入
项目设置>发布>语音,确认已勾选启用语音,并填入正确的语音服务密钥和区域 - 查看机器人的
appsettings.json,确保包含以下配置项:"SpeechServices": { "SpeechSubscriptionKey": "你的语音服务密钥", "SpeechRegion": "你的语音服务区域" }
4. 检查浏览器麦克风权限
确保Web页面已获取麦克风权限,浏览器首次调用语音输入时会弹出权限请求,需选择允许。
额外排查点
- 确认Direct Line已与机器人正确关联
- 打开浏览器控制台,查看是否有语音服务相关的错误日志(如密钥无效、区域不匹配等)
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

