UNPKG

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

300 lines (299 loc) 8.65 kB
[ { "id": "5635b840.63d498", "type": "tab", "label": "Flow 1", "disabled": false, "info": "" }, { "id": "68cb6e53.5d9f9", "type": "chatbot-universal-receive", "z": "5635b840.63d498", "bot": "dc8f07b.959c7f8", "botProduction": "", "x": 110, "y": 240, "wires": [ [ "a1ce8e83.b4f5b", "4554cf7c.cd7cb" ] ] }, { "id": "7536db8d.84ebf4", "type": "chatbot-extend", "z": "5635b840.63d498", "codeJs": "const DialogBotSDK = node.context().global.get('DialogBot');\n\nnode.chat.onChatId(message => message.sender.peer.id);\n\nnode.chat.registerPlatform('dialog', 'Dialog');\nnode.chat.registerMessageType('message');\nnode.chat.registerMessageType('photo');\nnode.chat.registerMessageType('inline-buttons');\n\n/*node.chat.onStop(function() {\n var options = this.getOptions();\n options.connector = null;\n return true;\n});*/\n\nnode.chat.onStart(function() {\n var chatServer = this;\n var options = this.getOptions();\n options.connector = new DialogBotSDK.Bot(options.token);\n options.connector.onMessage(function(peer, message) {\n console.log(message); \n chatServer.receive(message);\n });\n options.connector.onInteractiveEvent(function(event) {\n chatServer.receive({\n mid: event.mid,\n sender: { \n peer: { type: 'user', id: event.uid },\n },\n isOut: false,\n content: { \n type: 'text', \n text: event.value\n }\n });\n });\n \n return true; \n});\n\nnode.chat.in(function(message) {\n const chat = message.chat();\n if (message.originalMessage.content.type === 'text') {\n message.payload.type = 'message';\n message.payload.content = message.originalMessage.content.text;\n return Promise.resolve(chat.set('message', message.originalMessage.content.text))\n .then(() => message);\n }\n return message; \n});\n\nnode.chat.in(function(message) {\n const request = this.request;\n if (message.originalMessage.content.type === 'photo') {\n return request({ url: message.originalMessage.content.fileUrl})\n .then(image => {\n message.payload.type = 'photo';\n message.payload.content = image; \n return message;\n });\n } \n return message; \n});\n\n// ensure the chatId is always a number, those inserted with the conversation\n// node are string\nnode.chat.out(function(message) {\n if (message.payload.chatId != null && typeof message.payload.chatId === 'string') {\n message.payload.chatId = parseInt(message.payload.chatId, 10);\n } \n return message; \n});\n\nnode.chat.out('message', function(message) {\n const bot = this.getConnector();\n const chat = message.chat();\n const peer = { type: 'user', id: message.payload.chatId };\n return new Promise(function(resolve, reject) {\n bot.sendTextMessage(peer, message.payload.content)\n .then(mid => chat.set('messageId', mid))\n .then(\n () => resolve(message),\n reject\n ); \n });\n});\n\nnode.chat.out('inline-buttons', function(message) {\n const bot = this.getConnector();\n const chat = message.chat();\n const peer = { type: 'user', id: message.payload.chatId };\n \n const buttons = [{\n actions: message.payload.buttons\n .filter(button => button.type === 'postback')\n .map(button => ({\n id: button.value,\n widget: {\n type: 'button',\n value: button.value,\n label: button.label\n }\n }))\n }];\n return new Promise(function(resolve, reject) {\n bot.sendInteractiveMessage(peer, message.payload.content, buttons)\n .then(mid => chat.set('messageId', mid))\n .then(\n () => resolve(message),\n reject\n ); \n });\n});", "platform": "universal", "noerr": 0, "x": 130, "y": 320, "wires": [] }, { "id": "a1ce8e83.b4f5b", "type": "chatbot-debug", "z": "5635b840.63d498", "x": 423, "y": 324, "wires": [] }, { "id": "89ea8b97.d165f8", "type": "chatbot-message", "z": "5635b840.63d498", "name": "", "message": [ { "message": "comando {{message}}" } ], "answer": false, "x": 450, "y": 200, "wires": [ [ "eace7497.df1478" ] ] }, { "id": "eace7497.df1478", "type": "chatbot-universal-send", "z": "5635b840.63d498", "bot": "dc8f07b.959c7f8", "botProduction": "", "track": false, "passThrough": false, "outputs": 0, "x": 690, "y": 200, "wires": [] }, { "id": "8c762069.f532f", "type": "chatbot-inline-buttons", "z": "5635b840.63d498", "name": "", "buttons": [ { "type": "postback", "label": "Test", "value": "/test", "answer": "", "alert": false, "style": "" }, { "type": "postback", "label": "Another test", "value": "/another", "answer": "", "alert": false, "style": "" } ], "message": "Message with the buttons", "x": 460, "y": 240, "wires": [ [ "eace7497.df1478" ] ] }, { "id": "1daa2585.fced2a", "type": "chatbot-support-table", "z": "5635b840.63d498", "x": 420, "y": 440, "wires": [] }, { "id": "d6ba61fd.5a3d", "type": "inject", "z": "5635b840.63d498", "name": "", "topic": "", "payload": "", "payloadType": "date", "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "x": 180, "y": 440, "wires": [ [ "1daa2585.fced2a" ] ] }, { "id": "4554cf7c.cd7cb", "type": "chatbot-rules", "z": "5635b840.63d498", "name": "", "rules": [ { "type": "anyCommand" }, { "type": "catchAll" } ], "outputs": 2, "x": 290, "y": 200, "wires": [ [ "89ea8b97.d165f8" ], [ "8c762069.f532f" ] ] }, { "id": "5e4e23b3.ec92dc", "type": "chatbot-conversation", "z": "5635b840.63d498", "name": "Dialog", "botTelegram": "", "botSlack": "", "botFacebook": "", "botViber": "", "botUniversal": "dc8f07b.959c7f8", "botTwilio": "", "chatId": "246093853", "transport": "universal", "messageId": "", "contextMessageId": false, "store": "", "x": 290, "y": 560, "wires": [ [ "c1280d64.a36b5" ] ] }, { "id": "e8242ca7.cc3cb", "type": "inject", "z": "5635b840.63d498", "name": "", "topic": "", "payload": "", "payloadType": "date", "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "x": 120, "y": 560, "wires": [ [ "5e4e23b3.ec92dc" ] ] }, { "id": "c1280d64.a36b5", "type": "chatbot-message", "z": "5635b840.63d498", "name": "", "message": [ { "message": "conversation 222" } ], "answer": false, "x": 470, "y": 560, "wires": [ [ "19e82afc.4705c5", "377465db.ddd1ea" ] ] }, { "id": "19e82afc.4705c5", "type": "chatbot-universal-send", "z": "5635b840.63d498", "bot": "dc8f07b.959c7f8", "botProduction": "", "track": false, "passThrough": false, "outputs": 0, "x": 670, "y": 560, "wires": [] }, { "id": "377465db.ddd1ea", "type": "debug", "z": "5635b840.63d498", "name": "", "active": true, "tosidebar": true, "console": true, "tostatus": false, "complete": "true", "x": 630, "y": 620, "wires": [] }, { "id": "a69c8b27.0e2db8", "type": "chatbot-universal-receive", "z": "5635b840.63d498", "bot": "dc8f07b.959c7f8", "botProduction": "", "x": 570, "y": 1140, "wires": [ [] ] }, { "id": "f0a86a6f.9e4f48", "type": "http in", "z": "5635b840.63d498", "name": "", "url": "/redbot/twilio", "method": "post", "upload": false, "swaggerDoc": "", "x": 330, "y": 1140, "wires": [ [ "a69c8b27.0e2db8" ] ] }, { "id": "dc8f07b.959c7f8", "type": "chatbot-universal-node", "z": "", "botname": "DialogBot", "usernames": "", "connectorParams": "", "store": "2f85250d.acd45a", "log": "", "debug": false }, { "id": "2f85250d.acd45a", "type": "chatbot-context-store", "z": "", "name": "Memory", "contextStorage": "memory", "contextParams": "" } ]