From 23125a2529d6f36c14a50a356ca03c2d325c453f Mon Sep 17 00:00:00 2001 From: P Aswini Kumar Date: Thu, 16 Jun 2022 00:47:25 +0530 Subject: [PATCH 1/9] initial code for join, reminder, notifications, help, endpoints, app settings --- .editorconfig | 16 ++ .gitignore | 31 +++ .rcappsconfig | 19 ++ BbbMeetApp.ts | 160 +++++++++++++++ SHA1/sha1.ts | 203 +++++++++++++++++++ app.json | 16 ++ commands/HelpCommand.ts | 39 ++++ commands/JoinCommand.ts | 175 +++++++++++++++++ commands/StopReminder.ts | 54 ++++++ endpoints/webhook.ts | 33 ++++ enums/jobid.ts | 3 + enums/settings.ts | 9 + icon.png | Bin 0 -> 364300 bytes package-lock.json | 409 +++++++++++++++++++++++++++++++++++++++ package.json | 8 + settings/appsettings.ts | 56 ++++++ settings/bbbsettings.ts | 67 +++++++ tsconfig.json | 17 ++ tslint.json | 15 ++ 19 files changed, 1330 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .rcappsconfig create mode 100644 BbbMeetApp.ts create mode 100644 SHA1/sha1.ts create mode 100644 app.json create mode 100644 commands/HelpCommand.ts create mode 100644 commands/JoinCommand.ts create mode 100644 commands/StopReminder.ts create mode 100644 endpoints/webhook.ts create mode 100644 enums/jobid.ts create mode 100644 enums/settings.ts create mode 100644 icon.png create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 settings/appsettings.ts create mode 100644 settings/bbbsettings.ts create mode 100644 tsconfig.json create mode 100644 tslint.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..a1166f2 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +indent_style = space +indent_size = 4 +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b543bdb --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +# ignore modules pulled in from npm +node_modules/ + +# rc-apps package output +dist/ + +# JetBrains IDEs +out/ +.idea/ +.idea_modules/ + +# macOS +.DS_Store +.AppleDouble +.LSOverride +._* +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# vscode extensions +.vscode/ \ No newline at end of file diff --git a/.rcappsconfig b/.rcappsconfig new file mode 100644 index 0000000..f9892ff --- /dev/null +++ b/.rcappsconfig @@ -0,0 +1,19 @@ +{ + "url": "http://localhost:3000", + "username": "", + "password": "", + "ignoredFiles": [ + "**/README.md", + "**/package-lock.json", + "**/package.json", + "**/tslint.json", + "**/tsconfig.json", + "**/*.js", + "**/*.js.map", + "**/*.d.ts", + "**/*.spec.ts", + "**/*.test.ts", + "**/dist/**", + "**/.*" + ] +} \ No newline at end of file diff --git a/BbbMeetApp.ts b/BbbMeetApp.ts new file mode 100644 index 0000000..1a112df --- /dev/null +++ b/BbbMeetApp.ts @@ -0,0 +1,160 @@ +import { + IAppAccessors, + IAppInstallationContext, + IConfigurationExtend, + IConfigurationModify, + IEnvironmentRead, + IHttp, + ILogger, + IMessageBuilder, + IModify, + IModifyCreator, + IPersistence, + IRead, +} from '@rocket.chat/apps-engine/definition/accessors'; +import { ApiSecurity, ApiVisibility } from '@rocket.chat/apps-engine/definition/api'; +import { App } from '@rocket.chat/apps-engine/definition/App'; +import { IMessage } from '@rocket.chat/apps-engine/definition/messages'; +import { IAppInfo } from '@rocket.chat/apps-engine/definition/metadata'; +import { IRoom } from '@rocket.chat/apps-engine/definition/rooms'; +import { IJobContext } from '@rocket.chat/apps-engine/definition/scheduler'; +import { ISetting } from '@rocket.chat/apps-engine/definition/settings'; +import { TextObjectType } from '@rocket.chat/apps-engine/definition/uikit'; +import { IUser } from '@rocket.chat/apps-engine/definition/users'; +import { HelpCommand } from './commands/HelpCommand'; +import { JoinCommand } from './commands/JoinCommand'; +import { StopReminder } from './commands/StopReminder'; +import { WebhookEndpoint } from './endpoints/webhook'; +import { jobId } from './enums/jobid'; +import { AppSettings } from './settings/appsettings'; +import { BbbSettings } from './settings/bbbsettings'; + +export class BbbMeetApp extends App { + + constructor(info: IAppInfo, logger: ILogger, accessors: IAppAccessors) { + super(info, logger, accessors); + } + public async onInstall(context: IAppInstallationContext, read: IRead, http: IHttp, persistence: IPersistence, modify: IModify): Promise { + //logging in the app logs + this.getLogger().log('Hello Everyone! I am a Rocket.Chat App which will take care about your weekly meetings'); + + //sending in the general channel + const creator: IModifyCreator = modify.getCreator(); + const room = await read.getRoomReader().getByName('general'); + if (room === undefined) { + this.getLogger().log(`room general doesn't exist`) + } else { + const sender: IUser = (await read.getUserReader().getAppUser()) as IUser; + const messageTemplate: IMessage = { + text: 'Hello Everyone! I am a Rocket.Chat App which will take care about your weekly meetings', + sender, + room + } + const messageBuilder: IMessageBuilder = creator.startMessage(messageTemplate) + await creator.finish(messageBuilder) + } + } + + public async onSettingUpdated(setting: ISetting, configurationModify: IConfigurationModify, read: IRead, http: IHttp): Promise { + // cancel all the existing jobs + await configurationModify.scheduler.cancelJob(jobId.Reminder) + + // Find the meeting channel from the App settings + const set = read.getEnvironmentReader().getSettings() + const room = await set.getValueById('Meeting_Channel') + + // Calculating the Cron Expression + const time = await set.getValueById('Meeting_Time') + var [hrs,mins] = time.split(":") + if(hrs.length !== mins.length){ + this.getLogger().log('Invalid Meeting Time Setting was found'); + return undefined + } + + hrs = parseInt(hrs as string, 10) + mins = parseInt(mins as string, 10) + + if(time.length !== 5 || hrs.isNaN || mins.isNaN || hrs>23 || mins>60 || hrs<0 || mins<0){ + this.getLogger().log('Invalid Meeting Time Setting was found'); + return undefined + } + + const day = await set.getValueById('Meeting_Day') + const dayind = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'].indexOf(day) + + if(dayind === -1){ + this.getLogger().log('No Meeting Day setting was found. Make sure you have selected a day before proceeding.'); + return + } + + if(room !== undefined){ + await configurationModify.scheduler.scheduleRecurring({ + id: jobId.Reminder, + interval: `${mins} ${hrs} * * ${dayind}`, + skipImmediate: true, + data: {} + }) + this.getLogger().log(`${mins} ${hrs} * * ${dayind}`) + } + } + + protected async extendConfiguration(configuration: IConfigurationExtend): Promise { + await Promise.all(AppSettings.map((setting) => configuration.settings.provideSetting(setting))); + await Promise.all(BbbSettings.map((setting) => configuration.settings.provideSetting(setting))); + + await configuration.slashCommands.provideSlashCommand(new StopReminder()) + await configuration.slashCommands.provideSlashCommand(new JoinCommand()) + await configuration.slashCommands.provideSlashCommand(new HelpCommand()) + + configuration.api.provideApi({ + visibility: ApiVisibility.PUBLIC, + security: ApiSecurity.UNSECURE, + endpoints: [new WebhookEndpoint(this)], + }); + + //Register processors + await configuration.scheduler.registerProcessors([ + { + id: jobId.Reminder, + processor: async (jobContext: IJobContext, read: IRead, modify: IModify, http: IHttp, persis: IPersistence): Promise => { + const block = modify.getCreator().getBlockBuilder() + + this.getLogger().log('Reached Processor') + //Creating the block template + block.addSectionBlock({ + text: { + type: TextObjectType.PLAINTEXT, + text: 'The scheduled weekly meeting is about to start! Join by clicking on the "Join" button below' + } + }) + block.addActionsBlock({ + elements: [ + block.newButtonElement({ + actionId: "joinbutton", + text: { + type: TextObjectType.PLAINTEXT, + text: 'Join' + }, + }) + ] + }) + //Find the meeting channel from the App settings + const setting = read.getEnvironmentReader().getSettings() + const roomname = await setting.getValueById('Meeting_Channel') + const room = await read.getRoomReader().getByName(roomname); + const sender: IUser = (await read.getUserReader().getAppUser()) as IUser + + if (room === undefined){ + console.log(`Room ${roomname} doesn't exist`) + } else { + await modify.getCreator().finish( + modify.getCreator().startMessage().setSender(sender).addBlocks(block.getBlocks()).setRoom(room) + ) + } + + } + } + ]); + + } +} diff --git a/SHA1/sha1.ts b/SHA1/sha1.ts new file mode 100644 index 0000000..2869c8c --- /dev/null +++ b/SHA1/sha1.ts @@ -0,0 +1,203 @@ +export function sha1(str: string): string { + const utf8 = str; + const words32 = stringToWords32(utf8, Endian.Big); + return _sha1(words32, utf8.length * 8); + } + + export function sha1Binary(buffer: ArrayBuffer): string { + const words32 = arrayBufferToWords32(buffer, Endian.Big); + return _sha1(words32, buffer.byteLength * 8); + } + + function _sha1(words32: number[], len: number): string { + const w = new Array(80); + let [a, b, c, d, e]: number[] = [0x67452301, 0xefcdab89, 0x98badcfe, + 0x10325476, 0xc3d2e1f0]; + + words32[len >> 5] |= 0x80 << (24 - len % 32); + words32[((len + 64 >> 9) << 4) + 15] = len; + + for (let i = 0; i < words32.length; i += 16) { + const [h0, h1, h2, h3, h4]: number[] = [a, b, c, d, e]; + + for (let j = 0; j < 80; j++) { + if (j < 16) { + w[j] = words32[i + j]; + } else { + w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); + } + + const [f, k] = fk(j, b, c, d); + const temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32); + [e, d, c, b, a] = [d, c, rol32(b, 30), a, temp]; + } + + [a, b, c, d, e] = [add32(a, h0), add32(b, h1), add32(c, h2), add32(d, h3), add32(e, h4)]; + } + + return byteStringToHexString(words32ToByteString([a, b, c, d, e])); + } + + function add32(a: number, b: number): number { + return add32to64(a, b)[1]; + } + + function add32to64(a: number, b: number): [number, number] { + const low = (a & 0xffff) + (b & 0xffff); + const high = (a >>> 16) + (b >>> 16) + (low >>> 16); + return [high >>> 16, (high << 16) | (low & 0xffff)]; + } + + function add64([ah, al]: [number, number], [bh, bl]: [number, number]): [number, number] { + const [carry, l] = add32to64(al, bl); + const h = add32(add32(ah, bh), carry); + return [h, l]; + } + + function sub32(a: number, b: number): number { + const low = (a & 0xffff) - (b & 0xffff); + const high = (a >> 16) - (b >> 16) + (low >> 16); + return (high << 16) | (low & 0xffff); + } + + // Rotate a 32b number left 'count' position + function rol32(a: number, count: number): number { + return (a << count) | (a >>> (32 - count)); + } + + // Rotate a 64b number left 'count' position + function rol64([hi, lo]: [number, number], count: number): [number, number] { + const h = (hi << count) | (lo >>> (32 - count)); + const l = (lo << count) | (hi >>> (32 - count)); + return [h, l]; + } + + enum Endian { + Little, + Big, + } + + function fk(index: number, b: number, c: number, d: number): [number, number] { + if (index < 20) { + return [(b & c) | (~b & d), 0x5a827999]; + } + + if (index < 40) { + return [b ^ c ^ d, 0x6ed9eba1]; + } + + if (index < 60) { + return [(b & c) | (b & d) | (c & d), 0x8f1bbcdc]; + } + + return [b ^ c ^ d, 0xca62c1d6]; + } + + + function stringToWords32(str: string, endian: Endian): number[] { + const words32 = Array((str.length + 3) >>> 2); + + for (let i = 0; i < words32.length; i++) { + words32[i] = wordAt(str, i * 4, endian); + } + + return words32; + } + + function arrayBufferToWords32(buffer: ArrayBuffer, endian: Endian): number[] { + const words32 = Array((buffer.byteLength + 3) >>> 2); + const view = new Uint8Array(buffer); + for (let i = 0; i < words32.length; i++) { + words32[i] = wordAt(view, i * 4, endian); + } + return words32; + } + + function byteAt(str: string | Uint8Array, index: number): number { + if (typeof str === 'string') { + return index >= str.length ? 0 : str.charCodeAt(index) & 0xff; + } else { + return index >= str.byteLength ? 0 : str[index] & 0xff; + } + } + + function wordAt(str: string | Uint8Array, index: number, endian: Endian): number { + let word = 0; + if (endian === Endian.Big) { + for (let i = 0; i < 4; i++) { + word += byteAt(str, index + i) << (24 - 8 * i); + } + } else { + for (let i = 0; i < 4; i++) { + word += byteAt(str, index + i) << 8 * i; + } + } + return word; + } + + function words32ToByteString(words32: number[]): string { + return words32.reduce((str, word) => str + word32ToByteString(word), ''); + } + + function word32ToByteString(word: number): string { + let str = ''; + for (let i = 0; i < 4; i++) { + str += String.fromCharCode((word >>> 8 * (3 - i)) & 0xff); + } + return str; + } + + function byteStringToHexString(str: string): string { + let hex: string = ''; + for (let i = 0; i < str.length; i++) { + const b = byteAt(str, i); + hex += (b >>> 4).toString(16) + (b & 0x0f).toString(16); + } + return hex.toLowerCase(); + } + + // based on http://www.danvk.org/hex2dec.html (JS can not handle more than +// 56b) + function byteStringToDecString(str: string): string { + let decimal = ''; + let toThePower = '1'; + + for (let i = str.length - 1; i >= 0; i--) { + decimal = addBigInt(decimal, numberTimesBigInt(byteAt(str, i), + toThePower)); + toThePower = numberTimesBigInt(256, toThePower); + } + + return decimal.split('').reverse().join(''); + } + + // x and y decimal, lowest significant digit first + function addBigInt(x: string, y: string): string { + let sum = ''; + const len = Math.max(x.length, y.length); + for (let i = 0, carry = 0; i < len || carry; i++) { + const tmpSum = carry + +(x[i] || 0) + +(y[i] || 0); + if (tmpSum >= 10) { + carry = 1; + sum += tmpSum - 10; + } else { + carry = 0; + sum += tmpSum; + } + } + + return sum; + } + + + function numberTimesBigInt(num: number, b: string): string { + let product = ''; + let bToThePower = b; + for (; num !== 0; num = num >>> 1) { + if (num & 1) product = addBigInt(product, bToThePower); + bToThePower = addBigInt(bToThePower, bToThePower); + } + return product; + } + + //borrowed from https://github.com/angular/angular/blob/master/packages/service-worker/cli/sha1.ts \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..b0e6bce --- /dev/null +++ b/app.json @@ -0,0 +1,16 @@ +{ + "id": "0dc8312a-f8aa-44cb-bbef-a9e9cf88f243", + "version": "0.0.1", + "requiredApiVersion": "^1.19.0", + "iconFile": "icon.png", + "author": { + "name": "Aswini", + "homepage": "github.com/aswinidev", + "support": "github.com/aswinidev" + }, + "name": "bbb.meet", + "nameSlug": "bbbmeet", + "classFile": "BbbMeetApp.ts", + "description": "A weekly meeting and video archiving system", + "implements": [] +} \ No newline at end of file diff --git a/commands/HelpCommand.ts b/commands/HelpCommand.ts new file mode 100644 index 0000000..b437aca --- /dev/null +++ b/commands/HelpCommand.ts @@ -0,0 +1,39 @@ +import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder } from "@rocket.chat/apps-engine/definition/accessors"; +import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; +import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; +import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; +import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; +import { IUser } from "@rocket.chat/apps-engine/definition/users"; + +export class HelpCommand implements ISlashCommand { + public command = "helpmeet"; + public i18nDescription = "Tells you how the app / app commands work"; + public providesPreview = false; + public i18nParamsExample = ""; + + public async executor( + context: SlashCommandContext, + read: IRead, + modify: IModify, + http: IHttp, + persis: IPersistence + ): Promise { + const sender : IUser = (await read.getUserReader().getAppUser()) as IUser + const room : IRoom = context.getRoom() + + // A help command which will be completed at the end of the project + const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() + blockBuilder.addSectionBlock({ + text: { + type: TextObjectType.PLAINTEXT, + text: 'You have implemented the help command' + } + }) + + await modify.getNotifier().notifyUser(context.getSender(), { + sender, + room, + blocks: blockBuilder.getBlocks() + }) + } +} \ No newline at end of file diff --git a/commands/JoinCommand.ts b/commands/JoinCommand.ts new file mode 100644 index 0000000..8597492 --- /dev/null +++ b/commands/JoinCommand.ts @@ -0,0 +1,175 @@ +import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder, IHttpRequest } from "@rocket.chat/apps-engine/definition/accessors"; +import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; +import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; +import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; +import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; +import { IUser } from "@rocket.chat/apps-engine/definition/users"; +import { sha1 } from "../SHA1/sha1"; + +export class JoinCommand implements ISlashCommand { + public command = "joinmeet"; + public i18nDescription = "Lets you join weekly meetings"; + public providesPreview = false; + public i18nParamsExample = ""; + private sharedSecret : string; + + public async executor( + context: SlashCommandContext, + read: IRead, + modify: IModify, + http: IHttp, + persis: IPersistence + ): Promise { + const set = read.getEnvironmentReader().getSettings() + const meetroomname = await set.getValueById('Meeting_Channel') + const meetroom = await read.getRoomReader().getByName(meetroomname); + const commandroom = context.getRoom() + if(meetroom === undefined){ + console.log(`Room ${meetroomname} doesn't exist`) + } else if(meetroom.id !== commandroom.id) { + const sender : IUser = (await read.getUserReader().getAppUser()) as IUser + const room : IRoom = context.getRoom() + + const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() + blockBuilder.addSectionBlock({ + text: { + type: TextObjectType.PLAINTEXT, + text: "This Command is not allowed in this channel" + } + }) + + await modify.getNotifier().notifyUser(context.getSender(), { + sender, + room, + blocks: blockBuilder.getBlocks() + }) + return; + } + // Collect all the required settings + const bbbserver = await set.getValueById('BigBlueButton_Server_URL') + this.sharedSecret = await set.getValueById('BigBlueButton_sharedSecret') + const moderatorPW = await set.getValueById('BigBlueButton_moderatorPW') + const attendeePW = await set.getValueById('BigBlueButton_attendeePW') + const meetingId = await set.getValueById('BigBlueButton_Meeting_Id') + const meetingName = await set.getValueById('BigBlueButton_Meeting_Name') + + const [role, password]: Array = context.getArguments() + + switch (role){ + case "moderator": + if(password === moderatorPW){ + break; + } else { + const sender : IUser = (await read.getUserReader().getAppUser()) as IUser + const room : IRoom = context.getRoom() + + const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() + blockBuilder.addSectionBlock({ + text: { + type: TextObjectType.PLAINTEXT, + text: "Wrong Password!" + } + }) + + await modify.getNotifier().notifyUser(context.getSender(), { + sender, + room, + blocks: blockBuilder.getBlocks() + }) + return; + } + + case "attendee": + if(password === attendeePW){ + break; + } else { + const sender : IUser = (await read.getUserReader().getAppUser()) as IUser + const room : IRoom = context.getRoom() + + const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() + blockBuilder.addSectionBlock({ + text: { + type: TextObjectType.PLAINTEXT, + text: "Wrong Password!" + } + }) + + await modify.getNotifier().notifyUser(context.getSender(), { + sender, + room, + blocks: blockBuilder.getBlocks() + }) + return; + } + + default: + const sender : IUser = (await read.getUserReader().getAppUser()) as IUser + const room : IRoom = context.getRoom() + + const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() + blockBuilder.addSectionBlock({ + text: { + type: TextObjectType.PLAINTEXT, + text: "Please Enter Valid Arguments" + } + }) + + await modify.getNotifier().notifyUser(context.getSender(), { + sender, + room, + blocks: blockBuilder.getBlocks() + }) + return; + + } + + // Create the query string + const query = `name=${meetingName}&meetingID=${meetingId}&attendeePW=${attendeePW}&moderatorPW=${moderatorPW}&record=true` + const sha1string = "create" + query + `${this.sharedSecret}` + // Calculate sha1 value + const sha = sha1(sha1string) + //Generate the final url + const url = bbbserver + "/bigbluebutton/api/create?" + query + `&checksum=${sha}` + + //make the create call + const response = await http.get(url) + + if(response.statusCode === 200){ + //Create the join query string + const joinquery = `fullName=something&meetingID=${meetingId}&password=${password}&redirect=true` + const joinsha1string = "join" + joinquery + `${this.sharedSecret}` + const joinsha1 = sha1(joinsha1string) + const joinurl = bbbserver + "/bigbluebutton/api/join?" + joinquery + `&checksum=${joinsha1}` + + const sender : IUser = (await read.getUserReader().getAppUser()) as IUser + const room : IRoom = context.getRoom() + + // The Message is sent with a join url + const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() + blockBuilder.addSectionBlock({ + text: { + type: TextObjectType.MARKDOWN, + text: `Click on the join button below to join the meeting:\n` + } + }) + blockBuilder.addActionsBlock({ + elements: [ + blockBuilder.newButtonElement({ + text: { + type: TextObjectType.PLAINTEXT, + text: 'Join' + }, + url: joinurl + }) + ] + }) + + await modify.getNotifier().notifyUser(context.getSender(), { + sender, + room, + blocks: blockBuilder.getBlocks() + }) + } + } +} + diff --git a/commands/StopReminder.ts b/commands/StopReminder.ts new file mode 100644 index 0000000..e6a7014 --- /dev/null +++ b/commands/StopReminder.ts @@ -0,0 +1,54 @@ +import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder } from "@rocket.chat/apps-engine/definition/accessors"; +import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; +import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; +import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; +import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; +import { IUser } from "@rocket.chat/apps-engine/definition/users"; +import { jobId } from "../enums/jobid"; + +export class StopReminder implements ISlashCommand { + public command = "stopreminder"; + public i18nDescription = "Lets you to stop the weekly reminder messages"; + public providesPreview = false; + public i18nParamsExample = ""; + + public async executor( + context: SlashCommandContext, + read: IRead, + modify: IModify, + http: IHttp, + persis: IPersistence + ): Promise { + const creator : IModifyCreator = modify.getCreator() + const sender : IUser = (await read.getUserReader().getAppUser()) as IUser + const room : IRoom = context.getRoom() + + const set = read.getEnvironmentReader().getSettings() + const role = await set.getValueById('Reminder_Role') + const userRoles = context.getSender().roles + + if(userRoles.includes(role)){ + modify.getScheduler().cancelJob(jobId.Reminder) + const messageTemplate : IMessage = { + text: 'The Weekly Meetings Reminder is now disabled', + room, + sender + } + const messageBuilder : IMessageBuilder = creator.startMessage(messageTemplate) + await creator.finish(messageBuilder) + } else { + const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() + blockBuilder.addSectionBlock({ + text: { + type: TextObjectType.PLAINTEXT, + text: 'You are not allowed to use this command.' + } + }) + await modify.getNotifier().notifyUser(context.getSender(), { + sender, + room, + blocks: blockBuilder.getBlocks() + }) + } + } +} \ No newline at end of file diff --git a/endpoints/webhook.ts b/endpoints/webhook.ts new file mode 100644 index 0000000..8e63da3 --- /dev/null +++ b/endpoints/webhook.ts @@ -0,0 +1,33 @@ +import { HttpStatusCode, IHttp, IMessageBuilder, IModify, IPersistence, IRead } from "@rocket.chat/apps-engine/definition/accessors"; +import { ApiEndpoint, IApiEndpointInfo, IApiRequest, IApiResponse } from "@rocket.chat/apps-engine/definition/api"; +import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; +import { IUser } from "@rocket.chat/apps-engine/definition/users"; + +export class WebhookEndpoint extends ApiEndpoint{ + public path = 'recordingstatus'; + + public async post( + request: IApiRequest, + endpoint: IApiEndpointInfo, + read: IRead, + modify: IModify, + http: IHttp, + persis: IPersistence, + ): Promise { + const set = read.getEnvironmentReader().getSettings() + const room = await set.getValueById('Meeting_Channel') + const sender = (await read.getUserReader().getAppUser()) as IUser + const creator = modify.getCreator() + const messageTemplate: IMessage = { + text: 'Recording is ready', + sender, + room + } + const messageBuilder: IMessageBuilder = creator.startMessage(messageTemplate) + await creator.finish(messageBuilder) + + return { + status: HttpStatusCode.OK + } + } +} \ No newline at end of file diff --git a/enums/jobid.ts b/enums/jobid.ts new file mode 100644 index 0000000..83c0150 --- /dev/null +++ b/enums/jobid.ts @@ -0,0 +1,3 @@ +export enum jobId { + Reminder = 'weeklyreminder' +} \ No newline at end of file diff --git a/enums/settings.ts b/enums/settings.ts new file mode 100644 index 0000000..7ec7b6c --- /dev/null +++ b/enums/settings.ts @@ -0,0 +1,9 @@ +export enum Settings { + MeetingDay = 'Meeting_Day', + MeetingTime = 'Meeting_Time', + MeetingChannel = 'Meeting_Channel', + BbbServerURL = 'BigBlueButton_Server_URL', + BbbSharedSecret = 'BigBlueButton_sharedSecret', + BbbModeratorPW = 'BigBlueButton_moderatorPW', + BbbAttendeePW = 'BigBlueButton_attendeePW', +} \ No newline at end of file diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b2943b6f2b18f8c3b528d76dba11241eebfb6cee GIT binary patch literal 364300 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

