mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-10-04 12:58:42 +02:00
Allow Slack workflow messages when respond_to_bots is enabled (#3819)
* Allow workflow 'bot_message' subtype when respond_to_bots is enabled Co-Authored-By: Chris Weaver <chris@onyx.app> * refactor: consolidate bot message checks to avoid redundant code Co-Authored-By: Chris Weaver <chris@onyx.app> * style: fix black formatting Co-Authored-By: Chris Weaver <chris@onyx.app> * Remove unnecessary call --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Chris Weaver <chris@onyx.app> Co-authored-by: Weves <chrisweaver101@gmail.com>
This commit is contained in:
committed by
GitHub
parent
d903e5912a
commit
7e9b12403a
@@ -537,30 +537,36 @@ def prefilter_requests(req: SocketModeRequest, client: TenantSocketModeClient) -
|
|||||||
# Let the tag flow handle this case, don't reply twice
|
# Let the tag flow handle this case, don't reply twice
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if event.get("bot_profile"):
|
# Check if this is a bot message (either via bot_profile or bot_message subtype)
|
||||||
|
is_bot_message = bool(
|
||||||
|
event.get("bot_profile") or event.get("subtype") == "bot_message"
|
||||||
|
)
|
||||||
|
if is_bot_message:
|
||||||
channel_name, _ = get_channel_name_from_id(
|
channel_name, _ = get_channel_name_from_id(
|
||||||
client=client.web_client, channel_id=channel
|
client=client.web_client, channel_id=channel
|
||||||
)
|
)
|
||||||
|
|
||||||
with get_session_with_tenant(client.tenant_id) as db_session:
|
with get_session_with_tenant(client.tenant_id) as db_session:
|
||||||
slack_channel_config = get_slack_channel_config_for_bot_and_channel(
|
slack_channel_config = get_slack_channel_config_for_bot_and_channel(
|
||||||
db_session=db_session,
|
db_session=db_session,
|
||||||
slack_bot_id=client.slack_bot_id,
|
slack_bot_id=client.slack_bot_id,
|
||||||
channel_name=channel_name,
|
channel_name=channel_name,
|
||||||
)
|
)
|
||||||
|
|
||||||
# If OnyxBot is not specifically tagged and the channel is not set to respond to bots, ignore the message
|
# If OnyxBot is not specifically tagged and the channel is not set to respond to bots, ignore the message
|
||||||
if (not bot_tag_id or bot_tag_id not in msg) and (
|
if (not bot_tag_id or bot_tag_id not in msg) and (
|
||||||
not slack_channel_config
|
not slack_channel_config
|
||||||
or not slack_channel_config.channel_config.get("respond_to_bots")
|
or not slack_channel_config.channel_config.get("respond_to_bots")
|
||||||
):
|
):
|
||||||
channel_specific_logger.info("Ignoring message from bot")
|
channel_specific_logger.info(
|
||||||
|
"Ignoring message from bot since respond_to_bots is disabled"
|
||||||
|
)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Ignore things like channel_join, channel_leave, etc.
|
# Ignore things like channel_join, channel_leave, etc.
|
||||||
# NOTE: "file_share" is just a message with a file attachment, so we
|
# NOTE: "file_share" is just a message with a file attachment, so we
|
||||||
# should not ignore it
|
# should not ignore it
|
||||||
message_subtype = event.get("subtype")
|
message_subtype = event.get("subtype")
|
||||||
if message_subtype not in [None, "file_share"]:
|
if message_subtype not in [None, "file_share", "bot_message"]:
|
||||||
channel_specific_logger.info(
|
channel_specific_logger.info(
|
||||||
f"Ignoring message with subtype '{message_subtype}' since it is a special message type"
|
f"Ignoring message with subtype '{message_subtype}' since it is a special message type"
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user