2017-01-31 3 views
2

Я новичок в Angular, и я хотел бы интегрировать боттон Watson в мой угловой модуль, но я не могу включить библиотеку в Angular. Я использую botkit-middleware-watson, чтобы получить ответ Уотсона.IBM 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); 
}); 

Теперь я хочу построить угловое приложение с помощью этого кода, однако я не могу понять, как импортировать библиотеку в Угловом. Я использую следующие 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 not defined».

Есть ли способ получить что-то вроде требования или получить работу библиотеки, чтобы заставить это угловое приложение работать?

Благодаря Алекси

EDIT:

Вы сказали, что я могу использовать Requirejs, но в обходе Угловой модели права? Существует ли «чистый» способ сделать это?

ответ

1

Я делал базовую ошибку начинающего пользователя для NodeJS? Я создал экспресс-приложение с сервером и передним каталогом, и все в порядке с остальными вызовами

1

Как видно here:

require() является функцией NodeJS, ваш угловой контроллер будет выполнен в браузере, который не имеет этого встроенную функцию. Если вы хотите воспроизвести это поведение на стороне клиента, вы должны посмотреть на RequireJS

+0

Спасибо за ответ, есть ли лучший способ, чем двухполярный шаблон MVC? –

Смежные вопросы