我正在尝试制作一个使用Twilio Client API和Node.js后端的Chrome扩展程序,以便从浏览器拨打电话。
我从扩展程序中运行Twilio时遇到了一些麻烦,我得到了"Twilio is not defined"
。
这是我的清单文件:
{
"name": "<NAME>",
"version": "0.0.1",
"manifest_version": 2,
"permissions": [
"contextMenus",
"http://localhost:3000/",
"http://*.twilio.com/*",
"https://*.twilio.com/*"
],
"background": {
"scripts": ["lib/jquery-1.7.2.min.js","lib/twilio.js","background.js"]
},
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*", "file:///*/*"],
"css": ["css/styles.css"],
"js": ["lib/jquery-1.7.2.min.js"]
}
],
"icons":{
"128":"icon_128.png"
}
}
这是我的background.js:
console.log('Init background.js...');
function callNumber(info, tab) {
alert(info.selectionText);
}
chrome.contextMenus.create ({
"title":"%s",
"contexts": ["all"],
"onclick": callNumber
});
// get capability token
$(function() {
$.get('http://localhost:3000/token', function(resp){
initTwilio(resp);
});
});
function initTwilio(token) {
// init twilio
Twilio.Device.setup(token);
}
有关如何使用Twilio Client API的任何建议吗?
谢谢!
答案 0 :(得分:2)
Twilio脚本希望从Twilio服务器加载。它依赖于它来找到库的其余部分。为了让它快乐,您可以尝试以下方法:
删除清单的当前background
部分,并将其替换为以下行:
"content_security_policy": "script-src 'self' https://static.twilio.com; object-src 'self'",
"background": { "page": "background.html" },
并在您的扩展程序中添加名为 background.html 的文件,其中包含以下内容:
<script src="lib/jquery-1.7.2.min.js"><script>
<script src="https://static.twilio.com/libs/twiliojs/1.1/twilio.min.js"><script>
<script src="background.js"><script>
<强>更新强>
这将失败,因为加载程序尝试使用以//
开头的网址,该网址在Chrome扩展程序页面中无法正常使用。所以更容易解决的问题是:
lib/twilio.js
替换为http://static.twilio.com/libs/twiliojs/refs/7ed9035/twilio.min.js