-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add a new built-in tool of Slack Incoming Webhook (#4067)
- Loading branch information
1 parent
67902b5
commit 5940564
Showing
6 changed files
with
127 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 |
---|---|---|
|
@@ -30,3 +30,4 @@ | |
- qrcode | ||
- dingtalk | ||
- feishu | ||
- slack |
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.slack.tools.slack_webhook import SlackWebhookTool | ||
from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController | ||
|
||
|
||
class SlackProvider(BuiltinToolProviderController): | ||
def _validate_credentials(self, credentials: dict) -> None: | ||
SlackWebhookTool() | ||
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: Pan YANG | ||
name: slack | ||
label: | ||
en_US: Slack | ||
zh_Hans: Slack | ||
pt_BR: Slack | ||
description: | ||
en_US: Slack Webhook | ||
zh_Hans: Slack Webhook | ||
pt_BR: Slack Webhook | ||
icon: icon.svg | ||
credentials_for_provider: |
43 changes: 43 additions & 0 deletions
43
api/core/tools/provider/builtin/slack/tools/slack_webhook.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,43 @@ | ||
from typing import Any, Union | ||
|
||
import httpx | ||
|
||
from core.tools.entities.tool_entities import ToolInvokeMessage | ||
from core.tools.tool.builtin_tool import BuiltinTool | ||
|
||
|
||
class SlackWebhookTool(BuiltinTool): | ||
def _invoke(self, user_id: str, tool_parameters: dict[str, Any] | ||
) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]: | ||
""" | ||
Incoming Webhooks | ||
API Document: https://api.slack.com/messaging/webhooks | ||
""" | ||
|
||
content = tool_parameters.get('content', '') | ||
if not content: | ||
return self.create_text_message('Invalid parameter content') | ||
|
||
webhook_url = tool_parameters.get('webhook_url', '') | ||
|
||
if not webhook_url.startswith('https://hooks.slack.com/services/'): | ||
return self.create_text_message( | ||
f'Invalid parameter webhook_url ${webhook_url}, not a valid Slack webhook URL') | ||
|
||
headers = { | ||
'Content-Type': 'application/json', | ||
} | ||
params = {} | ||
payload = { | ||
"text": content, | ||
} | ||
|
||
try: | ||
res = httpx.post(webhook_url, headers=headers, params=params, json=payload) | ||
if res.is_success: | ||
return self.create_text_message("Text message was 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 through webhook. {}".format(e)) |
40 changes: 40 additions & 0 deletions
40
api/core/tools/provider/builtin/slack/tools/slack_webhook.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: slack_webhook | ||
author: Pan YANG | ||
label: | ||
en_US: Incoming Webhook to send message | ||
zh_Hans: 通过入站 Webhook 发送消息 | ||
pt_BR: Incoming Webhook to send message | ||
icon: icon.svg | ||
description: | ||
human: | ||
en_US: Sending a message on Slack via the Incoming Webhook | ||
zh_Hans: 通过入站 Webhook 在 Slack 上发送消息 | ||
pt_BR: Sending a message on Slack via the Incoming Webhook | ||
llm: A tool for sending messages to a chat on Slack. | ||
parameters: | ||
- name: webhook_url | ||
type: string | ||
required: true | ||
label: | ||
en_US: Slack Incoming Webhook url | ||
zh_Hans: Slack 入站 Webhook 的 url | ||
pt_BR: Slack Incoming Webhook url | ||
human_description: | ||
en_US: Slack Incoming Webhook url | ||
zh_Hans: Slack 入站 Webhook 的 url | ||
pt_BR: Slack Incoming Webhook url | ||
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 channel or person. | ||
zh_Hans: 消息内容文本 | ||
pt_BR: Content to sent to the channel or person. | ||
llm_description: Content of the message | ||
form: llm |