diff --git a/api/core/tools/provider/_position.yaml b/api/core/tools/provider/_position.yaml index 109c10c34b..e796e58e13 100644 --- a/api/core/tools/provider/_position.yaml +++ b/api/core/tools/provider/_position.yaml @@ -17,3 +17,4 @@ - time - vectorizer - gaode +- wecom diff --git a/api/core/tools/provider/builtin/wecom/_assets/icon.png b/api/core/tools/provider/builtin/wecom/_assets/icon.png new file mode 100644 index 0000000000..8588c20d57 Binary files /dev/null and b/api/core/tools/provider/builtin/wecom/_assets/icon.png differ diff --git a/api/core/tools/provider/builtin/wecom/tools/wecom_group_bot.py b/api/core/tools/provider/builtin/wecom/tools/wecom_group_bot.py new file mode 100644 index 0000000000..5a536cca50 --- /dev/null +++ b/api/core/tools/provider/builtin/wecom/tools/wecom_group_bot.py @@ -0,0 +1,46 @@ +from typing import Any, Union + +import httpx + +from core.tools.entities.tool_entities import ToolInvokeMessage +from core.tools.tool.builtin_tool import BuiltinTool + + +class WecomRepositoriesTool(BuiltinTool): + def _invoke(self, user_id: str, tool_parameters: dict[str, Any] + ) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]: + """ + invoke tools + """ + 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 hook_key: + return self.create_text_message('Invalid parameter hook_key') + + msgtype = 'text' + api_url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send' + headers = { + 'Content-Type': 'application/json', + } + params = { + 'key': hook_key, + } + payload = { + "msgtype": msgtype, + "text": { + "content": 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)) diff --git a/api/core/tools/provider/builtin/wecom/tools/wecom_group_bot.yaml b/api/core/tools/provider/builtin/wecom/tools/wecom_group_bot.yaml new file mode 100644 index 0000000000..52f3cf5731 --- /dev/null +++ b/api/core/tools/provider/builtin/wecom/tools/wecom_group_bot.yaml @@ -0,0 +1,40 @@ +identity: + name: wecom_group_bot + author: Bowen Liang + label: + en_US: Send Group Message + zh_Hans: 发送群消息 + pt_BR: Send Group Message + icon: icon.svg +description: + human: + en_US: Sending a group message on Wecom via the webhook of group bot + zh_Hans: 通过企业微信的群机器人webhook发送群消息 + pt_BR: Sending a group message on Wecom via the webhook of group bot + llm: A tool for sending messages to a chat group on Wecom(企业微信) . +parameters: + - name: hook_key + type: string + required: true + label: + en_US: Wecom Group bot webhook key + zh_Hans: 群机器人webhook的key + pt_BR: Wecom Group bot webhook key + human_description: + en_US: Wecom Group bot webhook key + zh_Hans: 群机器人webhook的key + pt_BR: Wecom 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 diff --git a/api/core/tools/provider/builtin/wecom/wecom.py b/api/core/tools/provider/builtin/wecom/wecom.py new file mode 100644 index 0000000000..b50d3ff68a --- /dev/null +++ b/api/core/tools/provider/builtin/wecom/wecom.py @@ -0,0 +1,8 @@ +from core.tools.provider.builtin.wecom.tools.wecom_group_bot import WecomRepositoriesTool +from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController + + +class GaodeProvider(BuiltinToolProviderController): + def _validate_credentials(self, credentials: dict) -> None: + WecomRepositoriesTool() + pass diff --git a/api/core/tools/provider/builtin/wecom/wecom.yaml b/api/core/tools/provider/builtin/wecom/wecom.yaml new file mode 100644 index 0000000000..39d00032a0 --- /dev/null +++ b/api/core/tools/provider/builtin/wecom/wecom.yaml @@ -0,0 +1,13 @@ +identity: + author: Bowen Liang + name: wecom + label: + en_US: Wecom + zh_Hans: 企业微信 + pt_BR: Wecom + description: + en_US: Wecom group bot + zh_Hans: 企业微信群机器人 + pt_BR: Wecom group bot + icon: icon.png +credentials_for_provider: