UNPKG

n8n-nodes-bale

Version:

Custom n8n node to work with Bale messenger

95 lines (87 loc) 2.26 kB
const { BaleBot } = require('bale-bot-api-for-n8n'); class Bale { description = { displayName: 'Bale', name: 'bale', group: ['communication'], version: 1, description: 'Send and receive messages via Bale messenger', defaults: { name: 'Bale', }, inputs: ['main'], outputs: ['main'], credentials: [ { name: 'baleApi', required: true, }, ], properties: [ { displayName: 'Action', name: 'action', type: 'options', options: [ { name: 'Send Message', value: 'sendMessage' }, { name: 'Get Updates', value: 'getUpdates' }, { name: 'Set Webhook', value: 'setWebhook' }, { name: 'Delete Webhook', value: 'deleteWebhook' }, ], default: 'sendMessage', }, { displayName: 'Chat ID', name: 'chatId', type: 'string', default: '', displayOptions: { show: { action: ['sendMessage'] }, }, }, { displayName: 'Text', name: 'text', type: 'string', default: '', displayOptions: { show: { action: ['sendMessage'] }, }, }, { displayName: 'Webhook URL', name: 'webhookUrl', type: 'string', default: '', displayOptions: { show: { action: ['setWebhook'] }, }, }, ], }; async execute() { const items = this.getInputData(); const returnData = []; const credentials = await this.getCredentials('baleApi'); const bot = new BaleBot({ token: credentials.token }); for (let i = 0; i < items.length; i++) { const action = this.getNodeParameter('action', i); let result; if (action === 'sendMessage') { const chatId = this.getNodeParameter('chatId', i); const text = this.getNodeParameter('text', i); result = await bot.sendMessage(chatId, text); } else if (action === 'getUpdates') { result = await bot.getUpdates(); } else if (action === 'setWebhook') { const webhookUrl = this.getNodeParameter('webhookUrl', i); result = await bot.setWebhook(webhookUrl); } else if (action === 'deleteWebhook') { result = await bot.deleteWebhook(); } returnData.push({ json: result }); } return [returnData]; } } module.exports = { Bale };