新增了插件相关的完整领域模型、应用服务、基础设施实现,包括: 1. 插件状态、注册模式、来源等基础枚举和数据结构 2. 插件清单解析、发现、加载工具类 3. 插件注册表领域服务和内存存储实现 4. 插件相关的命令、查询、事件定义 5. 插件REST API接口和DTO映射 6. 集成了原有通道适配器到插件系统 7. 新增内置插件注册和自动发现能力
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from yuxi.channel.domain.model.message.peer import Peer
|
|
from yuxi.channel.domain.model.message.unified_message import UnifiedMessage
|
|
from yuxi.channel.domain.model.shared.channel_type import ChannelType
|
|
|
|
|
|
class DingTalkTranslator:
|
|
@staticmethod
|
|
def translate(raw: dict) -> UnifiedMessage:
|
|
event = raw.get("event", {})
|
|
message = event.get("message", {})
|
|
sender = event.get("sender", {})
|
|
sender_id = sender.get("sender_id", {}).get("user_id", "")
|
|
|
|
chat_type = message.get("chat_type", "p2p")
|
|
is_group = chat_type == "group"
|
|
group_id = message.get("chat_id", "") if is_group else ""
|
|
|
|
return UnifiedMessage(
|
|
message_id=message.get("message_id", ""),
|
|
channel_type=ChannelType.DINGTALK,
|
|
sender=Peer(id=sender_id, name=sender_id, kind="user"),
|
|
content=message.get("content", ""),
|
|
metadata={
|
|
"is_group": is_group,
|
|
"group_id": group_id,
|
|
"chat_type": chat_type,
|
|
},
|
|
raw_payload=raw,
|
|
)
|
|
|
|
@staticmethod
|
|
def translate_event(raw: dict) -> UnifiedMessage:
|
|
return DingTalkTranslator.translate(raw)
|