node-red-contrib-chatbot
Version:
REDBot a Chat bot for a full featured chat bot for Telegram, Facebook Messenger and Slack. Almost no coding skills required
138 lines (128 loc) • 5.45 kB
HTML
<script type="text/javascript">
RED.nodes.registerType('chatbot-message', {
category: 'RedBot',
color: '#FFCC66',
defaults: {
name: {
value: ''
},
message: {
value: ['']
},
answer: {
value: false
},
silent: {
value: false
}
},
inputs: 1,
outputs: 1,
paletteLabel: 'Text',
icon: 'chatbot-message.png',
label: function() {
return this.name || 'Text';
},
oneditsave: function() {
var messages = $("#node-input-message-container").editableList('items');
var node = this;
node.message = [];
var idx;
for(idx = 0; idx < messages.length; idx++) {
node.message.push({
message: messages[idx].find('textarea').val()
});
}
},
oneditprepare: function() {
$('#node-input-message-container')
.css('min-height','300px')
.css('min-width','450px')
.editableList({
addButton: 'Add message version',
addItem: function (container, i, item) {
var row = $('<div/>').appendTo(container);
var content = '';
if (typeof item == 'string') {
content = item;
} else if (item.message != null) {
content = item.message;
}
$('<textarea placeholder="Message">' + content + '</textarea>')
.css({
width: '93%',
height: '100px'
})
.appendTo(row);
},
removable: true,
sortable: true
});
var message = this.message;
if (typeof message == 'string') {
message = [message];
}
var idx;
for (idx = 0; idx < message.length; idx++) {
$("#node-input-message-container").editableList('addItem', message[idx]);
}
}
});
</script>
<script type="text/x-red" data-template-name="chatbot-message">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row node-input-rule-container-row">
<ol id="node-input-message-container"></ol>
<div style="max-width: 460px;font-size: 12px;color: #999999;line-height: 14px;clear:both;margin-top:5px;">
Supports handlebars-like variables for chat context like {{firstName}}, {{lastName}}, etc. and emoticons (:smile:, etc.).
In case of multiple version of the content, one will be randomly chosen.
</div>
</div>
<div class="form-row">
<table>
<tr>
<td width="50%" valign="top" style="font-size: 13px;">
<input type="checkbox" value="true" id="node-input-answer" style="width:auto;margin-top:0px;">
<span>Quote the previous message</span> <span class="icon-platform-telegram"/>
</td>
<td width="50%" valign="top" style="font-size: 13px;">
<input type="checkbox" value="true" id="node-input-silent" style="width:auto;margin-top:0px;">
<span>
Silent message (no notification)
</span> <span class="icon-platform-telegram"/>
</td>
</tr>
</table>
</div>
</script>
<script type="text/x-red" data-help-name="chatbot-message"><p>Used to send a plain text message to the chatbot's user, a handlebars-like syntax can be used to insert values from the chat context, for example:</p>
<pre><code>Hi {{firstName}}, your check is {{total}} euros
</code></pre><p>Some special values (like <code>{{firstName}}</code>, <code>{{lastName}}</code>, <code>{{chatId}}</code>, etc) are always available.</p>
<p>It's possible to specify more content versions for the same message, one will we randomly chosen with an even distribution.</p>
<p>The text message can be passed through the payload by the upstream node:</p>
<pre><code>msg.payload = 'I am a message';
return msg;
</code></pre><p>or for multiple versions of the message</p>
<pre><code>msg.payload = [
'First version of the message',
'Second version of the message'
];
return msg;
</code></pre><p>Available parameters for the <code>msg.payload</code></p>
<dl class="message-properties">
<dt>message<span class="property-type">string / array of [string]</span><dd>String or array of strings to send. If array, a random one will be chosen</dd>
<dt>silent<span class="property-type">boolean</span><dd>Do not send notification. <em>Telegram</em></dd>
<dt>answer<span class="property-type">boolean</span><dd>Send as answer to the previous message. <em>Telegram</em></dd>
<dt>fallback<span class="property-type">string</span><dd>Fallback message to use in case of a message broadcast containing tokens like {{first_name}} or {{last_name}} and the bot doesn't have privileges to access profile info. <em>Facebook</em></dd>
</dl>
<p><img src="https://img.shields.io/badge/platform-Alexa-blue.svg?colorB=23cbfd" alt="Alexa">
<img src="https://img.shields.io/badge/platform-Facebook-blue.svg" alt="Facebook">
<img src="https://img.shields.io/badge/platform-Slack-green.svg" alt="Slack">
<img src="https://img.shields.io/badge/platform-Smooch-orange.svg" alt="Smooch">
<img src="https://img.shields.io/badge/platform-Telegram-blue.svg?colorB=7cbaea" alt="Telegram">
<img src="https://img.shields.io/badge/platform-Twilio-ee324a.svg" alt="Twilio">
<img src="https://img.shields.io/badge/platform-Viber-8079d0.svg" alt="Viber"></p>
</script>