F-754XT 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%0DGeD<{(l8lyh_j@_|IBJr864cHI#D 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 z zwA-a(@J1%kR83Pnb?};7u(UFJtD;6@*md7IbcE}l3PHt-WX-_%-C~elgOaCz5zU9z zb+F99WMv`CxESMbPEQFN?cl*uVDFou6-0aE^ho!bM++!>#Wva(Nntd6@VAMFt;%Pb z9|!&T!Z&JA-g@>@6dE4DDb@N-*FAcmTJZS$^TiHvSpTk@{!OWBiZq8DH7OdK!K*a( zIji&NnhZ|LK)ka2hRyl+J2r|H9rxvA(axJQ&D}U|UY0l5^i9boxi3x}!B(OXeUy1( z6&fZ`7}9NZ{lNk5@@W^!kC(_-=8jaJvGg*lAo|C5O6SPBgMXz`J1@>OML(xpr#cYN zyf7BL^pKwWm~u%huEocJ`H*tS-c0d*!CLH=)#6F40+lO&e`iD`V_$i=8xmh`>v^5x2ej`mq<*-Ct)xf zv;CS@Rkbz$L$y9`5Tcl%S{_WoQ;RDwH5GL;x;F3H#Y$W(W;jtP$<|*(Uiy*}Q@^UO zswhuA(#~T&l@6QHIn8DS&uT0*N<_}MdN3$ST7lE`Sa(bnK6g@Ap?882<+;L4zOynu zy$q9JleeS!UYc&jI_#MZ*i;k252|WAb;_@?yQS(&l_vQs7ajVauXE$PHJ`p@#hr~v z8Ul}Gf==26;m-znXt-bY0DlmSGDby7`LL48Q7cfm2&=4dSVd7;SwmUb@!s=C|EGa} b0N(q2$p7C!;lnCP2o!hnlzzzxx9k4{XyL+I literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ddda8c0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,409 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@rocket.chat/apps-engine": { + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/@rocket.chat/apps-engine/-/apps-engine-1.31.0.tgz", + "integrity": "sha512-OAPSjqqFvX8kFgqq0aou05qm1hbIPv0ircUEpimM12DD5lfvmVAFhM5yqRod/DQjgFX2bJDD9NRCgBDRs5L5cw==", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "cryptiles": "^4.1.3", + "lodash.clonedeep": "^4.5.0", + "semver": "^5.5.0", + "stack-trace": "0.0.10", + "uuid": "^3.2.1" + } + }, + "@types/node": { + "version": "14.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.6.tgz", + "integrity": "sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==", + "dev": true + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "boom": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", + "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", + "dev": true, + "requires": { + "hoek": "6.x.x" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cryptiles": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-4.1.3.tgz", + "integrity": "sha512-gT9nyTMSUC1JnziQpPbxKGBbUg8VL7Zn2NB4E1cJYvuXdElHrwxrV9bmltZGDzet45zSDGyYceueke1TjynGzw==", + "dev": true, + "requires": { + "boom": "7.x.x" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "hoek": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "typescript": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8d5e4bd --- /dev/null +++ b/package.json @@ -0,0 +1,8 @@ +{ + "devDependencies": { + "@rocket.chat/apps-engine": "^1.19.0", + "@types/node": "14.14.6", + "tslint": "^5.10.0", + "typescript": "^4.0.5" + } +} diff --git a/settings/appsettings.ts b/settings/appsettings.ts new file mode 100644 index 0000000..579072f --- /dev/null +++ b/settings/appsettings.ts @@ -0,0 +1,56 @@ +import { ISetting, SettingType } from "@rocket.chat/apps-engine/definition/settings"; + +export enum Settings { + MeetingDay = 'Meeting_Day', + MeetingTime = 'Meeting_Time', + MeetingChannel = 'Meeting_Channel', + ReminderRole = 'Reminder_Role', +} + +export const AppSettings : Array = [ + { + id: Settings.MeetingDay, + type: SettingType.SELECT, + packageValue: '', + required: true, + public: true, + i18nLabel: 'Meeting Day', + i18nDescription: 'The Day when the weekly meetings are supposed to be conducted.', + values: [ + {key: 'sunday', i18nLabel: 'Sunday'}, + {key: 'monday', i18nLabel: 'Monday'}, + {key: 'tuesday', i18nLabel: 'Tuesday'}, + {key: 'wednesday', i18nLabel: 'Wednesday'}, + {key: 'thursday', i18nLabel: 'Thursday'}, + {key: 'friday', i18nLabel: 'Friday'}, + {key: 'saturday', i18nLabel: 'Saturday'} + ] + }, + { + id: Settings.MeetingTime, + type: SettingType.STRING, + packageValue: '', + required: true, + public: true, + i18nLabel: 'Meeting Time', + i18nDescription: 'The Time when the weekly meetings are supposed to be conducted.', + }, + { + id: Settings.MeetingChannel, + type: SettingType.STRING, + packageValue: '', + required: true, + public: true, + i18nLabel: 'Meeting Channel', + i18nDescription: 'The Channel in which notifications are to be sent and commands to be usable', + }, + { + id: Settings.ReminderRole, + type: SettingType.STRING, + packageValue: 'admin', + required: true, + public: true, + i18nLabel: 'Role that can disable reminders', + i18nDescription: '', + }, +] \ No newline at end of file diff --git a/settings/bbbsettings.ts b/settings/bbbsettings.ts new file mode 100644 index 0000000..4daf53f --- /dev/null +++ b/settings/bbbsettings.ts @@ -0,0 +1,67 @@ +import { ISetting, SettingType } from "@rocket.chat/apps-engine/definition/settings"; + +export enum Settings { + BbbServerURL = 'BigBlueButton_Server_URL', + BbbSharedSecret = 'BigBlueButton_sharedSecret', + BbbModeratorPW = 'BigBlueButton_moderatorPW', + BbbAttendeePW = 'BigBlueButton_attendeePW', + BbbMeetingName = 'BigBlueButton_Meeting_Name', + BbbMeetingId = 'BigBlueButton_Meeting_Id' +} + +export const BbbSettings : Array = [ + { + id: Settings.BbbServerURL, + type: SettingType.STRING, + packageValue: '', + required: true, + public: true, + i18nLabel: 'BigBlueButton Server URL', + i18nDescription: 'The Server URL of where the meetings are supposed to be conducted', + }, + { + id: Settings.BbbSharedSecret, + type: SettingType.STRING, + packageValue: '', + required: true, + public: true, + i18nLabel: 'BigBlueButton sharedSecret', + i18nDescription: 'The BigBlueButton API parameter which could be obtained by running bbb-conf --secret', + }, + { + id: Settings.BbbModeratorPW, + type: SettingType.STRING, + packageValue: '', + required: true, + public: true, + i18nLabel: 'BigBlueButton moderatorPW', + i18nDescription: 'The password to let the person join as a moderator of the meeting', + }, + { + id: Settings.BbbAttendeePW, + type: SettingType.STRING, + packageValue: '', + required: true, + public: true, + i18nLabel: 'BigBlueButton attendeePW', + i18nDescription: 'The password to let the person join as an attendee of the meeting', + }, + { + id: Settings.BbbMeetingName, + type: SettingType.STRING, + packageValue: '', + required: true, + public: true, + i18nLabel: 'BigBlueButton Meeting Name', + i18nDescription: 'The name of the meeting', + }, + { + id: Settings.BbbMeetingId, + type: SettingType.STRING, + packageValue: '', + required: true, + public: true, + i18nLabel: 'BigBlueButton Meeting Id', + i18nDescription: 'The Id of the meeting', + }, +] \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3f5d85a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,17 @@ +{ +"compilerOptions": { + "target": "es2017", + "module": "commonjs", + "moduleResolution": "node", + "declaration": false, + "noImplicitAny": false, + "removeComments": true, + "strictNullChecks": true, + "noImplicitReturns": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + }, +"include": [ + "**/*.ts" + ] +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..b01606a --- /dev/null +++ b/tslint.json @@ -0,0 +1,15 @@ +{ + "extends": "tslint:recommended", + "rules": { + "array-type": [true, "generic"], + "member-access": true, + "no-console": [false], + "no-duplicate-variable": true, + "object-literal-sort-keys": false, + "quotemark": [true, "single"], + "max-line-length": [true, { + "limit": 160, + "ignore-pattern": "^import | *export .*? {" + }] + } +} From 36be05a58157d0c1410f1746e856364fd3e93944 Mon Sep 17 00:00:00 2001 From: P Aswini Kumar Date: Thu, 16 Jun 2022 01:38:01 +0530 Subject: [PATCH 2/9] update readme --- README.md | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 767097f..54ec6cc 100644 --- a/README.md +++ b/README.md @@ -1 +1,52 @@ -# Apps.BigBlueButton \ No newline at end of file +# Apps.BigBlueButton + +## 📙 About the App + +An integration of Big Blue Button with Rocket.Chat for conducting a weekly meeting and maintaining the recording video archive. This Rocket.Chat App that will enable users in a channel to join an existing weekly meeting if it is in progress. Or query for recorded meeting videos and view them. + +## 📝 What Apps.BigBlueButton does? + +## 🚀 Steps to run + +- Clone this Repository: + ``` + git clone https://github.com/RocketChat/Apps.BigBlueButton.git + ``` + +- Change the Directory: + ``` + cd Apps.BigBlueButton + ``` + +- Install the required dependencies: + ``` + npm install + ``` + +- Make Sure you have Rocket.Chat server running on your localhost & you have [Rocket.Chat.Apps-cli](https://github.com/RocketChat/Rocket.Chat.Apps-cli) installed, if not : + ``` + npm install -g @rocket.chat/apps-cli + ``` + +- Install the app: + ``` + rc-apps deploy --url http://localhost:3000 --username user_username --password user_password + ``` + Where: + - `http://localhost:3000` is your local server URL (if you are running in another port, change the 3000 to the appropriate port) + - `user_username` is the username of your admin user. + - `user_password` is the password of your admin user. + + For more info refer [this](https://rocket.chat/docs/developer-guides/developing-apps/getting-started/) guide. + +## 👨🏻‍💼 Documentation for reference + +Here are some links to examples and documentation: +- [Rocket.Chat Apps TypeScript Definitions Documentation](https://rocketchat.github.io/Rocket.Chat.Apps-engine/) +- [Rocket.Chat Apps TypeScript Definitions Repository](https://github.com/RocketChat/Rocket.Chat.Apps-engine) +- [Example Rocket.Chat Apps](https://github.com/graywolf336/RocketChatApps) +- Community Forums + - [App Requests](https://forums.rocket.chat/c/rocket-chat-apps/requests) + - [App Guides](https://forums.rocket.chat/c/rocket-chat-apps/guides) + - [Top View of Both Categories](https://forums.rocket.chat/c/rocket-chat-apps) +- [#rocketchat-apps on Open.Rocket.Chat](https://open.rocket.chat/channel/rocketchat-apps) \ No newline at end of file From 2bdced08edef1b81709c00d05dbf7d42b0ae46a9 Mon Sep 17 00:00:00 2001 From: P Aswini Kumar Date: Sun, 19 Jun 2022 04:00:23 +0530 Subject: [PATCH 3/9] ToDo's and organising --- BbbMeetApp.ts | 61 ++++--------- commands/DebugCommand.ts | 44 +++++++++ commands/StopReminder.ts | 104 +++++++++++----------- {enums => reminder/enums}/jobid.ts | 0 reminder/processors/weeklyNotification.ts | 43 +++++++++ 5 files changed, 160 insertions(+), 92 deletions(-) create mode 100644 commands/DebugCommand.ts rename {enums => reminder/enums}/jobid.ts (100%) create mode 100644 reminder/processors/weeklyNotification.ts diff --git a/BbbMeetApp.ts b/BbbMeetApp.ts index 1a112df..918e799 100644 --- a/BbbMeetApp.ts +++ b/BbbMeetApp.ts @@ -21,11 +21,13 @@ import { IJobContext } from '@rocket.chat/apps-engine/definition/scheduler'; import { ISetting } from '@rocket.chat/apps-engine/definition/settings'; import { TextObjectType } from '@rocket.chat/apps-engine/definition/uikit'; import { IUser } from '@rocket.chat/apps-engine/definition/users'; +import { DebugCommand } from './commands/DebugCommand'; import { HelpCommand } from './commands/HelpCommand'; import { JoinCommand } from './commands/JoinCommand'; -import { StopReminder } from './commands/StopReminder'; +// import { StopReminder } from './commands/StopReminder'; import { WebhookEndpoint } from './endpoints/webhook'; -import { jobId } from './enums/jobid'; +import { jobId } from './reminder/enums/jobid'; +import { weeklyNotification } from './reminder/processors/weeklyNotification'; import { AppSettings } from './settings/appsettings'; import { BbbSettings } from './settings/bbbsettings'; @@ -102,9 +104,10 @@ export class BbbMeetApp extends App { await Promise.all(AppSettings.map((setting) => configuration.settings.provideSetting(setting))); await Promise.all(BbbSettings.map((setting) => configuration.settings.provideSetting(setting))); - await configuration.slashCommands.provideSlashCommand(new StopReminder()) + // await configuration.slashCommands.provideSlashCommand(new StopReminder()) await configuration.slashCommands.provideSlashCommand(new JoinCommand()) await configuration.slashCommands.provideSlashCommand(new HelpCommand()) + await configuration.slashCommands.provideSlashCommand(new DebugCommand()) configuration.api.provideApi({ visibility: ApiVisibility.PUBLIC, @@ -116,45 +119,19 @@ export class BbbMeetApp extends App { await configuration.scheduler.registerProcessors([ { id: jobId.Reminder, - processor: async (jobContext: IJobContext, read: IRead, modify: IModify, http: IHttp, persis: IPersistence): Promise => { - const block = modify.getCreator().getBlockBuilder() - - this.getLogger().log('Reached Processor') - //Creating the block template - block.addSectionBlock({ - text: { - type: TextObjectType.PLAINTEXT, - text: 'The scheduled weekly meeting is about to start! Join by clicking on the "Join" button below' - } - }) - block.addActionsBlock({ - elements: [ - block.newButtonElement({ - actionId: "joinbutton", - text: { - type: TextObjectType.PLAINTEXT, - text: 'Join' - }, - }) - ] - }) - //Find the meeting channel from the App settings - const setting = read.getEnvironmentReader().getSettings() - const roomname = await setting.getValueById('Meeting_Channel') - const room = await read.getRoomReader().getByName(roomname); - const sender: IUser = (await read.getUserReader().getAppUser()) as IUser - - if (room === undefined){ - console.log(`Room ${roomname} doesn't exist`) - } else { - await modify.getCreator().finish( - modify.getCreator().startMessage().setSender(sender).addBlocks(block.getBlocks()).setRoom(room) - ) - } - - } + processor: weeklyNotification, } - ]); - + ]); } } + +// @todo - remove the requirement of the moderatorPW of the BBB when the user tries to use the join meet +// command. Rather try to make a different access passwords app settings to authenticate user. +// We dont let the users know the API call tokens. +// (Felipe sir's Suggestion) +// @todo - multiple room support +// @todo - date and time for different timezones +// @todo - based on team id instead of rooms (different instances for each team) +// to do this we may have to have a day argument and time argument along with a new slash command +// (timezone can be given in the settings) +// @todo - use the day and time and then parse it with the timezone and register the process diff --git a/commands/DebugCommand.ts b/commands/DebugCommand.ts new file mode 100644 index 0000000..e65c9b1 --- /dev/null +++ b/commands/DebugCommand.ts @@ -0,0 +1,44 @@ +import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder } from "@rocket.chat/apps-engine/definition/accessors"; +import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; +import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; +import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; +import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; +import { IUser } from "@rocket.chat/apps-engine/definition/users"; + +// I know i can use the app logger but i like this. + +export class DebugCommand implements ISlashCommand { + public command = "debugmeet"; + public i18nDescription = "debug"; + public providesPreview = false; + public i18nParamsExample = ""; + + public async executor( + context: SlashCommandContext, + read: IRead, + modify: IModify, + http: IHttp, + persis: IPersistence + ): Promise { + const sender : IUser = (await read.getUserReader().getAppUser()) as IUser + const room : IRoom = context.getRoom() + const customFields = room.customFields + if(customFields===undefined){ + return + } + + const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() + blockBuilder.addSectionBlock({ + text: { + type: TextObjectType.MARKDOWN, + text: `customFields:${JSON.stringify(customFields)}\n`, + } + }) + + await modify.getNotifier().notifyUser(context.getSender(), { + sender, + room, + blocks: blockBuilder.getBlocks() + }) + } +} \ No newline at end of file diff --git a/commands/StopReminder.ts b/commands/StopReminder.ts index e6a7014..8a23504 100644 --- a/commands/StopReminder.ts +++ b/commands/StopReminder.ts @@ -1,54 +1,58 @@ -import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder } from "@rocket.chat/apps-engine/definition/accessors"; -import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; -import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; -import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; -import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; -import { IUser } from "@rocket.chat/apps-engine/definition/users"; -import { jobId } from "../enums/jobid"; +// import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder } from "@rocket.chat/apps-engine/definition/accessors"; +// import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; +// import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; +// import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; +// import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; +// import { IUser } from "@rocket.chat/apps-engine/definition/users"; +// import { jobId } from "../reminder/enums/jobid"; -export class StopReminder implements ISlashCommand { - public command = "stopreminder"; - public i18nDescription = "Lets you to stop the weekly reminder messages"; - public providesPreview = false; - public i18nParamsExample = ""; +// export class StopReminder implements ISlashCommand { +// public command = "stopreminder"; +// public i18nDescription = "Lets you to stop the weekly reminder messages"; +// public providesPreview = false; +// public i18nParamsExample = ""; - public async executor( - context: SlashCommandContext, - read: IRead, - modify: IModify, - http: IHttp, - persis: IPersistence - ): Promise { - const creator : IModifyCreator = modify.getCreator() - const sender : IUser = (await read.getUserReader().getAppUser()) as IUser - const room : IRoom = context.getRoom() +// public async executor( +// context: SlashCommandContext, +// read: IRead, +// modify: IModify, +// http: IHttp, +// persis: IPersistence +// ): Promise { +// const creator : IModifyCreator = modify.getCreator() +// const sender : IUser = (await read.getUserReader().getAppUser()) as IUser +// const room : IRoom = context.getRoom() - const set = read.getEnvironmentReader().getSettings() - const role = await set.getValueById('Reminder_Role') - const userRoles = context.getSender().roles +// const set = read.getEnvironmentReader().getSettings() +// const role = await set.getValueById('Reminder_Role') +// const userRoles = context.getSender().roles - if(userRoles.includes(role)){ - modify.getScheduler().cancelJob(jobId.Reminder) - const messageTemplate : IMessage = { - text: 'The Weekly Meetings Reminder is now disabled', - room, - sender - } - const messageBuilder : IMessageBuilder = creator.startMessage(messageTemplate) - await creator.finish(messageBuilder) - } else { - const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() - blockBuilder.addSectionBlock({ - text: { - type: TextObjectType.PLAINTEXT, - text: 'You are not allowed to use this command.' - } - }) - await modify.getNotifier().notifyUser(context.getSender(), { - sender, - room, - blocks: blockBuilder.getBlocks() - }) - } - } -} \ No newline at end of file +// if(userRoles.includes(role)){ +// modify.getScheduler().cancelJob(jobId.Reminder) +// const messageTemplate : IMessage = { +// text: 'The Weekly Meetings Reminder is now disabled', +// room, +// sender +// } +// const messageBuilder : IMessageBuilder = creator.startMessage(messageTemplate) +// await creator.finish(messageBuilder) +// } else { +// const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() +// blockBuilder.addSectionBlock({ +// text: { +// type: TextObjectType.PLAINTEXT, +// text: 'You are not allowed to use this command.' +// } +// }) +// await modify.getNotifier().notifyUser(context.getSender(), { +// sender, +// room, +// blocks: blockBuilder.getBlocks() +// }) +// } +// } +// } + +// Felipe asked me to remove this because the app is supposed to send notifications only once a week +// which isnt too much to make a stop notification slash command +// Keeping this for now \ No newline at end of file diff --git a/enums/jobid.ts b/reminder/enums/jobid.ts similarity index 100% rename from enums/jobid.ts rename to reminder/enums/jobid.ts diff --git a/reminder/processors/weeklyNotification.ts b/reminder/processors/weeklyNotification.ts new file mode 100644 index 0000000..5bbbb64 --- /dev/null +++ b/reminder/processors/weeklyNotification.ts @@ -0,0 +1,43 @@ +import { IHttp, IModify, IPersistence, IRead } from "@rocket.chat/apps-engine/definition/accessors" +import { IJobContext } from "@rocket.chat/apps-engine/definition/scheduler" +import { TextObjectType } from "@rocket.chat/apps-engine/definition/uikit" +import { IUser } from "@rocket.chat/apps-engine/definition/users" + + +export const weeklyNotification = async (jobContext: IJobContext, read: IRead, modify: IModify, http: IHttp, persis: IPersistence): Promise => { + const block = modify.getCreator().getBlockBuilder() + + // this.getLogger().log('Reached Processor') // "this" may be undefined + //Creating the block template + block.addSectionBlock({ + text: { + type: TextObjectType.PLAINTEXT, + text: 'The scheduled weekly meeting is about to start! Join by clicking on the "Join" button below' + } + }) + block.addActionsBlock({ + elements: [ + block.newButtonElement({ + actionId: "joinbutton", + text: { + type: TextObjectType.PLAINTEXT, + text: 'Join' + }, + }) + ] + }) + //Find the meeting channel from the App settings + const setting = read.getEnvironmentReader().getSettings() + const roomname = await setting.getValueById('Meeting_Channel') + const room = await read.getRoomReader().getByName(roomname); + const sender: IUser = (await read.getUserReader().getAppUser()) as IUser + + if (room === undefined){ + console.log(`Room ${roomname} doesn't exist`) + } else { + await modify.getCreator().finish( + modify.getCreator().startMessage().setSender(sender).addBlocks(block.getBlocks()).setRoom(room) + ) + } + +} \ No newline at end of file From dcb7b46cfb8b03516e300c73cd3967e9f3571e3e Mon Sep 17 00:00:00 2001 From: P Aswini Kumar Date: Thu, 28 Jul 2022 16:35:48 +0530 Subject: [PATCH 4/9] WIP: Join Command --- BbbMeetApp.ts | 129 +++++++--------------- commands/Meet.ts | 76 +++++++++++++ commands/ScheduleMeetCommand.ts | 83 ++++++++++++++ functions/MeetingURL.ts | 35 ++++++ functions/getGUID.ts | 11 ++ reminder/processors/multipleProcessors.ts | 33 ++++++ reminder/processors/weeklyNotification.ts | 19 +--- settings/appsettings.ts | 78 ++++++------- 8 files changed, 319 insertions(+), 145 deletions(-) create mode 100644 commands/Meet.ts create mode 100644 commands/ScheduleMeetCommand.ts create mode 100644 functions/MeetingURL.ts create mode 100644 functions/getGUID.ts create mode 100644 reminder/processors/multipleProcessors.ts diff --git a/BbbMeetApp.ts b/BbbMeetApp.ts index 918e799..8723d83 100644 --- a/BbbMeetApp.ts +++ b/BbbMeetApp.ts @@ -17,121 +17,66 @@ import { App } from '@rocket.chat/apps-engine/definition/App'; import { IMessage } from '@rocket.chat/apps-engine/definition/messages'; import { IAppInfo } from '@rocket.chat/apps-engine/definition/metadata'; import { IRoom } from '@rocket.chat/apps-engine/definition/rooms'; -import { IJobContext } from '@rocket.chat/apps-engine/definition/scheduler'; +import { IJobContext, IProcessor } from '@rocket.chat/apps-engine/definition/scheduler'; import { ISetting } from '@rocket.chat/apps-engine/definition/settings'; import { TextObjectType } from '@rocket.chat/apps-engine/definition/uikit'; import { IUser } from '@rocket.chat/apps-engine/definition/users'; import { DebugCommand } from './commands/DebugCommand'; import { HelpCommand } from './commands/HelpCommand'; import { JoinCommand } from './commands/JoinCommand'; +import { MeetCommand } from './commands/Meet'; +import { ScheduleMeetCommand } from './commands/ScheduleMeetCommand'; // import { StopReminder } from './commands/StopReminder'; import { WebhookEndpoint } from './endpoints/webhook'; import { jobId } from './reminder/enums/jobid'; +import { multipleProcessors } from './reminder/processors/multipleProcessors'; import { weeklyNotification } from './reminder/processors/weeklyNotification'; import { AppSettings } from './settings/appsettings'; import { BbbSettings } from './settings/bbbsettings'; export class BbbMeetApp extends App { + // private processor_array: Array = []; + constructor(info: IAppInfo, logger: ILogger, accessors: IAppAccessors) { super(info, logger, accessors); } - public async onInstall(context: IAppInstallationContext, read: IRead, http: IHttp, persistence: IPersistence, modify: IModify): Promise { - //logging in the app logs - this.getLogger().log('Hello Everyone! I am a Rocket.Chat App which will take care about your weekly meetings'); - - //sending in the general channel - const creator: IModifyCreator = modify.getCreator(); - const room = await read.getRoomReader().getByName('general'); - if (room === undefined) { - this.getLogger().log(`room general doesn't exist`) - } else { - const sender: IUser = (await read.getUserReader().getAppUser()) as IUser; - const messageTemplate: IMessage = { - text: 'Hello Everyone! I am a Rocket.Chat App which will take care about your weekly meetings', - sender, - room - } - const messageBuilder: IMessageBuilder = creator.startMessage(messageTemplate) - await creator.finish(messageBuilder) - } - } - - public async onSettingUpdated(setting: ISetting, configurationModify: IConfigurationModify, read: IRead, http: IHttp): Promise { - // cancel all the existing jobs - await configurationModify.scheduler.cancelJob(jobId.Reminder) - - // Find the meeting channel from the App settings - const set = read.getEnvironmentReader().getSettings() - const room = await set.getValueById('Meeting_Channel') - - // Calculating the Cron Expression - const time = await set.getValueById('Meeting_Time') - var [hrs,mins] = time.split(":") - if(hrs.length !== mins.length){ - this.getLogger().log('Invalid Meeting Time Setting was found'); - return undefined - } - - hrs = parseInt(hrs as string, 10) - mins = parseInt(mins as string, 10) - - if(time.length !== 5 || hrs.isNaN || mins.isNaN || hrs>23 || mins>60 || hrs<0 || mins<0){ - this.getLogger().log('Invalid Meeting Time Setting was found'); - return undefined - } - const day = await set.getValueById('Meeting_Day') - const dayind = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'].indexOf(day) - - if(dayind === -1){ - this.getLogger().log('No Meeting Day setting was found. Make sure you have selected a day before proceeding.'); - return - } + // public async onSettingUpdated(setting: ISetting, configurationModify: IConfigurationModify, read: IRead, http: IHttp): Promise { + // const set = read.getEnvironmentReader().getSettings() + // const roomstr = await set.getValueById('Meeting_Channels') + // this.processor_array.length=0; + + // const toiroom = async (name: string): Promise => { + // const room = await read.getRoomReader().getByName(name) + // if (room === undefined) { + // this.getLogger().log(`room #${name} doesn't exist`) + // } + // return room + // } + + // const rooms = await Promise.all(roomstr.split(',').map(toiroom).filter(Boolean)) + // var index; + // for (index = 0; index < rooms.length; index++) { + // this.getLogger().log(rooms[index]); - if(room !== undefined){ - await configurationModify.scheduler.scheduleRecurring({ - id: jobId.Reminder, - interval: `${mins} ${hrs} * * ${dayind}`, - skipImmediate: true, - data: {} - }) - this.getLogger().log(`${mins} ${hrs} * * ${dayind}`) - } - } + // this.processor_array.push( + // { + // id: `${rooms[index].slugifiedName}`, + // processor: weeklyNotification, + // } + // ) + // } + // } protected async extendConfiguration(configuration: IConfigurationExtend): Promise { - await Promise.all(AppSettings.map((setting) => configuration.settings.provideSetting(setting))); - await Promise.all(BbbSettings.map((setting) => configuration.settings.provideSetting(setting))); - // await configuration.slashCommands.provideSlashCommand(new StopReminder()) - await configuration.slashCommands.provideSlashCommand(new JoinCommand()) - await configuration.slashCommands.provideSlashCommand(new HelpCommand()) - await configuration.slashCommands.provideSlashCommand(new DebugCommand()) - - configuration.api.provideApi({ - visibility: ApiVisibility.PUBLIC, - security: ApiSecurity.UNSECURE, - endpoints: [new WebhookEndpoint(this)], - }); + await Promise.all(AppSettings.map((setting) => configuration.settings.provideSetting(setting))); + await configuration.slashCommands.provideSlashCommand(new ScheduleMeetCommand()) + await configuration.slashCommands.provideSlashCommand(new MeetCommand()) + //Register processors - await configuration.scheduler.registerProcessors([ - { - id: jobId.Reminder, - processor: weeklyNotification, - } - ]); + await configuration.scheduler.registerProcessors(multipleProcessors); } -} - -// @todo - remove the requirement of the moderatorPW of the BBB when the user tries to use the join meet -// command. Rather try to make a different access passwords app settings to authenticate user. -// We dont let the users know the API call tokens. -// (Felipe sir's Suggestion) -// @todo - multiple room support -// @todo - date and time for different timezones -// @todo - based on team id instead of rooms (different instances for each team) -// to do this we may have to have a day argument and time argument along with a new slash command -// (timezone can be given in the settings) -// @todo - use the day and time and then parse it with the timezone and register the process +} \ No newline at end of file diff --git a/commands/Meet.ts b/commands/Meet.ts new file mode 100644 index 0000000..7d7a874 --- /dev/null +++ b/commands/Meet.ts @@ -0,0 +1,76 @@ +import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder } from "@rocket.chat/apps-engine/definition/accessors"; +import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; +import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; +import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; +import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; +import { IUser } from "@rocket.chat/apps-engine/definition/users"; +import { jobId } from "../reminder/enums/jobid"; +import { ILogger } from "@rocket.chat/apps-engine/definition/accessors"; + +export class MeetCommand implements ISlashCommand { + public command = "meet"; + public i18nDescription = ""; + public providesPreview = false; + public i18nParamsExample = ""; + public logger : ILogger; + + public async executor( + context: SlashCommandContext, + read: IRead, + modify: IModify, + http: IHttp, + persis: IPersistence + ): Promise { + // await modify.getScheduler().cancelJob(jobId.Reminder) + const commandroom = context.getRoom() + + const set = read.getEnvironmentReader().getSettings() + const roomstr = await set.getValueById('Meeting_Channels') + + const toiroom = async (name: string): Promise => { + const room = await read.getRoomReader().getByName(name) + // if (room === undefined) { + // this.logger.debug(`room #${name} doesn't exist`) + // } + return room + } + + const rooms = await Promise.all(roomstr.split(',').map(toiroom).filter(Boolean)) + + // if(!rooms.includes(commandroom)){ + // this.logger.debug(`room #${commandroom.slugifiedName} is not a meeting channel`) + // return; + // } + + const [time, day]: Array = context.getArguments() + var [hour,minute] = time.split(":") + + const hrs = parseInt(hour as string, 10) + const mins = parseInt(minute as string, 10) + + const dayind = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'].indexOf(day) + + await modify.getScheduler().scheduleRecurring({ + id: `${commandroom.slugifiedName}`, + // interval: `${mins} ${hrs} * * ${dayind}`, + interval: '20 seconds', + skipImmediate: true, + data: {room: commandroom} + }) + + const sender : IUser = (await read.getUserReader().getAppUser()) as IUser + const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() + blockBuilder.addSectionBlock({ + text: { + type: TextObjectType.PLAINTEXT, + text: `${mins} ${hrs} * * ${dayind}\n ${commandroom.slugifiedName}` + } + }) + + await modify.getNotifier().notifyUser(context.getSender(), { + sender, + room: commandroom, + blocks: blockBuilder.getBlocks() + }) + } +} \ No newline at end of file diff --git a/commands/ScheduleMeetCommand.ts b/commands/ScheduleMeetCommand.ts new file mode 100644 index 0000000..eadf45e --- /dev/null +++ b/commands/ScheduleMeetCommand.ts @@ -0,0 +1,83 @@ +import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder, ILogger } from "@rocket.chat/apps-engine/definition/accessors"; +import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; +import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; +import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; +import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; +import { IUser } from "@rocket.chat/apps-engine/definition/users"; +import { jobId } from "../reminder/enums/jobid"; + +export class ScheduleMeetCommand implements ISlashCommand { + public command = "schedulemeet"; + public i18nDescription = ""; + public providesPreview = false; + public i18nParamsExample = ""; + public logger : ILogger; + + public async executor( + context: SlashCommandContext, + read: IRead, + modify: IModify, + http: IHttp, + persis: IPersistence + ): Promise { + // await modify.getScheduler().cancelJob(jobId.Reminder) + const set = read.getEnvironmentReader().getSettings() + const roomstr = await set.getValueById('Meeting_Channels') + const checkroom = async (name: string): Promise => { + const room = await read.getRoomReader().getByName(name) + if (room === undefined) { + return undefined + } + return room.slugifiedName + } + + // const rooms : Array = await Promise.all(roomstr.split(',').map(toiroom).filter(Boolean)) + + const rooms : Array = await Promise.all(roomstr.split(',').map(checkroom).filter(Boolean)) + + const commandroom = context.getRoom() + + // if(!rooms.includes(commandroom)){ + // // this.logger.debug(`room is not a meeting channel`) + // return; + // } + + const roomind = rooms.indexOf(commandroom.slugifiedName) + // console.log(rooms) + + const [time, day]: Array = context.getArguments() + var [hour,minute] = time.split(":") + + const hrs = parseInt(hour as string, 10) + const mins = parseInt(minute as string, 10) + + const dayind = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'].indexOf(day) + + // debug code + const sender : IUser = (await read.getUserReader().getAppUser()) as IUser + const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() + blockBuilder.addSectionBlock({ + text: { + type: TextObjectType.PLAINTEXT, + text: `${mins} ${hrs} * * ${dayind}\n ${commandroom.slugifiedName}\n meet${roomind}` + // text: `${rooms[0].slugifiedName} ${commandroom.slugifiedName} ${rooms[0]==commandroom} ${roomind}` + } + }) + + await modify.getNotifier().notifyUser(context.getSender(), { + sender, + room: commandroom, + blocks: blockBuilder.getBlocks() + }) + + + + + await modify.getScheduler().scheduleRecurring({ + id: `meet${roomind}`, + interval: `20 seconds`, + skipImmediate: true, + data: {room: commandroom} + }) + } +} \ No newline at end of file diff --git a/functions/MeetingURL.ts b/functions/MeetingURL.ts new file mode 100644 index 0000000..040e52f --- /dev/null +++ b/functions/MeetingURL.ts @@ -0,0 +1,35 @@ +import { IHttp, IRead } from "@rocket.chat/apps-engine/definition/accessors"; +import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; +import { SlashCommandContext } from "@rocket.chat/apps-engine/definition/slashcommands"; +import { IUser } from "@rocket.chat/apps-engine/definition/users"; +import { sha1 } from "../SHA1/sha1"; +import { getGUID } from "./getGUID"; + +export async function getMeetingUrl(read: IRead, password: string, context: SlashCommandContext, http: IHttp): Promise{ + const set = read.getEnvironmentReader().getSettings() + const bbbserver = await set.getValueById('BigBlueButton_Server_URL') + const sharedSecret = await set.getValueById('BigBlueButton_sharedSecret') + const moderatorPW = await set.getValueById('BigBlueButton_moderatorPW') + const attendeePW = await set.getValueById('BigBlueButton_attendeePW') + const meetingId = getGUID() + const meetingName = context.getRoom() + const sender = context.getSender() + + const query = `name=${meetingName}&meetingID=${meetingId}&attendeePW=${attendeePW}&moderatorPW=${moderatorPW}&record=true` + const sha1string = "create" + query + `${sharedSecret}` + const sha = sha1(sha1string) + const url = bbbserver + "/bigbluebutton/api/create?" + query + `&checksum=${sha}` + + //make the create call + const response = await http.get(url) + + if(response.statusCode === 200){ + const joinquery = `fullName=something&meetingID=${meetingId}&password=${password}&redirect=true` + const joinsha1string = "join" + joinquery + `${this.sharedSecret}` + const joinsha1 = sha1(joinsha1string) + const joinurl = bbbserver + "/bigbluebutton/api/join?" + joinquery + `&checksum=${joinsha1}` + return joinurl + } else { + return undefined + } +} \ No newline at end of file diff --git a/functions/getGUID.ts b/functions/getGUID.ts new file mode 100644 index 0000000..acd9049 --- /dev/null +++ b/functions/getGUID.ts @@ -0,0 +1,11 @@ +export function getGUID(): string{ + let d = new Date().getTime(); + const guid = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => { + const r = (d + Math.random() * 16) % 16 | 0; + d = Math.floor(d / 16); + return (c === "x" ? r : (r & 0x3 | 0x8)).toString(16); + }); + return guid; +} + +// use this to generate the meeting id instead of putting it in app settings \ No newline at end of file diff --git a/reminder/processors/multipleProcessors.ts b/reminder/processors/multipleProcessors.ts new file mode 100644 index 0000000..8536908 --- /dev/null +++ b/reminder/processors/multipleProcessors.ts @@ -0,0 +1,33 @@ +import { IProcessor } from "@rocket.chat/apps-engine/definition/scheduler"; +import { weeklyNotification } from "./weeklyNotification"; + +export const multipleProcessors : Array = [ + { + id: `meet0`, + processor: weeklyNotification, + }, + { + id: `meet1`, + processor: weeklyNotification, + }, + { + id: `meet2`, + processor: weeklyNotification, + }, + { + id: `meet3`, + processor: weeklyNotification, + }, + { + id: `meet4`, + processor: weeklyNotification, + }, + { + id: `meet5`, + processor: weeklyNotification, + }, + { + id: `meet6`, + processor: weeklyNotification, + }, +] \ No newline at end of file diff --git a/reminder/processors/weeklyNotification.ts b/reminder/processors/weeklyNotification.ts index 5bbbb64..86636a0 100644 --- a/reminder/processors/weeklyNotification.ts +++ b/reminder/processors/weeklyNotification.ts @@ -1,14 +1,12 @@ import { IHttp, IModify, IPersistence, IRead } from "@rocket.chat/apps-engine/definition/accessors" import { IJobContext } from "@rocket.chat/apps-engine/definition/scheduler" -import { TextObjectType } from "@rocket.chat/apps-engine/definition/uikit" +import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit" import { IUser } from "@rocket.chat/apps-engine/definition/users" export const weeklyNotification = async (jobContext: IJobContext, read: IRead, modify: IModify, http: IHttp, persis: IPersistence): Promise => { const block = modify.getCreator().getBlockBuilder() - - // this.getLogger().log('Reached Processor') // "this" may be undefined - //Creating the block template + // this.getLogger().log('Reached Processor') block.addSectionBlock({ text: { type: TextObjectType.PLAINTEXT, @@ -26,18 +24,11 @@ export const weeklyNotification = async (jobContext: IJobContext, read: IRead, m }) ] }) - //Find the meeting channel from the App settings - const setting = read.getEnvironmentReader().getSettings() - const roomname = await setting.getValueById('Meeting_Channel') - const room = await read.getRoomReader().getByName(roomname); const sender: IUser = (await read.getUserReader().getAppUser()) as IUser - - if (room === undefined){ - console.log(`Room ${roomname} doesn't exist`) - } else { + const commandroom = jobContext.room + if(commandroom!=undefined){ await modify.getCreator().finish( - modify.getCreator().startMessage().setSender(sender).addBlocks(block.getBlocks()).setRoom(room) + modify.getCreator().startMessage().setSender(sender).addBlocks(block.getBlocks()).setRoom(commandroom) ) } - } \ No newline at end of file diff --git a/settings/appsettings.ts b/settings/appsettings.ts index 579072f..a03eb63 100644 --- a/settings/appsettings.ts +++ b/settings/appsettings.ts @@ -3,54 +3,54 @@ import { ISetting, SettingType } from "@rocket.chat/apps-engine/definition/setti export enum Settings { MeetingDay = 'Meeting_Day', MeetingTime = 'Meeting_Time', - MeetingChannel = 'Meeting_Channel', + MeetingChannels = 'Meeting_Channels', ReminderRole = 'Reminder_Role', } export const AppSettings : Array = [ + // { + // id: Settings.MeetingDay, + // type: SettingType.SELECT, + // packageValue: '', + // required: true, + // public: true, + // i18nLabel: 'Meeting Day', + // i18nDescription: 'The Day when the weekly meetings are supposed to be conducted.', + // values: [ + // {key: 'sunday', i18nLabel: 'Sunday'}, + // {key: 'monday', i18nLabel: 'Monday'}, + // {key: 'tuesday', i18nLabel: 'Tuesday'}, + // {key: 'wednesday', i18nLabel: 'Wednesday'}, + // {key: 'thursday', i18nLabel: 'Thursday'}, + // {key: 'friday', i18nLabel: 'Friday'}, + // {key: 'saturday', i18nLabel: 'Saturday'} + // ] + // }, + // { + // id: Settings.MeetingTime, + // type: SettingType.STRING, + // packageValue: '', + // required: true, + // public: true, + // i18nLabel: 'Meeting Time', + // i18nDescription: 'The Time when the weekly meetings are supposed to be conducted.', + // }, { - id: Settings.MeetingDay, - type: SettingType.SELECT, - packageValue: '', - required: true, - public: true, - i18nLabel: 'Meeting Day', - i18nDescription: 'The Day when the weekly meetings are supposed to be conducted.', - values: [ - {key: 'sunday', i18nLabel: 'Sunday'}, - {key: 'monday', i18nLabel: 'Monday'}, - {key: 'tuesday', i18nLabel: 'Tuesday'}, - {key: 'wednesday', i18nLabel: 'Wednesday'}, - {key: 'thursday', i18nLabel: 'Thursday'}, - {key: 'friday', i18nLabel: 'Friday'}, - {key: 'saturday', i18nLabel: 'Saturday'} - ] - }, - { - id: Settings.MeetingTime, - type: SettingType.STRING, - packageValue: '', - required: true, - public: true, - i18nLabel: 'Meeting Time', - i18nDescription: 'The Time when the weekly meetings are supposed to be conducted.', - }, - { - id: Settings.MeetingChannel, + id: Settings.MeetingChannels, type: SettingType.STRING, packageValue: '', required: true, public: true, - i18nLabel: 'Meeting Channel', + i18nLabel: 'Meeting Channels', i18nDescription: 'The Channel in which notifications are to be sent and commands to be usable', }, - { - id: Settings.ReminderRole, - type: SettingType.STRING, - packageValue: 'admin', - required: true, - public: true, - i18nLabel: 'Role that can disable reminders', - i18nDescription: '', - }, + // { + // id: Settings.ReminderRole, + // type: SettingType.STRING, + // packageValue: 'admin', + // required: true, + // public: true, + // i18nLabel: 'Role that can disable reminders', + // i18nDescription: '', + // }, ] \ No newline at end of file From bb4db15bd1bd4c2627bf8bb75821b26c676d8c2d Mon Sep 17 00:00:00 2001 From: P Aswini Kumar Date: Thu, 4 Aug 2022 09:22:38 +0530 Subject: [PATCH 5/9] clean pr --- BbbMeetApp.ts | 30 +--- commands/JoinCommand.ts | 129 +++++------------- functions/getGUID.ts | 2 +- functions/{MeetingURL.ts => getMeetingUrl.ts} | 2 +- reminder/processors/weeklyNotification.ts | 13 +- 5 files changed, 39 insertions(+), 137 deletions(-) rename functions/{MeetingURL.ts => getMeetingUrl.ts} (93%) diff --git a/BbbMeetApp.ts b/BbbMeetApp.ts index 8723d83..31a108f 100644 --- a/BbbMeetApp.ts +++ b/BbbMeetApp.ts @@ -19,7 +19,7 @@ import { IAppInfo } from '@rocket.chat/apps-engine/definition/metadata'; import { IRoom } from '@rocket.chat/apps-engine/definition/rooms'; import { IJobContext, IProcessor } from '@rocket.chat/apps-engine/definition/scheduler'; import { ISetting } from '@rocket.chat/apps-engine/definition/settings'; -import { TextObjectType } from '@rocket.chat/apps-engine/definition/uikit'; +import { IUIKitInteractionHandler, IUIKitResponse, TextObjectType, UIKitBlockInteractionContext } from '@rocket.chat/apps-engine/definition/uikit'; import { IUser } from '@rocket.chat/apps-engine/definition/users'; import { DebugCommand } from './commands/DebugCommand'; import { HelpCommand } from './commands/HelpCommand'; @@ -36,38 +36,10 @@ import { BbbSettings } from './settings/bbbsettings'; export class BbbMeetApp extends App { - // private processor_array: Array = []; - constructor(info: IAppInfo, logger: ILogger, accessors: IAppAccessors) { super(info, logger, accessors); } - // public async onSettingUpdated(setting: ISetting, configurationModify: IConfigurationModify, read: IRead, http: IHttp): Promise { - // const set = read.getEnvironmentReader().getSettings() - // const roomstr = await set.getValueById('Meeting_Channels') - // this.processor_array.length=0; - - // const toiroom = async (name: string): Promise => { - // const room = await read.getRoomReader().getByName(name) - // if (room === undefined) { - // this.getLogger().log(`room #${name} doesn't exist`) - // } - // return room - // } - - // const rooms = await Promise.all(roomstr.split(',').map(toiroom).filter(Boolean)) - // var index; - // for (index = 0; index < rooms.length; index++) { - // this.getLogger().log(rooms[index]); - - // this.processor_array.push( - // { - // id: `${rooms[index].slugifiedName}`, - // processor: weeklyNotification, - // } - // ) - // } - // } protected async extendConfiguration(configuration: IConfigurationExtend): Promise { diff --git a/commands/JoinCommand.ts b/commands/JoinCommand.ts index 8597492..b45d411 100644 --- a/commands/JoinCommand.ts +++ b/commands/JoinCommand.ts @@ -4,14 +4,13 @@ import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; import { IUser } from "@rocket.chat/apps-engine/definition/users"; -import { sha1 } from "../SHA1/sha1"; +import { getMeetingUrl } from "../functions/getMeetingUrl"; export class JoinCommand implements ISlashCommand { public command = "joinmeet"; public i18nDescription = "Lets you join weekly meetings"; public providesPreview = false; public i18nParamsExample = ""; - private sharedSecret : string; public async executor( context: SlashCommandContext, @@ -21,12 +20,21 @@ export class JoinCommand implements ISlashCommand { persis: IPersistence ): Promise { const set = read.getEnvironmentReader().getSettings() - const meetroomname = await set.getValueById('Meeting_Channel') - const meetroom = await read.getRoomReader().getByName(meetroomname); + const roomstr = await set.getValueById('Meeting_Channels') + const checkroom = async (name: string): Promise => { + const room = await read.getRoomReader().getByName(name) + if (room === undefined) { + return undefined + } + return room.slugifiedName + } + + const rooms : Array = await Promise.all(roomstr.split(',').map(checkroom).filter(Boolean)) + const commandroom = context.getRoom() - if(meetroom === undefined){ - console.log(`Room ${meetroomname} doesn't exist`) - } else if(meetroom.id !== commandroom.id) { + const roomind = rooms.indexOf(commandroom.slugifiedName) + + if(roomind == -1) { const sender : IUser = (await read.getUserReader().getAppUser()) as IUser const room : IRoom = context.getRoom() @@ -45,102 +53,35 @@ export class JoinCommand implements ISlashCommand { }) return; } - // Collect all the required settings - const bbbserver = await set.getValueById('BigBlueButton_Server_URL') - this.sharedSecret = await set.getValueById('BigBlueButton_sharedSecret') + const moderatorPW = await set.getValueById('BigBlueButton_moderatorPW') const attendeePW = await set.getValueById('BigBlueButton_attendeePW') - const meetingId = await set.getValueById('BigBlueButton_Meeting_Id') - const meetingName = await set.getValueById('BigBlueButton_Meeting_Name') - const [role, password]: Array = context.getArguments() - - switch (role){ - case "moderator": - if(password === moderatorPW){ - break; - } else { - const sender : IUser = (await read.getUserReader().getAppUser()) as IUser - const room : IRoom = context.getRoom() - - const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() - blockBuilder.addSectionBlock({ - text: { - type: TextObjectType.PLAINTEXT, - text: "Wrong Password!" - } - }) + const [password]: Array = context.getArguments() - await modify.getNotifier().notifyUser(context.getSender(), { - sender, - room, - blocks: blockBuilder.getBlocks() - }) - return; - } + if(password!==moderatorPW && password!==attendeePW){ + const sender : IUser = (await read.getUserReader().getAppUser()) as IUser + const room : IRoom = context.getRoom() - case "attendee": - if(password === attendeePW){ - break; - } else { - const sender : IUser = (await read.getUserReader().getAppUser()) as IUser - const room : IRoom = context.getRoom() - - const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() - blockBuilder.addSectionBlock({ - text: { - type: TextObjectType.PLAINTEXT, - text: "Wrong Password!" - } - }) - - await modify.getNotifier().notifyUser(context.getSender(), { - sender, - room, - blocks: blockBuilder.getBlocks() - }) - return; + const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() + blockBuilder.addSectionBlock({ + text: { + type: TextObjectType.PLAINTEXT, + text: "Wrong Password!" } + }) - default: - const sender : IUser = (await read.getUserReader().getAppUser()) as IUser - const room : IRoom = context.getRoom() - - const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() - blockBuilder.addSectionBlock({ - text: { - type: TextObjectType.PLAINTEXT, - text: "Please Enter Valid Arguments" - } - }) - - await modify.getNotifier().notifyUser(context.getSender(), { - sender, - room, - blocks: blockBuilder.getBlocks() - }) - return; - + await modify.getNotifier().notifyUser(context.getSender(), { + sender, + room, + blocks: blockBuilder.getBlocks() + }) + return; } - // Create the query string - const query = `name=${meetingName}&meetingID=${meetingId}&attendeePW=${attendeePW}&moderatorPW=${moderatorPW}&record=true` - const sha1string = "create" + query + `${this.sharedSecret}` - // Calculate sha1 value - const sha = sha1(sha1string) - //Generate the final url - const url = bbbserver + "/bigbluebutton/api/create?" + query + `&checksum=${sha}` + const meeetingURL = await getMeetingUrl(read,password,context,http) - //make the create call - const response = await http.get(url) - - if(response.statusCode === 200){ - //Create the join query string - const joinquery = `fullName=something&meetingID=${meetingId}&password=${password}&redirect=true` - const joinsha1string = "join" + joinquery + `${this.sharedSecret}` - const joinsha1 = sha1(joinsha1string) - const joinurl = bbbserver + "/bigbluebutton/api/join?" + joinquery + `&checksum=${joinsha1}` - + if(meeetingURL !== undefined){ const sender : IUser = (await read.getUserReader().getAppUser()) as IUser const room : IRoom = context.getRoom() @@ -159,7 +100,7 @@ export class JoinCommand implements ISlashCommand { type: TextObjectType.PLAINTEXT, text: 'Join' }, - url: joinurl + url: meeetingURL }) ] }) diff --git a/functions/getGUID.ts b/functions/getGUID.ts index acd9049..c6962ef 100644 --- a/functions/getGUID.ts +++ b/functions/getGUID.ts @@ -8,4 +8,4 @@ export function getGUID(): string{ return guid; } -// use this to generate the meeting id instead of putting it in app settings \ No newline at end of file +// This is used to generate the meeting id instead of putting it in app settings \ No newline at end of file diff --git a/functions/MeetingURL.ts b/functions/getMeetingUrl.ts similarity index 93% rename from functions/MeetingURL.ts rename to functions/getMeetingUrl.ts index 040e52f..b90c75c 100644 --- a/functions/MeetingURL.ts +++ b/functions/getMeetingUrl.ts @@ -24,7 +24,7 @@ export async function getMeetingUrl(read: IRead, password: string, context: Slas const response = await http.get(url) if(response.statusCode === 200){ - const joinquery = `fullName=something&meetingID=${meetingId}&password=${password}&redirect=true` + const joinquery = `fullName=${sender.name}&meetingID=${meetingId}&password=${password}&redirect=true` const joinsha1string = "join" + joinquery + `${this.sharedSecret}` const joinsha1 = sha1(joinsha1string) const joinurl = bbbserver + "/bigbluebutton/api/join?" + joinquery + `&checksum=${joinsha1}` diff --git a/reminder/processors/weeklyNotification.ts b/reminder/processors/weeklyNotification.ts index 86636a0..ee980bd 100644 --- a/reminder/processors/weeklyNotification.ts +++ b/reminder/processors/weeklyNotification.ts @@ -10,20 +10,9 @@ export const weeklyNotification = async (jobContext: IJobContext, read: IRead, m block.addSectionBlock({ text: { type: TextObjectType.PLAINTEXT, - text: 'The scheduled weekly meeting is about to start! Join by clicking on the "Join" button below' + text: "The scheduled weekly meeting is about to start! Join by using the /joinmeet command" } }) - block.addActionsBlock({ - elements: [ - block.newButtonElement({ - actionId: "joinbutton", - text: { - type: TextObjectType.PLAINTEXT, - text: 'Join' - }, - }) - ] - }) const sender: IUser = (await read.getUserReader().getAppUser()) as IUser const commandroom = jobContext.room if(commandroom!=undefined){ From 067ea8414ec040e496b370b0cf52de100bddaf23 Mon Sep 17 00:00:00 2001 From: P Aswini Kumar Date: Thu, 4 Aug 2022 09:45:48 +0530 Subject: [PATCH 6/9] clea pr(2) --- commands/DebugCommand.ts | 44 ---------------------------------------- 1 file changed, 44 deletions(-) delete mode 100644 commands/DebugCommand.ts diff --git a/commands/DebugCommand.ts b/commands/DebugCommand.ts deleted file mode 100644 index e65c9b1..0000000 --- a/commands/DebugCommand.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder } from "@rocket.chat/apps-engine/definition/accessors"; -import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; -import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; -import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; -import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; -import { IUser } from "@rocket.chat/apps-engine/definition/users"; - -// I know i can use the app logger but i like this. - -export class DebugCommand implements ISlashCommand { - public command = "debugmeet"; - public i18nDescription = "debug"; - public providesPreview = false; - public i18nParamsExample = ""; - - public async executor( - context: SlashCommandContext, - read: IRead, - modify: IModify, - http: IHttp, - persis: IPersistence - ): Promise { - const sender : IUser = (await read.getUserReader().getAppUser()) as IUser - const room : IRoom = context.getRoom() - const customFields = room.customFields - if(customFields===undefined){ - return - } - - const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() - blockBuilder.addSectionBlock({ - text: { - type: TextObjectType.MARKDOWN, - text: `customFields:${JSON.stringify(customFields)}\n`, - } - }) - - await modify.getNotifier().notifyUser(context.getSender(), { - sender, - room, - blocks: blockBuilder.getBlocks() - }) - } -} \ No newline at end of file From ceab59e33ac83267c296955c361bc3350ece9dfa Mon Sep 17 00:00:00 2001 From: P Aswini Kumar Date: Mon, 8 Aug 2022 10:08:53 +0530 Subject: [PATCH 7/9] resolve requested changes --- BbbMeetApp.ts | 6 +--- commands/HelpCommand.ts | 39 ---------------------- commands/ScheduleMeetCommand.ts | 1 - commands/StopReminder.ts | 58 --------------------------------- 4 files changed, 1 insertion(+), 103 deletions(-) delete mode 100644 commands/HelpCommand.ts delete mode 100644 commands/StopReminder.ts diff --git a/BbbMeetApp.ts b/BbbMeetApp.ts index 31a108f..6327455 100644 --- a/BbbMeetApp.ts +++ b/BbbMeetApp.ts @@ -19,16 +19,11 @@ import { IAppInfo } from '@rocket.chat/apps-engine/definition/metadata'; import { IRoom } from '@rocket.chat/apps-engine/definition/rooms'; import { IJobContext, IProcessor } from '@rocket.chat/apps-engine/definition/scheduler'; import { ISetting } from '@rocket.chat/apps-engine/definition/settings'; -import { IUIKitInteractionHandler, IUIKitResponse, TextObjectType, UIKitBlockInteractionContext } from '@rocket.chat/apps-engine/definition/uikit'; import { IUser } from '@rocket.chat/apps-engine/definition/users'; -import { DebugCommand } from './commands/DebugCommand'; -import { HelpCommand } from './commands/HelpCommand'; import { JoinCommand } from './commands/JoinCommand'; import { MeetCommand } from './commands/Meet'; import { ScheduleMeetCommand } from './commands/ScheduleMeetCommand'; -// import { StopReminder } from './commands/StopReminder'; import { WebhookEndpoint } from './endpoints/webhook'; -import { jobId } from './reminder/enums/jobid'; import { multipleProcessors } from './reminder/processors/multipleProcessors'; import { weeklyNotification } from './reminder/processors/weeklyNotification'; import { AppSettings } from './settings/appsettings'; @@ -47,6 +42,7 @@ export class BbbMeetApp extends App { await configuration.slashCommands.provideSlashCommand(new ScheduleMeetCommand()) await configuration.slashCommands.provideSlashCommand(new MeetCommand()) + await configuration.slashCommands.provideSlashCommand(new JoinCommand()) //Register processors await configuration.scheduler.registerProcessors(multipleProcessors); diff --git a/commands/HelpCommand.ts b/commands/HelpCommand.ts deleted file mode 100644 index b437aca..0000000 --- a/commands/HelpCommand.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder } from "@rocket.chat/apps-engine/definition/accessors"; -import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; -import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; -import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; -import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; -import { IUser } from "@rocket.chat/apps-engine/definition/users"; - -export class HelpCommand implements ISlashCommand { - public command = "helpmeet"; - public i18nDescription = "Tells you how the app / app commands work"; - public providesPreview = false; - public i18nParamsExample = ""; - - public async executor( - context: SlashCommandContext, - read: IRead, - modify: IModify, - http: IHttp, - persis: IPersistence - ): Promise { - const sender : IUser = (await read.getUserReader().getAppUser()) as IUser - const room : IRoom = context.getRoom() - - // A help command which will be completed at the end of the project - const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() - blockBuilder.addSectionBlock({ - text: { - type: TextObjectType.PLAINTEXT, - text: 'You have implemented the help command' - } - }) - - await modify.getNotifier().notifyUser(context.getSender(), { - sender, - room, - blocks: blockBuilder.getBlocks() - }) - } -} \ No newline at end of file diff --git a/commands/ScheduleMeetCommand.ts b/commands/ScheduleMeetCommand.ts index eadf45e..3414b35 100644 --- a/commands/ScheduleMeetCommand.ts +++ b/commands/ScheduleMeetCommand.ts @@ -4,7 +4,6 @@ import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; import { IUser } from "@rocket.chat/apps-engine/definition/users"; -import { jobId } from "../reminder/enums/jobid"; export class ScheduleMeetCommand implements ISlashCommand { public command = "schedulemeet"; diff --git a/commands/StopReminder.ts b/commands/StopReminder.ts deleted file mode 100644 index 8a23504..0000000 --- a/commands/StopReminder.ts +++ /dev/null @@ -1,58 +0,0 @@ -// import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder } from "@rocket.chat/apps-engine/definition/accessors"; -// import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; -// import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; -// import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; -// import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; -// import { IUser } from "@rocket.chat/apps-engine/definition/users"; -// import { jobId } from "../reminder/enums/jobid"; - -// export class StopReminder implements ISlashCommand { -// public command = "stopreminder"; -// public i18nDescription = "Lets you to stop the weekly reminder messages"; -// public providesPreview = false; -// public i18nParamsExample = ""; - -// public async executor( -// context: SlashCommandContext, -// read: IRead, -// modify: IModify, -// http: IHttp, -// persis: IPersistence -// ): Promise { -// const creator : IModifyCreator = modify.getCreator() -// const sender : IUser = (await read.getUserReader().getAppUser()) as IUser -// const room : IRoom = context.getRoom() - -// const set = read.getEnvironmentReader().getSettings() -// const role = await set.getValueById('Reminder_Role') -// const userRoles = context.getSender().roles - -// if(userRoles.includes(role)){ -// modify.getScheduler().cancelJob(jobId.Reminder) -// const messageTemplate : IMessage = { -// text: 'The Weekly Meetings Reminder is now disabled', -// room, -// sender -// } -// const messageBuilder : IMessageBuilder = creator.startMessage(messageTemplate) -// await creator.finish(messageBuilder) -// } else { -// const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() -// blockBuilder.addSectionBlock({ -// text: { -// type: TextObjectType.PLAINTEXT, -// text: 'You are not allowed to use this command.' -// } -// }) -// await modify.getNotifier().notifyUser(context.getSender(), { -// sender, -// room, -// blocks: blockBuilder.getBlocks() -// }) -// } -// } -// } - -// Felipe asked me to remove this because the app is supposed to send notifications only once a week -// which isnt too much to make a stop notification slash command -// Keeping this for now \ No newline at end of file From a5d993ea644df359e326797cced4d160a8c10b7b Mon Sep 17 00:00:00 2001 From: P Aswini Kumar Date: Tue, 9 Aug 2022 04:48:04 +0530 Subject: [PATCH 8/9] clean pr --- BbbMeetApp.ts | 28 +++++-------------- commands/ScheduleMeetCommand.ts | 5 ---- reminder/processors/multipleProcessors.ts | 33 ----------------------- 3 files changed, 6 insertions(+), 60 deletions(-) delete mode 100644 reminder/processors/multipleProcessors.ts diff --git a/BbbMeetApp.ts b/BbbMeetApp.ts index 6327455..b58e194 100644 --- a/BbbMeetApp.ts +++ b/BbbMeetApp.ts @@ -1,33 +1,14 @@ import { IAppAccessors, - IAppInstallationContext, IConfigurationExtend, - IConfigurationModify, - IEnvironmentRead, - IHttp, ILogger, - IMessageBuilder, - IModify, - IModifyCreator, - IPersistence, - IRead, } from '@rocket.chat/apps-engine/definition/accessors'; -import { ApiSecurity, ApiVisibility } from '@rocket.chat/apps-engine/definition/api'; import { App } from '@rocket.chat/apps-engine/definition/App'; -import { IMessage } from '@rocket.chat/apps-engine/definition/messages'; import { IAppInfo } from '@rocket.chat/apps-engine/definition/metadata'; -import { IRoom } from '@rocket.chat/apps-engine/definition/rooms'; -import { IJobContext, IProcessor } from '@rocket.chat/apps-engine/definition/scheduler'; -import { ISetting } from '@rocket.chat/apps-engine/definition/settings'; -import { IUser } from '@rocket.chat/apps-engine/definition/users'; import { JoinCommand } from './commands/JoinCommand'; -import { MeetCommand } from './commands/Meet'; import { ScheduleMeetCommand } from './commands/ScheduleMeetCommand'; -import { WebhookEndpoint } from './endpoints/webhook'; -import { multipleProcessors } from './reminder/processors/multipleProcessors'; import { weeklyNotification } from './reminder/processors/weeklyNotification'; import { AppSettings } from './settings/appsettings'; -import { BbbSettings } from './settings/bbbsettings'; export class BbbMeetApp extends App { @@ -35,16 +16,19 @@ export class BbbMeetApp extends App { super(info, logger, accessors); } - protected async extendConfiguration(configuration: IConfigurationExtend): Promise { await Promise.all(AppSettings.map((setting) => configuration.settings.provideSetting(setting))); await configuration.slashCommands.provideSlashCommand(new ScheduleMeetCommand()) - await configuration.slashCommands.provideSlashCommand(new MeetCommand()) await configuration.slashCommands.provideSlashCommand(new JoinCommand()) //Register processors - await configuration.scheduler.registerProcessors(multipleProcessors); + await configuration.scheduler.registerProcessors([ + { + id : "weeklyreminder", + processor: weeklyNotification, + } + ]); } } \ No newline at end of file diff --git a/commands/ScheduleMeetCommand.ts b/commands/ScheduleMeetCommand.ts index 3414b35..95c7949 100644 --- a/commands/ScheduleMeetCommand.ts +++ b/commands/ScheduleMeetCommand.ts @@ -1,6 +1,4 @@ import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder, ILogger } from "@rocket.chat/apps-engine/definition/accessors"; -import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; -import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; import { IUser } from "@rocket.chat/apps-engine/definition/users"; @@ -69,9 +67,6 @@ export class ScheduleMeetCommand implements ISlashCommand { blocks: blockBuilder.getBlocks() }) - - - await modify.getScheduler().scheduleRecurring({ id: `meet${roomind}`, interval: `20 seconds`, diff --git a/reminder/processors/multipleProcessors.ts b/reminder/processors/multipleProcessors.ts deleted file mode 100644 index 8536908..0000000 --- a/reminder/processors/multipleProcessors.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { IProcessor } from "@rocket.chat/apps-engine/definition/scheduler"; -import { weeklyNotification } from "./weeklyNotification"; - -export const multipleProcessors : Array = [ - { - id: `meet0`, - processor: weeklyNotification, - }, - { - id: `meet1`, - processor: weeklyNotification, - }, - { - id: `meet2`, - processor: weeklyNotification, - }, - { - id: `meet3`, - processor: weeklyNotification, - }, - { - id: `meet4`, - processor: weeklyNotification, - }, - { - id: `meet5`, - processor: weeklyNotification, - }, - { - id: `meet6`, - processor: weeklyNotification, - }, -] \ No newline at end of file From cdc0a3f17719412fc051e6aac14fb8af23011687 Mon Sep 17 00:00:00 2001 From: P Aswini Kumar Date: Tue, 23 Aug 2022 09:34:49 +0530 Subject: [PATCH 9/9] debugging join command --- BbbMeetApp.ts | 2 + commands/Meet.ts | 76 -------------------------------------- functions/getMeetingUrl.ts | 4 +- settings/appsettings.ts | 36 ------------------ settings/bbbsettings.ts | 18 --------- 5 files changed, 4 insertions(+), 132 deletions(-) delete mode 100644 commands/Meet.ts diff --git a/BbbMeetApp.ts b/BbbMeetApp.ts index b58e194..721a74e 100644 --- a/BbbMeetApp.ts +++ b/BbbMeetApp.ts @@ -9,6 +9,7 @@ import { JoinCommand } from './commands/JoinCommand'; import { ScheduleMeetCommand } from './commands/ScheduleMeetCommand'; import { weeklyNotification } from './reminder/processors/weeklyNotification'; import { AppSettings } from './settings/appsettings'; +import { BbbSettings } from './settings/bbbsettings'; export class BbbMeetApp extends App { @@ -19,6 +20,7 @@ export class BbbMeetApp extends App { protected async extendConfiguration(configuration: IConfigurationExtend): Promise { await Promise.all(AppSettings.map((setting) => configuration.settings.provideSetting(setting))); + await Promise.all(BbbSettings.map((setting) => configuration.settings.provideSetting(setting))); await configuration.slashCommands.provideSlashCommand(new ScheduleMeetCommand()) await configuration.slashCommands.provideSlashCommand(new JoinCommand()) diff --git a/commands/Meet.ts b/commands/Meet.ts deleted file mode 100644 index 7d7a874..0000000 --- a/commands/Meet.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { IRead, IModify, IHttp, IPersistence, IModifyCreator, IMessageBuilder } from "@rocket.chat/apps-engine/definition/accessors"; -import { IMessage } from "@rocket.chat/apps-engine/definition/messages"; -import { IRoom } from "@rocket.chat/apps-engine/definition/rooms"; -import {ISlashCommand, SlashCommandContext} from "@rocket.chat/apps-engine/definition/slashcommands"; -import { BlockBuilder, TextObjectType } from "@rocket.chat/apps-engine/definition/uikit"; -import { IUser } from "@rocket.chat/apps-engine/definition/users"; -import { jobId } from "../reminder/enums/jobid"; -import { ILogger } from "@rocket.chat/apps-engine/definition/accessors"; - -export class MeetCommand implements ISlashCommand { - public command = "meet"; - public i18nDescription = ""; - public providesPreview = false; - public i18nParamsExample = ""; - public logger : ILogger; - - public async executor( - context: SlashCommandContext, - read: IRead, - modify: IModify, - http: IHttp, - persis: IPersistence - ): Promise { - // await modify.getScheduler().cancelJob(jobId.Reminder) - const commandroom = context.getRoom() - - const set = read.getEnvironmentReader().getSettings() - const roomstr = await set.getValueById('Meeting_Channels') - - const toiroom = async (name: string): Promise => { - const room = await read.getRoomReader().getByName(name) - // if (room === undefined) { - // this.logger.debug(`room #${name} doesn't exist`) - // } - return room - } - - const rooms = await Promise.all(roomstr.split(',').map(toiroom).filter(Boolean)) - - // if(!rooms.includes(commandroom)){ - // this.logger.debug(`room #${commandroom.slugifiedName} is not a meeting channel`) - // return; - // } - - const [time, day]: Array = context.getArguments() - var [hour,minute] = time.split(":") - - const hrs = parseInt(hour as string, 10) - const mins = parseInt(minute as string, 10) - - const dayind = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'].indexOf(day) - - await modify.getScheduler().scheduleRecurring({ - id: `${commandroom.slugifiedName}`, - // interval: `${mins} ${hrs} * * ${dayind}`, - interval: '20 seconds', - skipImmediate: true, - data: {room: commandroom} - }) - - const sender : IUser = (await read.getUserReader().getAppUser()) as IUser - const blockBuilder: BlockBuilder = modify.getCreator().getBlockBuilder() - blockBuilder.addSectionBlock({ - text: { - type: TextObjectType.PLAINTEXT, - text: `${mins} ${hrs} * * ${dayind}\n ${commandroom.slugifiedName}` - } - }) - - await modify.getNotifier().notifyUser(context.getSender(), { - sender, - room: commandroom, - blocks: blockBuilder.getBlocks() - }) - } -} \ No newline at end of file diff --git a/functions/getMeetingUrl.ts b/functions/getMeetingUrl.ts index b90c75c..51ad9f6 100644 --- a/functions/getMeetingUrl.ts +++ b/functions/getMeetingUrl.ts @@ -12,7 +12,7 @@ export async function getMeetingUrl(read: IRead, password: string, context: Slas const moderatorPW = await set.getValueById('BigBlueButton_moderatorPW') const attendeePW = await set.getValueById('BigBlueButton_attendeePW') const meetingId = getGUID() - const meetingName = context.getRoom() + const meetingName = context.getRoom().slugifiedName const sender = context.getSender() const query = `name=${meetingName}&meetingID=${meetingId}&attendeePW=${attendeePW}&moderatorPW=${moderatorPW}&record=true` @@ -25,7 +25,7 @@ export async function getMeetingUrl(read: IRead, password: string, context: Slas if(response.statusCode === 200){ const joinquery = `fullName=${sender.name}&meetingID=${meetingId}&password=${password}&redirect=true` - const joinsha1string = "join" + joinquery + `${this.sharedSecret}` + const joinsha1string = "join" + joinquery + `${sharedSecret}` const joinsha1 = sha1(joinsha1string) const joinurl = bbbserver + "/bigbluebutton/api/join?" + joinquery + `&checksum=${joinsha1}` return joinurl diff --git a/settings/appsettings.ts b/settings/appsettings.ts index a03eb63..0255ae2 100644 --- a/settings/appsettings.ts +++ b/settings/appsettings.ts @@ -8,33 +8,6 @@ export enum Settings { } export const AppSettings : Array = [ - // { - // id: Settings.MeetingDay, - // type: SettingType.SELECT, - // packageValue: '', - // required: true, - // public: true, - // i18nLabel: 'Meeting Day', - // i18nDescription: 'The Day when the weekly meetings are supposed to be conducted.', - // values: [ - // {key: 'sunday', i18nLabel: 'Sunday'}, - // {key: 'monday', i18nLabel: 'Monday'}, - // {key: 'tuesday', i18nLabel: 'Tuesday'}, - // {key: 'wednesday', i18nLabel: 'Wednesday'}, - // {key: 'thursday', i18nLabel: 'Thursday'}, - // {key: 'friday', i18nLabel: 'Friday'}, - // {key: 'saturday', i18nLabel: 'Saturday'} - // ] - // }, - // { - // id: Settings.MeetingTime, - // type: SettingType.STRING, - // packageValue: '', - // required: true, - // public: true, - // i18nLabel: 'Meeting Time', - // i18nDescription: 'The Time when the weekly meetings are supposed to be conducted.', - // }, { id: Settings.MeetingChannels, type: SettingType.STRING, @@ -44,13 +17,4 @@ export const AppSettings : Array = [ i18nLabel: 'Meeting Channels', i18nDescription: 'The Channel in which notifications are to be sent and commands to be usable', }, - // { - // id: Settings.ReminderRole, - // type: SettingType.STRING, - // packageValue: 'admin', - // required: true, - // public: true, - // i18nLabel: 'Role that can disable reminders', - // i18nDescription: '', - // }, ] \ No newline at end of file diff --git a/settings/bbbsettings.ts b/settings/bbbsettings.ts index 4daf53f..244e78d 100644 --- a/settings/bbbsettings.ts +++ b/settings/bbbsettings.ts @@ -46,22 +46,4 @@ export const BbbSettings : Array = [ i18nLabel: 'BigBlueButton attendeePW', i18nDescription: 'The password to let the person join as an attendee of the meeting', }, - { - id: Settings.BbbMeetingName, - type: SettingType.STRING, - packageValue: '', - required: true, - public: true, - i18nLabel: 'BigBlueButton Meeting Name', - i18nDescription: 'The name of the meeting', - }, - { - id: Settings.BbbMeetingId, - type: SettingType.STRING, - packageValue: '', - required: true, - public: true, - i18nLabel: 'BigBlueButton Meeting Id', - i18nDescription: 'The Id of the meeting', - }, ] \ No newline at end of file