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:
@@ -2,5 +2,6 @@ export enum PublishChannelEnum {
|
||||
share = 'share',
|
||||
iframe = 'iframe',
|
||||
apikey = 'apikey',
|
||||
feishu = 'feishu'
|
||||
feishu = 'feishu',
|
||||
wecom = 'wecom'
|
||||
}
|
||||
|
||||
38
packages/global/support/outLink/type.d.ts
vendored
38
packages/global/support/outLink/type.d.ts
vendored
@@ -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
|
||||
|
||||
31
packages/global/support/tmpData/constant.ts
Normal file
31
packages/global/support/tmpData/constant.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
export enum TmpDataEnum {
|
||||
FeishuAccessToken = 'feishu_access_token',
|
||||
WecomAccessToken = 'wecom_access_token'
|
||||
}
|
||||
|
||||
type _TmpDataMetadata = {
|
||||
[TmpDataEnum.FeishuAccessToken]: {
|
||||
FeishuAppId: string;
|
||||
};
|
||||
[TmpDataEnum.WecomAccessToken]: {
|
||||
CorpId: string;
|
||||
AgentId: string;
|
||||
};
|
||||
};
|
||||
|
||||
type _TmpDataType = {
|
||||
[TmpDataEnum.FeishuAccessToken]: {
|
||||
accessToken: string;
|
||||
};
|
||||
[TmpDataEnum.WecomAccessToken]: {
|
||||
accessToken: string;
|
||||
};
|
||||
};
|
||||
|
||||
export const TmpDataExpireTime = {
|
||||
[TmpDataEnum.FeishuAccessToken]: 1000 * 60 * 60 * 1.5, // 1.5 hours
|
||||
[TmpDataEnum.WecomAccessToken]: 1000 * 60 * 60 * 2 // 2 hours
|
||||
};
|
||||
|
||||
export type TmpDataMetadata<T extends TmpDataEnum> = _TmpDataMetadata[T];
|
||||
export type TmpDataType<T extends TmpDataEnum> = _TmpDataType[T];
|
||||
5
packages/global/support/tmpData/type.d.ts
vendored
Normal file
5
packages/global/support/tmpData/type.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
export type TmpDataSchema<T> = {
|
||||
dataId: string;
|
||||
data: T;
|
||||
expireAt: Date;
|
||||
};
|
||||
@@ -21,6 +21,6 @@ export type CreateUsageProps = {
|
||||
appId?: string;
|
||||
pluginId?: string;
|
||||
totalPoints: number;
|
||||
source: UsageSourceEnum;
|
||||
source: `${UsageSourceEnum}`;
|
||||
list: UsageListItemType[];
|
||||
};
|
||||
|
||||
@@ -5,7 +5,8 @@ export enum UsageSourceEnum {
|
||||
api = 'api',
|
||||
shareLink = 'shareLink',
|
||||
training = 'training',
|
||||
cronJob = 'cronJob'
|
||||
cronJob = 'cronJob',
|
||||
feishu = 'feishu'
|
||||
}
|
||||
|
||||
export const UsageSourceMap = {
|
||||
@@ -23,5 +24,8 @@ export const UsageSourceMap = {
|
||||
},
|
||||
[UsageSourceEnum.cronJob]: {
|
||||
label: i18nT('common:cron_job_run_app')
|
||||
},
|
||||
[UsageSourceEnum.feishu]: {
|
||||
label: i18nT('user:usage.feishu')
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user