【问题标题】:Twilio in chrome extension - user denied access to microphonechrome 扩展中的 Twilio - 用户拒绝访问麦克风
【发布时间】:2014-12-05 07:01:36
【问题描述】:

我是 chrome 扩展的新手。是否有可能通过手动(javascript)或使用清单配置为 chrome 扩展提供麦克风访问权限。

我已通过下载 twilio.js 成功包含 twilio,并将协议更改为“https”,以便在 chrome 扩展的 background.html 中使用。

Manifest.js 字段如下:

 "permissions":["http://*/*", "https://*/*", "*://mail.google.com/*", "storage", "unlimitedStorage", "contextMenus", "cookies", "tabs", "notifications", "activeTab", "background","identity", "*://*.twilio.com/*"],

"content_security_policy": "script-src 'self' 'unsafe-eval' https://apis.google.com https://*.twilio.com; object-src 'self' https://*.twilio.com",

现在,当分机使用 twilio 拨打/接听电话并接受连接时。它从 Twilio.Device.error 方法抛出错误,如下所示

   error.message is **User denied access to microphone**.

谁能帮我解决这个错误?

【问题讨论】:

    标签: javascript google-chrome-extension twilio


    【解决方案1】:

    我找到了一种在 chrome 扩展的背景页面中启用 twilio 的变通方法。

    第一次,当我们将扩展安装到 chrome 应用程序中时。只需从扩展目录中创建一个带有虚拟 html 的新选项卡,如下代码 sn-p 并进行测试调用。

        chrome.tabs.create({'url': chrome.extension.getURL('/telephony.html')}, function(tab) {
            console.debug("Telephony Tab details are - ",tab);
        });
    

    它将提示用户访问麦克风并提供允许权限。呼叫连接后,向后台页面发送消息并在后台设置 Twilio。下次表单时可以在后台接听电话。

    【讨论】:

    • 我应该使用后台 js 代码还是 telephony.html 进行测试调用?
    【解决方案2】:

    我是 Twilio 的开发人员宣传员。

    我还没有尝试使用 Twilio 客户端在 Chrome 扩展中进行任何操作,但我查看了权限。在我看来,您需要包含 audioCapture 权限才能通过客户端使用的 getUserMedia 访问麦克风。

    我在此处查找可用权限:https://developer.chrome.com/apps/declare_permissions

    希望对您有所帮助,如果我能提供更多帮助,请告诉我。

    更新:

    如前所述,这是 Chrome 打包应用程序的页面,而不是扩展程序。

    The top answer to this question 建议在扩展的选项页面中调用getUserMedia。否则,有一个bug on Chrome open to add these permissions to extensions

    【讨论】:

    • 扩展不存在此权限。要么不需要,要么不允许扩展程序访问麦克风。
    • 更新了我的答案,显然现在不可能通过权限。在另一个答案中建议了一个 hack。
    【解决方案3】:

    最后,我以一种棘手的方式成功地使用了带有 Chrome 扩展程序的麦克风,并显示了一些错误消息,但 Twilio 功能仍然有效(呼叫和接收呼叫)。

    这是我的经验,由于 Twilio js 库会加载不允许 chrome 扩展的外部库,所以我手动下载了这两个库

    1. 来自https://static.twilio.com/libs/twiliojs/1.2/twilio.js 的 Twilio.js
    2. 第二个库来自 https://static.twilio.com/libs/twiliojs/refs/3716fe1/twilio.js (我将其命名为 twilio-lib.js)

    将这两个 js 文件保存到您的项目中并通过以下方式将其加载到清单中 内容脚本:

    "content_scripts": [
        {
          ****
          "js": [...,"lib/twilio.js","lib/twilio-lib.js",...],
          ***
        }
      ],
    

    然后编辑第一个 twilio.js; 注释第62行,第66行打算加载一个lib(第二个,twilio-lib.js,我们已经包含了它,所以没用)

    然后您可以在 chrome 扩展中使用 Twilio.Device 对象, 它会显示许多 .mp3 未找到消息,但不会阻止您使用 Twilio 客户端功能

    我也尝试在后台页面加载js,但即使我获得许可,麦克风也总是关闭。

    【讨论】:

    • 我只加载了 twiliorefs js,不需要 twilio.js 我更改了 mp3 url,我得到了声音。删除一行出错的代码。在 Chrome 扩展程序中。在您的窗口中,您应该有 url 栏以允许用户授予音频权限。如果您只是在弹出窗口中打开扩展程序而不是正常的。用户不能授予微权限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多