feat: 微信客服支持文本消息

This commit is contained in:
Soulter
2025-05-05 11:53:50 -04:00
parent 3e07fbf3dc
commit c36054ca1b
2 changed files with 13 additions and 12 deletions
@@ -136,16 +136,17 @@ class WecomPlatformAdapter(Platform):
self.config["corpid"].strip(),
self.config["secret"].strip(),
)
# inject
self.wechat_kf_api = WeChatKF(client=self.client)
self.wechat_kf_message_api = WeChatKFMessage(self.client)
self.client.kf = self.wechat_kf_api
self.client.kf_message = self.wechat_kf_message_api
self.client.API_BASE_URL = self.api_base_url
# 微信客服
self.kf_name = self.config.get("kf_name", None)
if self.kf_name:
# inject
self.wechat_kf_api = WeChatKF(client=self.client)
self.wechat_kf_message_api = WeChatKFMessage(self.client)
self.client.kf = self.wechat_kf_api
self.client.kf_message = self.wechat_kf_message_api
self.client.API_BASE_URL = self.api_base_url
async def callback(msg: BaseMessage):
if msg.type == "unknown" and msg._data["Event"] == "kf_msg_or_event":
@@ -84,26 +84,26 @@ class WecomPlatformEvent(AstrMessageEvent):
async def send(self, message: MessageChain):
message_obj = self.message_obj
is_wechat_kf = hasattr(self.message_obj.raw_message, "_wechat_kf_flag")
is_wechat_kf = hasattr(self.client, "kf_message")
if is_wechat_kf:
# 微信客服
kf_message_api = getattr(self.client, "kf_message", None)
if not kf_message_api:
logger.warning("未找到微信客服发送消息方法。")
return
assert isinstance(kf_message_api, WeChatKFMessage)
user_id = self.get_sender_id()
for comp in message.chain:
if isinstance(comp, Plain):
# Split long text messages if needed
plain_chunks = await self.split_plain(comp.text)
for chunk in plain_chunks:
# self.client.message.send_text(
# message_obj.self_id, message_obj.session_id, chunk
# )
# kf_message_api.send_text()
kf_message_api.send_text(user_id, self.get_self_id(), chunk)
await asyncio.sleep(0.5) # Avoid sending too fast
else:
logger.warning("没有实现的回复消息类型。")
else:
# 企业微信应用
for comp in message.chain:
if isinstance(comp, Plain):
# Split long text messages if needed