Вызов Watson Personality Insights с локального хоста

Я уже загрузил Personality Insights из Bluemix и могу успешно запустить его в своей командной строке, но как мне вставить его на свою веб-страницу и запустить локально?

У кого-нибудь есть пример кода для 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));
});    

person Demotivated    schedule 06.09.2016    source источник
comment
Можете ли вы добавить, что вы видите здесь не так? Мне нужно больше вывода, например, ошибки консоли и т. д.   -  person broguinn    schedule 07.09.2016
comment
в моей командной строке нет ничего плохого, и я хочу использовать его на своем веб-сайте locahost. Я хочу интегрироваться на свою страницу. Я ищу пример или если бы sb мог предоставить мне шаги, которые были бы отличными   -  person Demotivated    schedule 07.09.2016


Ответы (2)


Это не рекомендуется, потому что теоретически вы можете напрямую сделать вызов с веб-страницы (java-скрипт на стороне браузера) в службу REST Watson Personality Insights, но тогда вы отдадите учетные данные.

Поэтому рекомендуемый способ сделать это — использовать промежуточный компонент стиля HTTP-прокси/шлюза (который также может быть реализован в Node.js).

Таким образом, в основном ваш java-скрипт на основе браузера будет вызывать вашу собственную службу REST в IBM Bluemix (например, приложение Node.js, но также может использовать OpenWhisk, NodeRED, JAVA,...), и вызов службы Watson выполняется оттуда, поэтому ваши учетные данные сохранены (либо жестко запрограммируйте их, либо используйте VCAP_SERVICES)

Изменить: 7.9.16: Если вы действительно хотите сделать это локально, просто используйте для этого локальный экземпляр node.js, и вы можете получить учетные данные службы Watson, войдя в веб-интерфейс Bluemix. Это описано здесь

Пользовательский интерфейс немного изменился, поэтому вам нужно нажать верхнюю левую кнопку, выбрать Watson->Personality Insights->Service Credentials->View Credentials (в записи Credentials-1)

person Romeo Kienzler    schedule 07.09.2016
comment
это только для моего мастер-тезиса. Я не буду использовать его на живом веб-сайте, но, поскольку я новичок, я не знаю шагов или, по крайней мере, примера, как это сделать. Я хочу добавить кнопку на свою страницу, по клику отображает вывод службы - person Demotivated; 07.09.2016
comment
О @Romeo, если бы это было о bluemix, я бы уже это сделал. моя проблема не в учетных данных. чтобы импортировать его на мой локальный хост, просто включите index.js в мой другой файл? Я выдает ошибку, требование не определено - person Demotivated; 07.09.2016
comment
Не могли бы вы опубликовать ошибку? Вы работаете в веб-браузере (например, в файле html) или на локальном сервере Node.JS? - person Romeo Kienzler; 10.09.2016
comment
я уже запускаю его на локальном хосте, я обнаружил это, теперь я хочу знать, как я могу передать php var из файла php в это приложение узла - person Demotivated; 10.09.2016

Вот код, который я использовал для запроса 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>

надеюсь, это поможет

person Adrian    schedule 22.09.2016
comment
как вы его запускаете? Я нажимаю npm install app, он отображает много ошибок - person Demotivated; 22.09.2016