n8n-nodes-bale
Version:
Custom n8n node to work with Bale messenger
95 lines (87 loc) • 2.26 kB
JavaScript
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 };