Skip to content

Commit 5708b1d

Browse files
committed
Migrate nodes to ibm-watson dependancy
1 parent 6964497 commit 5708b1d

File tree

8 files changed

+50
-49
lines changed

8 files changed

+50
-49
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ Node-RED Watson Nodes for IBM Cloud
1111
- Node-RED & IBM-Watson & Use of promises on API invokation & IAM URL construct migration & Removal of default endpoint of
1212
- Speech to Text node
1313
- Speech to Text Corpus Builder node
14+
- Natural Language Understandig node
15+
- New NLU Model Manager node.
1416

1517
### New in version 0.8.0
1618
- In the 0.8.x releases the nodes are migrated to a node-red 1.0.x input

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"watson-language-translator-util-v3": "services/language_translator_util/v3.js",
4848
"watson-natural-language-classifier-v1": "services/natural_language_classifier/v1.js",
4949
"watson-natural-language-understanding-v1": "services/natural_language_understanding/v1.js",
50+
"watson-natural-language-understanding-model-manager-v1": "services/natural_language_understanding/v1-model-manager.js",
5051
"watson-personality-insights-v3": "services/personality_insights/v3.js",
5152
"watson-speech-to-text-v1": "services/speech_to_text/v1.js",
5253
"watson-speech-to-text-corpus-builder-v1": "services/speech_to_text/v1-corpus-builder.js",

services/natural_language_understanding/v1.html

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,6 @@
4545
</div>
4646

4747
<div class="form-row credentials">
48-
<label>&nbsp;</label>
49-
<input type="checkbox" id="node-input-default-endpoint" style="display: inline-block; width: auto; vertical-align: top;">
50-
<label for="node-input-default-endpoint" style="width: 70%;"> Use Default Service Endpoint</label>
51-
</div>
52-
<div class="form-row">
5348
<label for="node-input-service-endpoint"><i class="fa fa-tag"></i> Service Endpoint</label>
5449
<input type="text" id="node-input-service-endpoint" placeholder="https://gateway.watsonplatform.net/natural-language-understanding/api">
5550
</div>
@@ -340,10 +335,6 @@
340335
+ ', #node-input-semantic-keywords'
341336
+ ', #node-input-maxsemantics'));
342337

