从本地主机调用 Watson Personality Insights
Calling Watson Personality Insights from localhost
我已经从 Bluemix 下载了 Personality Insights,我可以在我的命令行上成功地 运行 它,但是我如何将它插入我的网页并 运行 在本地?
有人有 index.js 的示例代码吗?我已经设置了服务器,但我发现很难将它集成到我的页面上。
var express = require('express');
var app = express();
var http = require('http').Server(app);
var cfenv = require("cfenv");
var appEnv = cfenv.getAppEnv();
http.listen(appEnv.port, appEnv.bind);
var PersonalityInsightsV2 = require('watson-developer-cloud/personality-insights/v2');
var personality_insights = new PersonalityInsightsV2({
username: '<YOUR-USERNAME>',
password: '<YOUR-PASSWORD>'
});
personality_insights.profile({
text: "<YOUR-100-UNIQUE-WORDS>",
language: 'en' },
function (err, response) {
if (err)
console.log('error:', err);
else
console.log(JSON.stringify(response, null, 2));
});
不推荐这样做,因为理论上您可以直接从网页(浏览器端 java 脚本)调用 Watson Personality Insights REST 服务,但随后您将泄露凭据。
因此推荐的方法是使用中间 http proxy/gateway 样式组件(也可以在 Node.js 中实现)。
所以基本上,您基于浏览器的 java 脚本将在 IBM Bluemix 上调用您自己的 REST 服务(例如 Node.js 应用程序,但也可以使用 OpenWhisk、NodeRED、JAVA、. ..) 并且从那里完成对 Watson 服务的调用,因此您的凭据已保存(硬编码,或使用 VCAP_SERVICES)
编辑:7.9.16:
如果您真的想在本地执行此操作,只需使用本地 node.js 实例即可,您可以通过登录到 Bluemix Web 界面来获取 Watson 服务的服务凭证。据描述here
UI略有变化,因此您必须单击左上角的按钮,选择 Watson->Personality Insights->Service Credentials->View Credentials(在 Credentials-1 条目上)
这是我用来从本地机器查询 API 进行测试的代码。
var watson = require('watson-developer-cloud');
var personality_insights = watson.personality_insights({
username: '<username>',
password: '<password>',
version: 'v2'
});
var express = require('express');
var app = express();
var http = require('http').Server(app);
var server_port = 8080
var server_ip_address = '127.0.0.1'
var bodyParser = require('body-parser')
app.use( bodyParser.json() );
app.use(bodyParser.urlencoded({
extended: true
}));
app.use('/', express.static(__dirname + '/public'));
app.get("/", function(req, res){
res.sendFile(__dirname + '/public/index.html');
});
app.post("/post", function(req, res){
getInsights(req.body.text,res);
});
function getInsights(text,res) {
var params = {};
params.text = text;
personality_insights.profile(params, function(error, response) {
if (error)
console.log('error:', error);
else {
res.send(JSON.stringify(response));
}
});
}
http.listen(server_port,server_ip_address, function(){
console.log( "Listening on " + server_ip_address + ", server_port " + server_port )
});
我在 public 文件夹中有一个简单的 index.html 供我输入文本并发送到 nodejs
<!doctype html>
<html>
<head>
<title>Status</title>
<style>
</style>
</head>
<body>
<div style="margin:10px"><textarea style="width:100%;height:500px;" id="text"></textarea></div>
<div>Words: <span id="count">0</span> <button onClick="onSubmit()">Submit</button></div>
<br/><br/>
<div id="response">
</div>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="Countable.js"></script>
<script>
var word_counter = 0;
var area = document.getElementById('text')
Countable.live(area, function (counter) {
$("#count").html(counter.words);
//console.log(counter);
word_counter = counter.words;
});
function onSubmit() {
if (word_counter < 100) {
$("#response").html("Please provide at least 100 words");
return;
}
var text = $("#text").val();
$.ajax({
type: "POST",
url: '/post',
data: {text:text.trim()},
dataType: "json",
success: function(data) {
$("#response").html(data);
}
})
}
</script>
</html>
希望对您有所帮助
我已经从 Bluemix 下载了 Personality Insights,我可以在我的命令行上成功地 运行 它,但是我如何将它插入我的网页并 运行 在本地?
有人有 index.js 的示例代码吗?我已经设置了服务器,但我发现很难将它集成到我的页面上。
var express = require('express');
var app = express();
var http = require('http').Server(app);
var cfenv = require("cfenv");
var appEnv = cfenv.getAppEnv();
http.listen(appEnv.port, appEnv.bind);
var PersonalityInsightsV2 = require('watson-developer-cloud/personality-insights/v2');
var personality_insights = new PersonalityInsightsV2({
username: '<YOUR-USERNAME>',
password: '<YOUR-PASSWORD>'
});
personality_insights.profile({
text: "<YOUR-100-UNIQUE-WORDS>",
language: 'en' },
function (err, response) {
if (err)
console.log('error:', err);
else
console.log(JSON.stringify(response, null, 2));
});
不推荐这样做,因为理论上您可以直接从网页(浏览器端 java 脚本)调用 Watson Personality Insights REST 服务,但随后您将泄露凭据。
因此推荐的方法是使用中间 http proxy/gateway 样式组件(也可以在 Node.js 中实现)。
所以基本上,您基于浏览器的 java 脚本将在 IBM Bluemix 上调用您自己的 REST 服务(例如 Node.js 应用程序,但也可以使用 OpenWhisk、NodeRED、JAVA、. ..) 并且从那里完成对 Watson 服务的调用,因此您的凭据已保存(硬编码,或使用 VCAP_SERVICES)
编辑:7.9.16: 如果您真的想在本地执行此操作,只需使用本地 node.js 实例即可,您可以通过登录到 Bluemix Web 界面来获取 Watson 服务的服务凭证。据描述here
UI略有变化,因此您必须单击左上角的按钮,选择 Watson->Personality Insights->Service Credentials->View Credentials(在 Credentials-1 条目上)
这是我用来从本地机器查询 API 进行测试的代码。
var watson = require('watson-developer-cloud');
var personality_insights = watson.personality_insights({
username: '<username>',
password: '<password>',
version: 'v2'
});
var express = require('express');
var app = express();
var http = require('http').Server(app);
var server_port = 8080
var server_ip_address = '127.0.0.1'
var bodyParser = require('body-parser')
app.use( bodyParser.json() );
app.use(bodyParser.urlencoded({
extended: true
}));
app.use('/', express.static(__dirname + '/public'));
app.get("/", function(req, res){
res.sendFile(__dirname + '/public/index.html');
});
app.post("/post", function(req, res){
getInsights(req.body.text,res);
});
function getInsights(text,res) {
var params = {};
params.text = text;
personality_insights.profile(params, function(error, response) {
if (error)
console.log('error:', error);
else {
res.send(JSON.stringify(response));
}
});
}
http.listen(server_port,server_ip_address, function(){
console.log( "Listening on " + server_ip_address + ", server_port " + server_port )
});
我在 public 文件夹中有一个简单的 index.html 供我输入文本并发送到 nodejs
<!doctype html>
<html>
<head>
<title>Status</title>
<style>
</style>
</head>
<body>
<div style="margin:10px"><textarea style="width:100%;height:500px;" id="text"></textarea></div>
<div>Words: <span id="count">0</span> <button onClick="onSubmit()">Submit</button></div>
<br/><br/>
<div id="response">
</div>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="Countable.js"></script>
<script>
var word_counter = 0;
var area = document.getElementById('text')
Countable.live(area, function (counter) {
$("#count").html(counter.words);
//console.log(counter);
word_counter = counter.words;
});
function onSubmit() {
if (word_counter < 100) {
$("#response").html("Please provide at least 100 words");
return;
}
var text = $("#text").val();
$.ajax({
type: "POST",
url: '/post',
data: {text:text.trim()},
dataType: "json",
success: function(data) {
$("#response").html(data);
}
})
}
</script>
</html>
希望对您有所帮助