Co-authored-by: crazywoola <427733928@qq.com>tags/0.5.11-fix1
| @@ -25,3 +25,4 @@ | |||
| - wecom | |||
| - qrcode | |||
| - dingtalk | |||
| - feishu | |||
| @@ -0,0 +1 @@ | |||
| <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1711946937387" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5208" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M262.339048 243.809524h326.070857s91.672381 84.504381 91.672381 200.655238l-152.81981 105.569524S445.781333 359.960381 262.339048 243.809524z" fill="#00DAB8" p-id="5209"></path><path d="M853.333333 423.350857s-112.103619-42.276571-183.393523-10.581333c-71.338667 31.695238-101.912381 73.923048-132.486096 105.618286-40.71619 42.22781-112.054857 116.150857-173.202285 73.923047-61.147429-42.276571 244.540952 147.846095 244.540952 147.846095s127.463619-71.631238 173.202286-190.122666C822.759619 444.464762 853.333333 423.350857 853.333333 423.350857z" fill="#0C3AA0" p-id="5210"></path><path d="M170.666667 402.236952v316.757334s112.298667 138.142476 376.978285 63.390476c112.103619-31.695238 203.824762-179.541333 203.824762-179.541333S618.934857 824.612571 170.666667 402.285714z" fill="#296DFF" p-id="5211"></path></svg> | |||
| @@ -0,0 +1,8 @@ | |||
| from core.tools.provider.builtin.feishu.tools.feishu_group_bot import FeishuGroupBotTool | |||
| from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController | |||
| class FeishuProvider(BuiltinToolProviderController): | |||
| def _validate_credentials(self, credentials: dict) -> None: | |||
| FeishuGroupBotTool() | |||
| pass | |||
| @@ -0,0 +1,13 @@ | |||
| identity: | |||
| author: Arkii Sun | |||
| name: feishu | |||
| label: | |||
| en_US: Feishu | |||
| zh_Hans: 飞书 | |||
| pt_BR: Feishu | |||
| description: | |||
| en_US: Feishu group bot | |||
| zh_Hans: 飞书群机器人 | |||
| pt_BR: Feishu group bot | |||
| icon: icon.svg | |||
| credentials_for_provider: | |||
| @@ -0,0 +1,50 @@ | |||
| from typing import Any, Union | |||
| import httpx | |||
| from core.tools.entities.tool_entities import ToolInvokeMessage | |||
| from core.tools.tool.builtin_tool import BuiltinTool | |||
| from core.tools.utils.uuid_utils import is_valid_uuid | |||
| class FeishuGroupBotTool(BuiltinTool): | |||
| def _invoke(self, user_id: str, tool_parameters: dict[str, Any] | |||
| ) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]: | |||
| """ | |||
| invoke tools | |||
| API document: https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot | |||
| """ | |||
| url = "https://open.feishu.cn/open-apis/bot/v2/hook" | |||
| content = tool_parameters.get('content', '') | |||
| if not content: | |||
| return self.create_text_message('Invalid parameter content') | |||
| hook_key = tool_parameters.get('hook_key', '') | |||
| if not is_valid_uuid(hook_key): | |||
| return self.create_text_message( | |||
| f'Invalid parameter hook_key ${hook_key}, not a valid UUID') | |||
| msg_type = 'text' | |||
| api_url = f'{url}/{hook_key}' | |||
| headers = { | |||
| 'Content-Type': 'application/json', | |||
| } | |||
| params = {} | |||
| payload = { | |||
| "msg_type": msg_type, | |||
| "content": { | |||
| "text": content, | |||
| } | |||
| } | |||
| try: | |||
| res = httpx.post(api_url, headers=headers, params=params, json=payload) | |||
| if res.is_success: | |||
| return self.create_text_message("Text message sent successfully") | |||
| else: | |||
| return self.create_text_message( | |||
| f"Failed to send the text message, status code: {res.status_code}, response: {res.text}") | |||
| except Exception as e: | |||
| return self.create_text_message("Failed to send message to group chat bot. {}".format(e)) | |||
| @@ -0,0 +1,40 @@ | |||
| identity: | |||
| name: feishu_group_bot | |||
| author: Arkii Sun | |||
| label: | |||
| en_US: Send Group Message | |||
| zh_Hans: 发送群消息 | |||
| pt_BR: Send Group Message | |||
| icon: icon.png | |||
| description: | |||
| human: | |||
| en_US: Sending a group message on Feishu via the webhook of group bot | |||
| zh_Hans: 通过飞书的群机器人webhook发送群消息 | |||
| pt_BR: Sending a group message on Feishu via the webhook of group bot | |||
| llm: A tool for sending messages to a chat group on Feishu(飞书) . | |||
| parameters: | |||
| - name: hook_key | |||
| type: secret-input | |||
| required: true | |||
| label: | |||
| en_US: Feishu Group bot webhook key | |||
| zh_Hans: 群机器人webhook的key | |||
| pt_BR: Feishu Group bot webhook key | |||
| human_description: | |||
| en_US: Feishu Group bot webhook key | |||
| zh_Hans: 群机器人webhook的key | |||
| pt_BR: Feishu Group bot webhook key | |||
| form: form | |||
| - name: content | |||
| type: string | |||
| required: true | |||
| label: | |||
| en_US: content | |||
| zh_Hans: 消息内容 | |||
| pt_BR: content | |||
| human_description: | |||
| en_US: Content to sent to the group. | |||
| zh_Hans: 群消息文本 | |||
| pt_BR: Content to sent to the group. | |||
| llm_description: Content of the message | |||
| form: llm | |||