343-
344-
nluV1.CreateIListener($('#node-input-default-endpoint'),
345-
$('#node-input-service-endpoint'), true);
346-
347338
nluV1.CreateIListener($('#node-input-syntax'),
348339
$('#node-input-syntax-sentences'
349340
+ ', #node-input-syntax-tokens-lemma'
@@ -404,8 +395,7 @@
404395
'syntax-sentences': {value: false},
405396
'syntax-tokens-lemma': {value: false},
406397
'syntax-tokens-pos': {value: false},
407-
'default-endpoint' :{value: true},
408-
'service-endpoint' :{value: 'https://gateway.watsonplatform.net/natural-language-understanding/api'}
398+
'service-endpoint' :{value: ''}
409399
},
410400
credentials: {
411401
username: {type:"text"},

services/natural_language_understanding/v1.js

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515
**/
1616

1717
module.exports = function (RED) {
18-
const SERVICE_IDENTIFIER = 'natural-language-understanding';
19-
const NaturalLanguageUnderstandingV1 = require('watson-developer-cloud/natural-language-understanding/v1');
18+
const SERVICE_IDENTIFIER = 'natural-language-understanding',
19+
NaturalLanguageUnderstandingV1 = require('ibm-watson/natural-language-understanding/v1'),
20+
{ IamAuthenticator } = require('ibm-watson/auth');
2021

2122
const NLU_FEATURES = {
2223
'categories': 'categories',
@@ -44,11 +45,6 @@ module.exports = function (RED) {
4445
endpoint = '',
4546
sEndpoint = 'https://gateway.watsonplatform.net/natural-language-understanding/api';
4647

47-
function reportError(node, msg, message) {
48-
var messageTxt = message.error ? message.error : message;
49-
node.status({fill:'red', shape:'dot', text: messageTxt});
50-
node.error(message, msg);
51-
}
5248

5349
function initialCheck(u, p, k) {
5450
if (!k && (!u || !p)) {
@@ -84,7 +80,7 @@ module.exports = function (RED) {
8480
var limitCharacters = parseInt(config.limittextcharacters);
8581

8682
if (! isNaN(limitCharacters) && 0 < limitCharacters) {
87-
options.limit_text_characters = limitCharacters;
83+
options.limitTextCharacters = limitCharacters;
8884
}
8985

9086
return Promise.resolve();
@@ -216,35 +212,37 @@ module.exports = function (RED) {
216212
}
217213

218214
function invokeService(options) {
219-
var nlu = null,
215+
let nlu = null,
216+
authSettings = {};
220217
serviceSettings = {
221-
version: '2018-11-16',
218+
version: '2019-07-12',
222219
headers: {
223220
'User-Agent': pkg.name + '-' + pkg.version
224221
}
225222
};
226223

227224
if (apikey) {
228-
serviceSettings.iam_apikey = apikey;
225+
authSettings.apikey = apikey;
229226
} else {
230-
serviceSettings.username = username;
231-
serviceSettings.password = password;
227+
authSettings.username = username;
228+
authSettings.password = password;
232229
}
230+
serviceSettings.authenticator = new IamAuthenticator(authSettings);
233231

234232
if (endpoint) {
235233
serviceSettings.url = endpoint;
236234
}
237235

238236
nlu = new NaturalLanguageUnderstandingV1(serviceSettings);
239237

240-
var p = new Promise(function resolver(resolve, reject){
241-
nlu.analyze(options, function(err, data) {
242-
if (err) {
238+
var p = new Promise(function resolver(resolve, reject) {
239+
nlu.analyze(options)
240+
.then((response) => {
241+
resolve(response);
242+
})
243+
.catch((err) => {
243244
reject(err);
244-
} else {
245-
resolve(data);
246-
}
247-
});
245+
});
248246
});
249247
return p;
250248
}
@@ -267,7 +265,7 @@ module.exports = function (RED) {
267265
RED.nodes.createNode(this, config);
268266
var node = this;
269267

270-
this.on('input', function (msg) {
268+
this.on('input', function(msg, send, done) {
271269
var message = '',
272270
options = {};
273271

@@ -278,7 +276,7 @@ module.exports = function (RED) {
278276
apikey = sApikey || this.credentials.apikey;
279277

280278
endpoint = sEndpoint;
281-
if ((!config['default-endpoint']) && config['service-endpoint']) {
279+
if (config['service-endpoint']) {
282280
endpoint = config['service-endpoint'];
283281
}
284282

@@ -304,11 +302,16 @@ module.exports = function (RED) {
304302
})
305303
.then(function(data){
306304
msg.features = data;
307-
node.send(msg);
305+
if (data && data.result) {
306+
msg.features = data.result;
307+
}
308+
send(msg);
308309
node.status({});
310+
done();
309311
})
310312
.catch(function(err){
311-
reportError(node,msg,err);
313+
let errMsg = payloadutils.reportError(node, msg, err);
314+
done(errMsg);
312315
});
313316

314317
});

services/speech_to_text/v1-corpus-builder.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* Copyright 2017 IBM Corp.
2+
* Copyright 2017, 2020 IBM Corp.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -54,7 +54,7 @@ module.exports = function (RED) {
5454
stt.createLanguageModel(params)
5555
.then((response) => {
5656
responseutils.parseResponseFor(msg, response, 'customization_id');
57-
resolve();
57+
resolve(response);
5858
})
5959
.catch((err) => {
6060
reject(err);

services/visual_recognition/v4-collection-utils.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@
129129
<li>Collections
130130
<ul>
131131
<li><b>Create a collection</b></li>
132-
<li><b>List listCollections</b></li>
132+
<li><b>List collections</b></li>
133133
<li><b>Get collection details</b></li>
134134
<li><b>Update collection</b></li>
135135
<li><b>Delete collection</b></li>

services/visual_recognition/v4-collection-utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ module.exports = function(RED) {
460460
});
461461
}
462462

463-
// This is the Watson Visual Recognition V3 Node
463+
// This is the Watson Visual Recognition V4 Node
464464
function WatsonVisualRecognitionV4Node(config) {
465465
let node = this;
466466

utilities/payload-utils.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -124,24 +124,29 @@ PayloadUtils.prototype = {
124124
});
125125
},
126126

127+
runThroughErrOptions: function(err) {
128+
let messageTxt = err;
129+
if (err.error) {
130+
messageTxt = err.error;
131+
} else if (err.description) {
132+
messageTxt = err.description;
133+
} else if (err.message) {
134+
messageTxt = err.message;
135+
}
136+
return messageTxt;
137+
},
127138

128139
reportError: function (node, msg, err) {
129-
var messageTxt = err;
140+
let messageTxt = err;
130141

131142
if (err.body && 'string' === typeof err.body) {
132143
messageTxt = err.body;
133144
try {
134145
let errBody = JSON.parse(err.body);
135-
if (('object' === typeof errBody) && errBody.error) {
136-
messageTxt = errBody.error;
137-
}
146+
messageTxt = PayloadUtils.prototype.runThroughErrOptions(errBody);
138147
} catch(e) {}
139-
} else if (err.error) {
140-
messageTxt = err.error;
141-
} else if (err.description) {
142-
messageTxt = err.description;
143-
} else if (err.message) {
144-
messageTxt = err.message;
148+
} else {
149+
messageTxt = PayloadUtils.prototype.runThroughErrOptions(err);
145150
}
146151

147152
msg.watsonerror = messageTxt;

0 commit comments

Comments
 (0)