Twilio的回应并且能够重现它。短期修复是监听窗口的focus
事件并再次请求权限。这不是很好,因为它似乎只适用于锁定一小段时间的屏幕:
window.addEventListener('focus', event => {
navigator.mediaDevices.getUserMedia({ video: false, audio: true });
});
另一个缺点是,即使他们之前已被拒绝或尚未被要求,它也会在焦点时立即请求用户的许可。他们建议在窗口焦点调用getUserMedia
API之前跟踪用户是否已授予权限的状态。
正如Philnash在评论中提到的那样,这很可能是一个苹果公司的错误,因为它在很长时间的锁定屏幕中得到了证明。
这个问题是关于使用Twilio JS SDK捕获音频输入并使用TWIML记录它。
使用twilio client quickstart,我获得了成功录音的间歇性结果。它似乎与某些不稳定的浏览器状态有关,在锁定和解锁屏幕后无法读取输入流。
我很乐意提供我正在使用的完整代码,但AFAIK我所做的唯一相关更改是回调路由,现在返回<Record>
TWIML动词。
// Create a TwiML voice response
const response = new VoiceResponse();
response.record({
timeout: 10,
transcribe: true,
action: '/callback',
maxLength: 180,
recordingStatusCallback: '/callback',
});
return response.toString();
任何可以帮助诊断的Twilio人?复制相当简单。
不会捕获音频输入。操作系统 提示您允许访问麦克风。
如果您尝试在没有锁定/解锁行为的情况下拨打电话,当您点按“呼叫”按钮时,它会按预期工作。我注意到的一个区别是浏览器栏中出现一个红色麦克风图标,表示浏览器正在使用音频,我猜想。在另一种情况下,没有图标可见。
恢复客户端再次工作的唯一方法是完全关闭选项卡并加载新选项卡。刷新不起作用。
对这种情况的任何想法或反馈都会很精彩!这很可能是一个Apple漏洞,但我想我会看到你们是否有任何想要分享的见解。