【问题标题】:Calling Watson Personality Insights from localhost从 localhost 调用 Watson Personality Insights
【发布时间】:2016-09-06 19:30:02
【问题描述】:

我已经从 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));
});    

【问题讨论】:

  • 你能在这里添加你看到的错误吗?我需要更多输出,例如控制台错误等。
  • 没有任何 wrog 它在我的命令行中工作并且想在我的 locahost 网站上使用它。我想在我的页面上集成。我正在寻找一个例子或者如果 sb 可以为我提供很棒的步骤

标签: node.js ibm-cloud ibm-watson personality-insights


【解决方案1】:

不建议这样做,因为理论上您可以直接从网页(浏览器端 java 脚本)调用 Watson Personality Insights REST 服务,但随后您将放弃凭据。

因此,推荐的方法是使用中间的 http 代理/网关样式组件(也可以在 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 条目上)

【讨论】:

  • 这仅适用于我的硕士论文。我不会在实时网站上使用它,但由于我是初学者,我不知道步骤或至少一个示例如何做到这一点。我想在我的页面上添加一个按钮,onclick显示服务的输出
  • O @Romeo 如果它是关于 bluemix 我已经完成了。我的问题不是凭证。我只是想要一个已经完成它的例子,我已经告诉过你我运行它我的命令行没问题,但是如何在我的本地主机上导入它,基本上只是将 index.js 包含到我的其他文件中?我给了我一个错误,要求未定义
  • 能否请您发布错误?您是在 Web 浏览器(例如 html 文件)还是在本地 Node.JS 服务器上运行?
  • 我已经在 localhost 上运行它,我发现了,现在我想知道如何将 php var 从 php 文件传递​​到此节点应用程序
【解决方案2】:

这是我用来从本地机器查询 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 )
});

我在公共文件夹中有一个简单的 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>

希望对你有帮助

【讨论】:

  • 你是怎么运行的?我点击 npm install app 显示很多错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
相关资源
最近更新 更多