Browse Source

feat: add Wecom(企业微信) tool for sending message to chat group bot via webhook (#2638)

tags/0.5.8
Bowen Liang 1 year ago
parent
commit
f25cec265d
No account linked to committer's email address

+ 1
- 0
api/core/tools/provider/_position.yaml View File

@@ -17,3 +17,4 @@
- time
- vectorizer
- gaode
- wecom

BIN
api/core/tools/provider/builtin/wecom/_assets/icon.png View File


+ 46
- 0
api/core/tools/provider/builtin/wecom/tools/wecom_group_bot.py View File

@@ -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))

+ 40
- 0
api/core/tools/provider/builtin/wecom/tools/wecom_group_bot.yaml View File

@@ -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

+ 8
- 0
api/core/tools/provider/builtin/wecom/wecom.py View File

@@ -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

+ 13
- 0
api/core/tools/provider/builtin/wecom/wecom.yaml View File

@@ -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:

Loading…
Cancel
Save