mirror of
https://github.com/hansjone/dsh-im-ops.git
synced 2026-10-09 14:00:45 +08:00
feat(feishu): add group message permission authorization
This commit is contained in:
parent
7b892c02f5
commit
7bf12628ce
17 changed files with 1581 additions and 258 deletions
|
|
@ -14,6 +14,7 @@ export const FEISHU_ENDPOINTS = Object.freeze({
|
|||
status: "connection.status",
|
||||
beginProvisioning: "provision.begin",
|
||||
beginCallbackRepair: "bot.callback-repair.begin",
|
||||
beginGroupMessagePermission: "bot.group-message-permission.begin",
|
||||
pollProvisioning: "provision.poll",
|
||||
cancelProvisioning: "provision.cancel",
|
||||
bindCredentials: "bot.bind-credentials",
|
||||
|
|
@ -31,6 +32,7 @@ export const FEISHU_ENDPOINTS = Object.freeze({
|
|||
export const FEISHU_REGISTRATION_OPERATIONS = Object.freeze({
|
||||
PROVISION: "provision",
|
||||
CALLBACK_REPAIR: "callback_repair",
|
||||
GROUP_MESSAGE_PERMISSION: "group_message_permission",
|
||||
});
|
||||
|
||||
const CONNECTION_STATES = new Set([
|
||||
|
|
@ -82,9 +84,18 @@ function clamp(value, min, max, fallback) {
|
|||
}
|
||||
|
||||
function normalizeRegistrationOperation(value) {
|
||||
return value === FEISHU_REGISTRATION_OPERATIONS.CALLBACK_REPAIR
|
||||
? FEISHU_REGISTRATION_OPERATIONS.CALLBACK_REPAIR
|
||||
: FEISHU_REGISTRATION_OPERATIONS.PROVISION;
|
||||
if (value === FEISHU_REGISTRATION_OPERATIONS.CALLBACK_REPAIR) {
|
||||
return FEISHU_REGISTRATION_OPERATIONS.CALLBACK_REPAIR;
|
||||
}
|
||||
if (value === FEISHU_REGISTRATION_OPERATIONS.GROUP_MESSAGE_PERMISSION) {
|
||||
return FEISHU_REGISTRATION_OPERATIONS.GROUP_MESSAGE_PERMISSION;
|
||||
}
|
||||
return FEISHU_REGISTRATION_OPERATIONS.PROVISION;
|
||||
}
|
||||
|
||||
function isTargetedAppUpdate(operation) {
|
||||
return operation === FEISHU_REGISTRATION_OPERATIONS.CALLBACK_REPAIR
|
||||
|| operation === FEISHU_REGISTRATION_OPERATIONS.GROUP_MESSAGE_PERMISSION;
|
||||
}
|
||||
|
||||
export function unwrapRpcResult(result) {
|
||||
|
|
@ -117,8 +128,8 @@ export function normalizeProvisioning(value, now = Date.now()) {
|
|||
const expireIn = clamp(source.expireIn, 1, 60 * 60, 5 * 60);
|
||||
const operation = normalizeRegistrationOperation(source.operation);
|
||||
const botId = optionalString(source.botId);
|
||||
if (operation === FEISHU_REGISTRATION_OPERATIONS.CALLBACK_REPAIR && !botId) {
|
||||
throw new Error("飞书服务返回的修复信息缺少 botId");
|
||||
if (isTargetedAppUpdate(operation) && !botId) {
|
||||
throw new Error("飞书服务返回的应用更新信息缺少 botId");
|
||||
}
|
||||
return {
|
||||
attemptId,
|
||||
|
|
@ -192,6 +203,7 @@ export function normalizeBotConnection(value, fallbackBotId) {
|
|||
workspace: optionalString(value.workspace)?.slice(0, 4_096) ?? "",
|
||||
agentPreset: normalizeAgentPresetId(value.agentPreset),
|
||||
groupResponseMode: normalizeGroupResponseMode(value.groupResponseMode),
|
||||
groupMessagePermissionGranted: value.groupMessagePermissionGranted === true,
|
||||
bot: normalizeBot(value.bot),
|
||||
health: normalizeHealth(value.health, connected),
|
||||
error: normalizeError(value.error),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue