// Zoho Cliq Plugin v1.0.0 // Zoho Cliq chat/messaging integration (EU data center) var auth = require('./lib/auth'); var cliq = require('./lib/cliq'); shadowman.log.info('Zoho Cliq plugin v1.0.0 loaded'); // Auth tools shadowman.tools.register('setup_auth', function(args, context) { shadowman.storage.set('auth_conversation_id', context.conversationId); return auth.setupAuth(args.grant_token); }); shadowman.tools.register('auth_status', function(args, context) { return auth.getStatus(); }); // Chat tools shadowman.tools.register('list_chats', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; return cliq.listChats(token); }); shadowman.tools.register('list_channels', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; return cliq.listChannels(token); }); shadowman.tools.register('send_message', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; if (!args.chat_id) return { error: 'Missing chat_id parameter' }; if (!args.message) return { error: 'Missing message parameter' }; return cliq.sendMessage(token, args.chat_id, args.message); }); shadowman.tools.register('get_messages', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; if (!args.chat_id) return { error: 'Missing chat_id parameter' }; return cliq.getMessages(token, args.chat_id, args.index || 1); }); shadowman.tools.register('post_to_channel', function(args, context) { var token = auth.getValidToken(); if (!token) return { error: 'Not authenticated. Run setup_auth with a grant token first.' }; if (!args.channel_name) return { error: 'Missing channel_name parameter' }; if (!args.message) return { error: 'Missing message parameter' }; return cliq.postToChannel(token, args.channel_name, args.message); });