Skip to content

Commit

Permalink
Merge pull request #300 from chughts/regionurl
Browse files Browse the repository at this point in the history
Allow Support for German Bluemix Region
  • Loading branch information
chughts committed Jun 7, 2017
2 parents 2377e9a + 6b35974 commit 994d5b5
Show file tree
Hide file tree
Showing 24 changed files with 1,268 additions and 718 deletions.
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,17 @@ Node-RED Watson Nodes for IBM Bluemix

<a href="https://cla-assistant.io/watson-developer-cloud/node-red-node-watson"><img src="https://cla-assistant.io/readme/badge/watson-developer-cloud/node-red-node-watson" alt="CLA assistant" /></a>

### New in version 0.5.9
- Text to Speech speech on msg.payload option.
- Speech to Text transcription on msg.payload option
- Endpoint can now be specified in Conversation,
Conversation Workspace Manager Language Identify, Language Translator,
Speech to Text, STT Corpus Builder, Text to Speech, TTS Corpus Builder,
Personality Insights and Tone Analyzer nodes.

### New in version 0.5.8
- Visual Reconition Node, now accepts readstream on msg.payload
- Add passages parameter to Discovery Node
- Add passages parameter to Discovery Node

### New in version 0.5.7
- Fix to Tone Analyzer to allow JSON as input
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "node-red-node-watson",
"version": "0.5.8",
"version": "0.5.9",
"description": "A collection of Node-RED nodes for IBM Watson services",
"dependencies": {
"alchemy-api": "^1.3.0",
Expand All @@ -14,7 +14,7 @@
"watson-developer-cloud": "^2.32.1",
"kuromoji": "^0.0.5",
"is-docx": "^0.0.3",
"stream-to-array" : "^2.3.0"
"stream-to-array" : "^2.3.0"
},
"repository": {
"type": "git",
Expand Down
24 changes: 22 additions & 2 deletions services/conversation/v1-workspace-manager.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,15 @@
<label for="node-input-password"><i class="fa fa-key"></i> Password</label>
<input type="password" id="node-input-password" placeholder="Password"></input>
</div>
<div class="form-row credentials">
<label>&nbsp;</label>
<input type="checkbox" id="node-input-cwm-default-endpoint" style="display: inline-block; width: auto; vertical-align: top;">
<label for="node-input-cwm-default-endpoint" style="width: 70%;"> Use Default Service Endpoint</label>
</div>
<div class="form-row">
<label for="node-input-cwm-service-endpoint"><i class="fa fa-tag"></i> Service Endpoint</label>
<input type="text" id="node-input-cwm-service-endpoint" placeholder="https://gateway.watsonplatform.net/conversation/api">
</div>

<div class="form-row">
<label for="node-input-cwm-custom-mode"><i class="fa fa-book"></i> Detect: </label>
Expand Down Expand Up @@ -215,6 +224,7 @@
// moved in if there is a clash with other nodes.
var cv1wm = new CV1WM();
cv1wm.mode_selected = null;
cv1wm.endpoint_required = false;

cv1wm.showSelectedFields = function(fields) {
for (i = 0; i < fields.length; i++) {
Expand All @@ -236,7 +246,8 @@
fields.push('#node-input-cwm-workspace-id'
+ ', #node-input-cwm-intent'
+ ', #node-input-cwm-example'
+ ', #node-input-cwm-export-content');
+ ', #node-input-cwm-export-content'
+ ', #node-input-cwm-service-endpoint');

cv1wm.hideSelectedFields(fields);
}
Expand Down Expand Up @@ -284,6 +295,9 @@
case 'createWorkspace':
break;
}
if (cv1wm.endpoint_required) {
fields.push('#node-input-cwm-service-endpoint');
}
cv1wm.showSelectedFields(fields);
}

Expand All @@ -293,6 +307,10 @@
cv1wm.mode_selected = $('#node-input-cwm-custom-mode').val();
cv1wm.processSelectedMethod(cv1wm.mode_selected);
});
$('#node-input-cwm-default-endpoint').change(function () {
cv1wm.endpoint_required = ! $('#node-input-cwm-default-endpoint').prop('checked');
cv1wm.processSelectedMethod(cv1wm.mode_selected);
});
}

