Publish app - feishu and wecom (#2375)

* feat(app publish): feishu bot (#2290)

* feat: feishu publish channel fe

* feat: enable feishu fe,
feat: feishu token api

* feat: feishu bot

* chore: extract saveChat from projects/app

* chore: remove debug log output

* feat: Basic Info

* chore: feishu bot fe adjusting

* feat: feishu bot docs

* feat: new tmpData collection for all tmpdata

* chore: compress the image

* perf: feishu config

* feat: source name

* perf: text desc

* perf: load system plugins

* perf: chat source

* feat(publish): Wecom bot (#2343)

* chore: Wecom Config

* feat(fe): wecom config fe

* feat: wecom fe

* chore: uses the newest editmodal

* feat: update png; adjust the fe

* chore: adjust fe

* perf: publish app ui

---------

Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com>
This commit is contained in:
Archer
2024-08-13 21:52:18 +08:00
committed by GitHub
parent 7417de74da
commit 0f3418daf5
71 changed files with 1301 additions and 498 deletions

View File

@@ -2,5 +2,6 @@ export enum PublishChannelEnum {
share = 'share',
iframe = 'iframe',
apikey = 'apikey',
feishu = 'feishu'
feishu = 'feishu',
wecom = 'wecom'
}

View File

@@ -1,8 +1,9 @@
import { AppSchema } from 'core/app/type';
import { AppSchema } from '../../core/app/type';
import { PublishChannelEnum } from './constant';
import { RequireOnlyOne } from '../../common/type/utils';
// Feishu Config interface
export interface FeishuType {
export interface FeishuAppType {
appId: string;
appSecret: string;
// Encrypt config
@@ -10,29 +11,28 @@ export interface FeishuType {
encryptKey?: string; // no secret if null
// Token Verification
// refer to: https://open.feishu.cn/document/server-docs/event-subscription-guide/event-subscription-configure-/encrypt-key-encryption-configuration-case
verificationToken: string;
verificationToken?: string;
}
// TODO: Unused
export interface WecomType {
ReplyLimit: Boolean;
defaultResponse: string;
immediateResponse: boolean;
WXWORK_TOKEN: string;
WXWORK_AESKEY: string;
WXWORK_SECRET: string;
WXWORD_ID: string;
export interface WecomAppType {
AgentId: string;
CorpId: string;
SuiteSecret: string;
CallbackToken: string;
CallbackEncodingAesKey: string;
}
export type OutLinkSchema<T = void> = {
// TODO: unused
export interface WechatAppType {}
export type OutlinkAppType = FeishuAppType | WecomAppType | undefined;
export type OutLinkSchema<T extends OutlinkAppType = undefined> = {
_id: string;
shareId: string;
teamId: string;
tmbId: string;
appId: string;
// teamId: Schema.Types.ObjectId;
// tmbId: Schema.Types.ObjectId;
// appId: Schema.Types.ObjectId;
name: string;
usagePoints: number;
lastTime: Date;
@@ -55,7 +55,7 @@ export type OutLinkSchema<T = void> = {
hookUrl?: string;
};
app?: T;
app: T;
};
// to handle MongoDB querying
@@ -64,10 +64,10 @@ export type OutLinkWithAppType = Omit<OutLinkSchema, 'appId'> & {
};
// Edit the Outlink
export type OutLinkEditType<T = void> = {
export type OutLinkEditType<T = undefined> = {
_id?: string;
name: string;
responseDetail: OutLinkSchema<T>['responseDetail'];
responseDetail?: OutLinkSchema<T>['responseDetail'];
// response when request
immediateResponse?: string;
// response when error or other situation