From 097a24fbbdbe6d390fd9a9fe01a19665c985c435 Mon Sep 17 00:00:00 2001 From: guqing <38999863+guqing@users.noreply.github.com> Date: Wed, 19 Feb 2025 16:02:12 +0800 Subject: [PATCH] feat(ui): add Slack app integration for MaxKB app --- ui/src/assets/logo_slack.svg | 1 + .../locales/lang/en-US/views/application.ts | 7 ++++++ .../locales/lang/zh-CN/views/application.ts | 8 ++++++- .../locales/lang/zh-Hant/views/application.ts | 7 ++++++ .../views/application/ApplicationAccess.vue | 8 +++++++ .../component/AccessSettingDrawer.vue | 23 ++++++++++++++++++- 6 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 ui/src/assets/logo_slack.svg diff --git a/ui/src/assets/logo_slack.svg b/ui/src/assets/logo_slack.svg new file mode 100644 index 000000000..972c87fce --- /dev/null +++ b/ui/src/assets/logo_slack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/src/locales/lang/en-US/views/application.ts b/ui/src/locales/lang/en-US/views/application.ts index 9b1127958..82ed3fef3 100644 --- a/ui/src/locales/lang/en-US/views/application.ts +++ b/ui/src/locales/lang/en-US/views/application.ts @@ -166,6 +166,8 @@ export default { wechatPlatform: 'WeChat Open Platform', dingtalkPlatform: 'DingTalk Open Platform', larkPlatform: 'Lark Open Platform', + slack: 'Slack', + slackTip: 'Create Slack intelligent APP', wecomSetting: { title: 'WeCom Configuration', cropId: 'Crop ID', @@ -206,6 +208,11 @@ export default { urlInfo: '-Events and callbacks - event configuration - configure the "request address" of the subscription method' }, + slackSetting: { + title: 'Slack Configuration', + signingSecretPlaceholder: 'Please enter signing secret', + botUserTokenPlaceholder: 'Please enter bot user token', + }, copyUrl: 'Copy the link and fill it in' }, hitTest: { diff --git a/ui/src/locales/lang/zh-CN/views/application.ts b/ui/src/locales/lang/zh-CN/views/application.ts index 4c4cb7781..0f6733e13 100644 --- a/ui/src/locales/lang/zh-CN/views/application.ts +++ b/ui/src/locales/lang/zh-CN/views/application.ts @@ -150,6 +150,8 @@ export default { wechatTip: '打造公众号智能应用', lark: '飞书应用', larkTip: '打造飞书智能应用', + slack: 'Slack', + slackTip: '打造 Slack 智能应用', setting: '配置', callback: '回调地址', callbackTip: '请输入回调地址', @@ -193,7 +195,11 @@ export default { verificationTokenPlaceholder: '请输入Verification Token', urlInfo: '-事件与回调-事件配置-配置订阅方式的 "请求地址" 中' }, - + slackSetting: { + title: 'Slack 应用配置', + signingSecretPlaceholder: '请输入 Signing Secret', + botUserTokenPlaceholder: '请输入 Bot User Token', + }, copyUrl: '复制链接填入到' }, hitTest: { diff --git a/ui/src/locales/lang/zh-Hant/views/application.ts b/ui/src/locales/lang/zh-Hant/views/application.ts index 205d6e1f5..be2c236ba 100644 --- a/ui/src/locales/lang/zh-Hant/views/application.ts +++ b/ui/src/locales/lang/zh-Hant/views/application.ts @@ -149,6 +149,8 @@ export default { wechatTip: '打造公眾號智慧應用', lark: '飛書應用', larkTip: '打造飛書智慧應用', + slack: 'Slack', + slackTip: '打造 Slack 智慧應用', setting: '配置', callback: '回呼位址', callbackTip: '請輸入回呼位址', @@ -192,6 +194,11 @@ export default { verificationTokenPlaceholder: '請輸入Verification Token', urlInfo: '-事件與回呼-事件配置-配置訂閱方式的 "請求位址" 中' }, + slackSetting: { + title: 'Slack 應用配置', + signingSecretPlaceholder: '請輸入 Signing Secret', + botUserTokenPlaceholder: '請輸入 Bot User Token', + }, copyUrl: '複製連結填入到' }, hitTest: { diff --git a/ui/src/views/application/ApplicationAccess.vue b/ui/src/views/application/ApplicationAccess.vue index 6bf32f549..ce2fe6aab 100644 --- a/ui/src/views/application/ApplicationAccess.vue +++ b/ui/src/views/application/ApplicationAccess.vue @@ -83,6 +83,14 @@ const platforms = reactive([ description: t('views.application.applicationAccess.larkTip'), isActive: false, exists: false + }, + { + key: 'slack', + logoSrc: new URL(`../../assets/logo_slack.svg`, import.meta.url).href, + name: t('views.application.applicationAccess.slack'), + description: t('views.application.applicationAccess.slackTip'), + isActive: false, + exists: false } ]) diff --git a/ui/src/views/application/component/AccessSettingDrawer.vue b/ui/src/views/application/component/AccessSettingDrawer.vue index a011b8f2d..7b6d8f68e 100644 --- a/ui/src/views/application/component/AccessSettingDrawer.vue +++ b/ui/src/views/application/component/AccessSettingDrawer.vue @@ -136,7 +136,8 @@ const form = reactive({ encoding_aes_key: '', callback_url: '' }, - feishu: { app_id: '', app_secret: '', verification_token: '', callback_url: '' } + feishu: { app_id: '', app_secret: '', verification_token: '', callback_url: '' }, + slack: { signing_secret: '', bot_user_token: '', callback_url: '' } }) const rules = reactive<{ [propName: string]: any }>({ @@ -245,6 +246,22 @@ const rules = reactive<{ [propName: string]: any }>({ trigger: 'blur' } ] + }, + slack: { + signing_secret: [ + { + required: true, + message: t('views.application.applicationAccess.slackSetting.signingSecretPlaceholder'), + trigger: 'blur' + } + ], + bot_user_token: [ + { + required: true, + message: t('views.application.applicationAccess.slackSetting.botUserTokenPlaceholder'), + trigger: 'blur' + } + ] } }) @@ -282,6 +299,10 @@ const configFields: { [propName: string]: { [propName: string]: any } } = { app_id: { label: 'App ID', placeholder: '' }, app_secret: { label: 'App Secret', placeholder: '' }, verification_token: { label: 'Verification Token', placeholder: '' } + }, + slack: { + signing_secret: { label: 'Signing Secret', placeholder: '' }, + bot_user_token: { label: 'Bot User Token', placeholder: '' } } }