-
Notifications
You must be signed in to change notification settings - Fork 8.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add Feishu(飞书) tool for sending message to chat group bot via w…
…ebhook (#3059) Co-authored-by: crazywoola <427733928@qq.com>
- Loading branch information
1 parent
32e83e0
commit 5e591fc
Showing
6 changed files
with
113 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -25,3 +25,4 @@ | |
- wecom | ||
- qrcode | ||
- dingtalk | ||
- feishu |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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: |
50 changes: 50 additions & 0 deletions
50
api/core/tools/provider/builtin/feishu/tools/feishu_group_bot.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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)) |
40 changes: 40 additions & 0 deletions
40
api/core/tools/provider/builtin/feishu/tools/feishu_group_bot.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |