javascript - IBM Watson Conversation - Angular 集成

标签 javascript angularjs node.js watson

我是 Angular 新手,我想将 Watson 对话机器人集成到我的 Angular 模块中,但我无法在 Angular 中包含库。我正在使用 botkit-middleware-watson 来获取 Watson 答案。

使用下面的代码,我设法让 slackBot 运行。

require('dotenv').load();
var Botkit = require('botkit');
var express = require('express');
var middleware = require('botkit-middleware-watson')({
  username: process.env.CONVERSATION_USERNAME,
  password: process.env.CONVERSATION_PASSWORD,
  workspace_id: process.env.WORKSPACE_ID,
  version_date: '2016-09-20'
});

// Configure your bot.
var slackController = Botkit.slackbot();
var slackBot = slackController.spawn({
  token: process.env.SLACK_TOKEN
});
slackController.hears(['.*'], ['direct_message', 'direct_mention', 'mention'], function(bot, message) {
  slackController.log('Slack message received');

  middleware.interpret(bot, message, function(err) {
    if (!err) {
      console.log(message.watsonData.output.text);
      bot.reply(message.watsonData.output.text);
      }
    }
    });

slackBot.startRTM();

// Create an Express app
var app = express();
var port = process.env.PORT || 5000;
app.set('port', port);
app.listen(port, function() {
  console.log('Client server listening on port ' + port);
});

现在我想使用这段代码构建一个 Angular 应用程序,但是我不知道如何在 Angular 中导入库。我使用以下index.html和app.js

index.html

<!DOCTYPE html>
<!--[if lt IE 7]>      <html lang="en" ng-app="myApp" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html lang="en" ng-app="myApp" class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html lang="en" ng-app="myApp" class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en" ng-app="Watson" class="no-js"> <!--<![endif]-->
<head>
  <!--<script type="text/javascript" src ="js/dependencies.js"></script>-->

  <!--Import Google Icon Font-->
  <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  <!--Import materialize.css-->
  <link type="text/css" rel="stylesheet" href="css/materialize.min.css"  media="screen,projection"/>

  <!--Import jQuery before materialize.js-->
  <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
  <script type="text/javascript" src="js/materialize.min.js"></script>

  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script>
  <script type="text/javascript" src ="js/app.js"></script>
</head>
<h1 align="center">Assistant Watson </h1>
<body>
    <div>
      <i class="material-icons prefix">forum</i>
      <input ng-model="inputMessage" type="text" class="validate">


      <div ng-controller="controllerMessage">
        <a ng-click="sendMessage()" ng-init="Bonjour" class="waves-effect waves-light btn">Send message</a>
        <p>Votre message est : {{message}}</p>
      </div>

    </div>

  <!-- Chat -->

</body>
</html>

app.js

'use strict';
/*
var connector = require('./connector.js');
var Botkit = require('botkit');
var express = require('express');
var middleware = require('botkit-middleware-watson')({
  username: process.env.CONVERSATION_USERNAME,
  password: process.env.CONVERSATION_PASSWORD,
  workspace_id: process.env.WORKSPACE_ID,
  version_date: '2016-09-20'
});
*/

// declare a module

var myModule = angular.module('Watson', [])
.controller('controllerMessage', ['$scope', function($scope, $http) {
    $scope.message="Bonjour";
    $scope.sendMessage = function() {
        console.log($scope.inputMessage);
        $scope.message = $scope.inputMessage;
          //use middleware here
}}]);

但是当我执行 require(something) 时,出现错误:“require 未定义”。

有没有办法获得类似需求的东西或让库工作以使这个 Angular 应用程序工作?

谢谢,亚历克西

编辑:

你说我可以使用 Requirejs,但它绕过了 Angular 模型,对吗?有没有一种“更干净”的方法来做到这一点?

最佳答案

如图所示here :

require() 是一个 NodeJS 函数,您的 Angular Controller 将在浏览器中执行,浏览器没有该内置函数。如果您想在客户端复制该行为,您应该查看 RequireJS

关于javascript - IBM Watson Conversation - Angular 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41957763/

相关文章:

javascript - 中心/裁剪图像 - 使用 Cycle2 插件的响应式幻灯片

javascript - 使用 JavaScript 获取日期范围内的特定日期

node.js - Node JS Html-pdf : create different header footer for first and last page

javascript - 每个请求使用不同的 cookie 域进行快速 session ?

asp.net - 我可以在我的 Asp.net Web 应用程序中使用 Node.js 吗?

javascript - js继承的类实例未定义

javascript - 在 webpack 构建过程后连接 JS 文件

javascript - Angular 、选择、设置默认值

javascript - 在 Windows7 上安装 SRA-SiliconValley Jalangi 失败

c# - 如何访问 web api Controller 中的 mvc Controller 以从 View 中获取 pdf