新增了完整的Confluence集成插件,包含以下核心功能: 1. 基础认证与配置管理,支持API Token和OAuth2两种认证方式 2. 评论去重、权限控制与提及解析 3. 知识库检索与页面内容处理 4. 评论收发、编辑删除与流式回复支持 5. 附件与页面标签管理 6. 内容属性存储与AI元数据管理 7. Webhook事件接收与处理 8. 完整的插件配置与状态检查
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
import json
|
|
|
|
|
|
class ConfluenceMentions:
|
|
@staticmethod
|
|
def extract_mentions(raw_message: dict) -> list[dict]:
|
|
body = raw_message.get("body", {})
|
|
adf_raw = body.get("atlas_doc_format", {}).get("value", "")
|
|
|
|
try:
|
|
doc = json.loads(adf_raw) if isinstance(adf_raw, str) else adf_raw
|
|
except (json.JSONDecodeError, TypeError):
|
|
return []
|
|
|
|
mentions = []
|
|
|
|
def _walk(node):
|
|
if isinstance(node, dict):
|
|
if node.get("type") == "mention":
|
|
attrs = node.get("attrs", {})
|
|
mentions.append({
|
|
"account_id": attrs.get("id", ""),
|
|
"display_name": attrs.get("text", "").lstrip("@"),
|
|
})
|
|
for child in node.get("content", []):
|
|
_walk(child)
|
|
elif isinstance(node, list):
|
|
for item in node:
|
|
_walk(item)
|
|
|
|
_walk(doc)
|
|
return mentions
|
|
|
|
@staticmethod
|
|
def build_mention(account_id: str, display_name: str) -> dict:
|
|
from yuxi.channel.extensions.confluence.format import ADFBuilder
|
|
|
|
return ADFBuilder.mention(account_id, display_name) |