mirror of
https://github.com/langbot-app/LangBot.git
synced 2025-11-25 03:15:06 +08:00
* fix:Fixed the issue where the rich text processing in the DingTalk API did not account for multiple texts and images, as well as the presence of default line breaks. Also resolved the error in Dify caused by sending only images, which resulted in an empty query. * fix:Considering the various possible scenarios, there are cases where plan_text is empty when there is file content, and there is no file (the message could not be parsed) and the content is empty. * fix:Add the default modifiable prompt input for didify in the ai.yaml file to ensure that the error of query being empty occurs when receiving data. * add: The config migration of Dify * fix:Migration issue * perf: minor fix * chore: minor fix --------- Co-authored-by: Junyan Qin <rockchinq@gmail.com>
81 lines
1.8 KiB
Python
81 lines
1.8 KiB
Python
from typing import Dict, Any, Optional
|
|
import dingtalk_stream # type: ignore
|
|
|
|
|
|
class DingTalkEvent(dict):
|
|
@staticmethod
|
|
def from_payload(payload: Dict[str, Any]) -> Optional['DingTalkEvent']:
|
|
try:
|
|
event = DingTalkEvent(payload)
|
|
return event
|
|
except KeyError:
|
|
return None
|
|
|
|
@property
|
|
def content(self):
|
|
return self.get('Content', '')
|
|
|
|
@property
|
|
def rich_content(self):
|
|
return self.get('Rich_Content', '')
|
|
|
|
@property
|
|
def incoming_message(self) -> Optional['dingtalk_stream.chatbot.ChatbotMessage']:
|
|
return self.get('IncomingMessage')
|
|
|
|
@property
|
|
def type(self):
|
|
return self.get('Type', '')
|
|
|
|
@property
|
|
def picture(self):
|
|
return self.get('Picture', '')
|
|
|
|
@property
|
|
def audio(self):
|
|
return self.get('Audio', '')
|
|
|
|
@property
|
|
def file(self):
|
|
return self.get('File', '')
|
|
|
|
@property
|
|
def name(self):
|
|
return self.get('Name', '')
|
|
|
|
|
|
@property
|
|
def conversation(self):
|
|
return self.get('conversation_type', '')
|
|
|
|
def __getattr__(self, key: str) -> Optional[Any]:
|
|
"""
|
|
允许通过属性访问数据中的任意字段。
|
|
|
|
Args:
|
|
key (str): 字段名。
|
|
|
|
Returns:
|
|
Optional[Any]: 字段值。
|
|
"""
|
|
return self.get(key)
|
|
|
|
def __setattr__(self, key: str, value: Any) -> None:
|
|
"""
|
|
允许通过属性设置数据中的任意字段。
|
|
|
|
Args:
|
|
key (str): 字段名。
|
|
value (Any): 字段值。
|
|
"""
|
|
self[key] = value
|
|
|
|
def __repr__(self) -> str:
|
|
"""
|
|
生成事件对象的字符串表示。
|
|
|
|
Returns:
|
|
str: 字符串表示。
|
|
"""
|
|
return f'<DingTalkEvent {super().__repr__()}>'
|