// This is the on edit prepare function, which will be invoked everytime the dialog
Expand Down Expand Up @@ -327,7 +345,9 @@
'cwm-workspace-id': {value:""},
'cwm-intent': {value:""},
'cwm-example': {value:""},
'cwm-export-content': {value:false}
'cwm-export-content': {value:false},
'cwm-default-endpoint' :{value: true},
'cwm-service-endpoint' :{value: 'https://gateway.watsonplatform.net/conversation/api'}
},
credentials: {
username: {type:'text'},
Expand Down
34 changes: 25 additions & 9 deletions services/conversation/v1-workspace-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ module.exports = function (RED) {
payloadutils = require('../../utilities/payload-utils'),
ConversationV1 = require('watson-developer-cloud/conversation/v1'),
service = serviceutils.getServiceCreds(SERVICE_IDENTIFIER),
username = '', password = '', sUsername = '', sPassword = '';
username = '', password = '', sUsername = '', sPassword = '',
endpoint = '', sEndpoint = '';

temp.track();

Expand All @@ -40,6 +41,7 @@ module.exports = function (RED) {
if (service) {
sUsername = service.username;
sPassword = service.password;
sEndpoint = service.url;
}

function executeListWorkspaces(node, conv, params, msg) {
Expand Down Expand Up @@ -281,14 +283,21 @@ module.exports = function (RED) {
}

function executeMethod(node, method, params, msg) {
var conv = new ConversationV1({
username: username,
password: password,
version_date: '2017-02-03',
headers: {
'User-Agent': pkg.name + '-' + pkg.version
}
});
var conv = null,
serviceSettings = {
username: username,
password: password,
version_date: '2017-02-03',
headers: {
'User-Agent': pkg.name + '-' + pkg.version
}
};

if (endpoint) {
serviceSettings.url = endpoint;
}

conv = new ConversationV1(serviceSettings);

node.status({fill:'blue', shape:'dot', text:'executing'});

Expand Down Expand Up @@ -622,6 +631,11 @@ module.exports = function (RED) {
username = sUsername || this.credentials.username;
password = sPassword || this.credentials.password || config.password;

endpoint = sEndpoint;
if ((!config['cwm-default-endpoint']) && config['cwm-service-endpoint']) {
endpoint = config['cwm-service-endpoint'];
}

node.status({});
initialCheck(username, password, method)
.then(function(){
Expand All @@ -647,10 +661,12 @@ module.exports = function (RED) {
return executeMethod(node, method, params, msg);
})
.then(function(){
temp.cleanup();
node.status({});
node.send(msg);
})
.catch(function(err){
temp.cleanup();
payloadutils.reportError(node,msg,err);
});

Expand Down
47 changes: 36 additions & 11 deletions services/conversation/v1.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@
<i class="fa fa-question-circle"></i><b> Please wait: </b> Checking for bound service credentials...
</div>
</div>

<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>

<div class="form-row credentials" style="display: none;">
<label for="node-input-username"><i class="fa fa-user"></i> Username</label>
<input type="text" id="node-input-username" placeholder="Username">
Expand All @@ -28,10 +34,17 @@
<label for="node-input-password"><i class="fa fa-key"></i> Password</label>
<input type="password" id="node-input-password" placeholder="Password">
</div>

<div class="form-row credentials">
<label>&nbsp;</label>
<input type="checkbox" id="node-input-default-endpoint" style="display: inline-block; width: auto; vertical-align: top;">
<label for="node-input-default-endpoint" style="width: 70%;"> Use Default Service Endpoint</label>
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
<label for="node-input-service-endpoint"><i class="fa fa-tag"></i> Service Endpoint</label>
<input type="text" id="node-input-service-endpoint" placeholder="https://gateway.watsonplatform.net/conversation/api">
</div>

<div class="form-row">
<label for="node-input-workspaceid"><i class="fa fa-tag"></i> Workspace ID</label>
<input type="text" id="node-input-workspaceid" placeholder="WorkspaceID">
Expand Down Expand Up @@ -71,6 +84,7 @@
<br/>
<li><code>msg.params.username</code> : If provided will be used as the username credential for the Conversation service.</li>
<li><code>msg.params.password</code> : If provided will be used as the password credential for the Conversation service.</li>
<li><code>msg.params.endpoint</code> : If provided will be used as the url for the Conversation service.</li>
</ul>
<p>See <a href="http://www.ibm.com/watson/developercloud/conversation/api/v1/#send_input" target="_blank">Conversation API documentation</a> for details.</p>
<p>All Results will made available at <code>msg.payload</code> in JSON format. Check the <a href="http://www.ibm.com/watson/developercloud/conversation/api/v1/#send_input" target="_blank">documentation</a> for details.</p>
Expand Down Expand Up @@ -98,6 +112,15 @@
$('#conversation-form-tips').hide();
}
});
$('input#node-input-default-endpoint').change(function () {
var checked = $('input#node-input-default-endpoint').prop('checked')
if (checked) {
$('#node-input-service-endpoint').parent().hide();
} else {
$('#node-input-service-endpoint').parent().show();
}
});

$.getJSON('watson-conversation/vcap/')
.done(function (service) {
$('.credentials').toggle(!service);
Expand All @@ -114,25 +137,27 @@
RED.nodes.registerType('watson-conversation-v1', {
category: 'IBM Watson',
defaults: {
name: {value: ""},
workspaceid: {value: ""},
name: {value: ''},
workspaceid: {value: ''},
multiuser: {value: false},
context: {value: true}
context: {value: true},
'default-endpoint' :{value: true},
'service-endpoint' :{value: 'https://gateway.watsonplatform.net/conversation/api'}
},
credentials: {
username: {type:"text"},
password: {type:"password"}
username: {type:'text'},
password: {type:'password'}
},
color: 'rgb(84,149,230)',
inputs: 1,
outputs: 1,
icon: "conversation-v1-25x25.png",
paletteLabel: "conversation",
icon: 'conversation-v1-25x25.png',
paletteLabel: 'conversation',
label: function() {
return this.name || "conversation";
return this.name || 'conversation';
},
labelStyle: function() {
return this.name ? "node_label_italic" : "";
return this.name ? 'node_label_italic' : '';
},
oneditprepare: oneditprepare
});
Expand Down
42 changes: 30 additions & 12 deletions services/conversation/v1.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ module.exports = function(RED) {

// workspaceid can be either configured in the node,
// or sent into msg.params.workspace_id
if (config.workspaceid && config.workspaceid) {
if (config.workspaceid) {
params.workspace_id = config.workspaceid;
}
if (msg.params && msg.params.workspace_id) {
Expand Down Expand Up @@ -129,13 +129,21 @@ module.exports = function(RED) {
}


function verifyServiceCredentials(node, msg) {
function verifyServiceCredentials(node, msg, config) {
// If it is present the newly provided user entered key
// takes precedence over the existing one.
// If msg.params contain credentials then these will Overridde
// the bound or configured credentials.
const serviceSettings = {
version_date: '2017-05-26',
headers: {
'User-Agent': pkg.name + '-' + pkg.version
}
};

var userName = sUsername || node.credentials.username,
passWord = sPassword || node.credentials.password;
passWord = sPassword || node.credentials.password,
endpoint = '';

if (!(userName || msg.params.username) ||
!(passWord || msg.params.password)) {
Expand All @@ -157,14 +165,24 @@ module.exports = function(RED) {
}
}

node.service = new ConversationV1({
username: userName,
password: passWord,
version_date: '2017-02-03',
headers: {
'User-Agent': pkg.name + '-' + pkg.version
}
});
if (service) {
endpoint = service.url;
}
if (!config['default-endpoint'] && config['service-endpoint']) {
endpoint = config['service-endpoint'];
}
if (msg.params && msg.params.endpoint) {
endpoint = msg.params.endpoint;
}

if (endpoint) {
serviceSettings.url = endpoint;
}

serviceSettings.username = userName;
serviceSettings.password = passWord;

node.service = new ConversationV1(serviceSettings);
return true;
}

Expand Down Expand Up @@ -227,7 +245,7 @@ module.exports = function(RED) {
if (!b) {
return;
}
b = verifyServiceCredentials(node, msg);
b = verifyServiceCredentials(node, msg, config);
if (!b) {
return;
}
Expand Down
Loading

0 comments on commit 994d5b5

Please sign in to comment.