Skip to content

Commit

Permalink
feat: add Feishu(飞书) tool for sending message to chat group bot via w…
Browse files Browse the repository at this point in the history
…ebhook (#3059)

Co-authored-by: crazywoola <427733928@qq.com>
  • Loading branch information
arkii and crazywoola authored Apr 1, 2024
1 parent 32e83e0 commit 5e591fc
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 0 deletions.
1 change: 1 addition & 0 deletions api/core/tools/provider/_position.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@
- wecom
- qrcode
- dingtalk
- feishu
1 change: 1 addition & 0 deletions api/core/tools/provider/builtin/feishu/_assets/icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions api/core/tools/provider/builtin/feishu/feishu.py
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
13 changes: 13 additions & 0 deletions api/core/tools/provider/builtin/feishu/feishu.yaml
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 api/core/tools/provider/builtin/feishu/tools/feishu_group_bot.py
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 api/core/tools/provider/builtin/feishu/tools/feishu_group_bot.yaml
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

0 comments on commit 5e591fc

Please sign in to comment.