@tuanltntu/n8n-nodes-bitrix24
Version:
Comprehensive n8n community node for Bitrix24 API integration with CRM, Tasks, Chat, Telephony, and more
108 lines • 4.38 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MessageServiceResourceHandler = void 0;
const n8n_workflow_1 = require("n8n-workflow");
const ResourceHandlerBase_1 = require("./ResourceHandlerBase");
/**
* Handler for Bitrix24 MessageService operations
*/
class MessageServiceResourceHandler extends ResourceHandlerBase_1.ResourceHandlerBase {
constructor(executeFunctions, returnData, options = {}) {
super(executeFunctions, returnData, options);
this.resourceEndpoints = {
sendMessage: "messageservice.message.send",
getProviders: "messageservice.provider.list",
getProviderLimits: "messageservice.provider.limits.get",
getMessageStatus: "messageservice.message.status.get",
};
}
/**
* Process MessageService operations
*/
async process() {
for (let i = 0; i < this.items.length; i++) {
try {
const operation = this.getNodeParameter("operation", i);
if (!this.resourceEndpoints[operation]) {
throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), `The operation "${operation}" is not supported for MessageService`, { itemIndex: i });
}
const endpoint = this.resourceEndpoints[operation];
let responseData;
switch (operation) {
case "sendMessage":
responseData = await this.handleSendMessage(endpoint, i);
break;
case "getProviders":
responseData = await this.handleGetProviders(endpoint, i);
break;
case "getProviderLimits":
responseData = await this.handleGetProviderLimits(endpoint, i);
break;
case "getMessageStatus":
responseData = await this.handleGetMessageStatus(endpoint, i);
break;
default:
throw new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), `The operation "${operation}" is not supported`, { itemIndex: i });
}
this.addResponseToReturnData(responseData, i);
}
catch (error) {
if (this.continueOnFail()) {
this.addErrorToReturnData(error, i);
}
else {
throw error;
}
}
}
return this.returnData;
}
/**
* Handle send message operation
*/
async handleSendMessage(endpoint, itemIndex) {
const phoneNumber = this.getNodeParameter("phoneNumber", itemIndex);
const message = this.getNodeParameter("message", itemIndex);
const options = this.getNodeParameter("options", itemIndex, {});
const body = {
phone: phoneNumber,
message: message,
};
// Add any additional options
Object.assign(body, options);
return this.makeApiCall(endpoint, body);
}
/**
* Handle get providers operation
*/
async handleGetProviders(endpoint, itemIndex) {
const options = this.getNodeParameter("options", itemIndex, {});
return this.makeApiCall(endpoint, options);
}
/**
* Handle get provider limits operation
*/
async handleGetProviderLimits(endpoint, itemIndex) {
const providerId = this.getNodeParameter("providerId", itemIndex);
const options = this.getNodeParameter("options", itemIndex, {});
const body = {
provider_id: providerId,
...options,
};
return this.makeApiCall(endpoint, body);
}
/**
* Handle get message status operation
*/
async handleGetMessageStatus(endpoint, itemIndex) {
const messageId = this.getNodeParameter("messageId", itemIndex);
const options = this.getNodeParameter("options", itemIndex, {});
const body = {
message_id: messageId,
...options,
};
return this.makeApiCall(endpoint, body);
}
}
exports.MessageServiceResourceHandler = MessageServiceResourceHandler;
//# sourceMappingURL=MessageServiceResourceHandler.js.map