From dd5f4e60ae6773ecc86979c64230ecf08a079dfc Mon Sep 17 00:00:00 2001 From: ArielTM Date: Sun, 9 Mar 2025 17:02:38 +1100 Subject: [PATCH] add support for assistant.search.context --- slack_sdk/web/async_client.py | 39 ++++++++++++++++++++++++++++++++++ slack_sdk/web/client.py | 39 ++++++++++++++++++++++++++++++++++ slack_sdk/web/legacy_client.py | 39 ++++++++++++++++++++++++++++++++++ 3 files changed, 117 insertions(+) diff --git a/slack_sdk/web/async_client.py b/slack_sdk/web/async_client.py index b7ea40771..e43c157f6 100644 --- a/slack_sdk/web/async_client.py +++ b/slack_sdk/web/async_client.py @@ -2014,6 +2014,45 @@ async def tooling_tokens_rotate( kwargs.update({"refresh_token": refresh_token}) return await self.api_call("tooling.tokens.rotate", params=kwargs) + async def assistant_search_context( + self, + *, + query: str, + action_token: str, + channel_types: Optional[Union[str, Sequence[str]]] = None, + content_types: Optional[Union[str, Sequence[str]]] = None, + context_channel_id: Optional[str] = None, + cursor: Optional[str] = None, + include_bots: Optional[bool] = None, + limit: Optional[int] = None, + **kwargs, + ) -> AsyncSlackResponse: + """Searches messages across your Slack organization—perfect for broad, specific, and real-time data retrieval. + https://api.slack.com/methods/assistant.search.context + """ + kwargs.update( + { + "query": query, + "action_token": action_token, + "context_channel_id": context_channel_id, + "cursor": cursor, + "include_bots": include_bots, + "limit": limit, + } + ) + + if isinstance(channel_types, (list, tuple)): + kwargs.update({"channel_types": ",".join(channel_types)}) + else: + kwargs.update({"channel_types": channel_types}) + + if isinstance(content_types, (list, tuple)): + kwargs.update({"content_types": ",".join(content_types)}) + else: + kwargs.update({"content_types": content_types}) + + return await self.api_call("assistant.search.context", params=kwargs) + async def assistant_threads_setStatus( self, *, diff --git a/slack_sdk/web/client.py b/slack_sdk/web/client.py index 55e9763de..3de7fdcde 100644 --- a/slack_sdk/web/client.py +++ b/slack_sdk/web/client.py @@ -2004,6 +2004,45 @@ def tooling_tokens_rotate( kwargs.update({"refresh_token": refresh_token}) return self.api_call("tooling.tokens.rotate", params=kwargs) + def assistant_search_context( + self, + *, + query: str, + action_token: str, + channel_types: Optional[Union[str, Sequence[str]]] = None, + content_types: Optional[Union[str, Sequence[str]]] = None, + context_channel_id: Optional[str] = None, + cursor: Optional[str] = None, + include_bots: Optional[bool] = None, + limit: Optional[int] = None, + **kwargs, + ) -> SlackResponse: + """Searches messages across your Slack organization—perfect for broad, specific, and real-time data retrieval. + https://api.slack.com/methods/assistant.search.context + """ + kwargs.update( + { + "query": query, + "action_token": action_token, + "context_channel_id": context_channel_id, + "cursor": cursor, + "include_bots": include_bots, + "limit": limit, + } + ) + + if isinstance(channel_types, (list, tuple)): + kwargs.update({"channel_types": ",".join(channel_types)}) + else: + kwargs.update({"channel_types": channel_types}) + + if isinstance(content_types, (list, tuple)): + kwargs.update({"content_types": ",".join(content_types)}) + else: + kwargs.update({"content_types": content_types}) + + return self.api_call("assistant.search.context", params=kwargs) + def assistant_threads_setStatus( self, *, diff --git a/slack_sdk/web/legacy_client.py b/slack_sdk/web/legacy_client.py index 18f745632..c5c7a1687 100644 --- a/slack_sdk/web/legacy_client.py +++ b/slack_sdk/web/legacy_client.py @@ -2016,6 +2016,45 @@ def tooling_tokens_rotate( kwargs.update({"refresh_token": refresh_token}) return self.api_call("tooling.tokens.rotate", params=kwargs) + def assistant_search_context( + self, + *, + query: str, + action_token: str, + channel_types: Optional[Union[str, Sequence[str]]] = None, + content_types: Optional[Union[str, Sequence[str]]] = None, + context_channel_id: Optional[str] = None, + cursor: Optional[str] = None, + include_bots: Optional[bool] = None, + limit: Optional[int] = None, + **kwargs, + ) -> Union[Future, SlackResponse]: + """Searches messages across your Slack organization—perfect for broad, specific, and real-time data retrieval. + https://api.slack.com/methods/assistant.search.context + """ + kwargs.update( + { + "query": query, + "action_token": action_token, + "context_channel_id": context_channel_id, + "cursor": cursor, + "include_bots": include_bots, + "limit": limit, + } + ) + + if isinstance(channel_types, (list, tuple)): + kwargs.update({"channel_types": ",".join(channel_types)}) + else: + kwargs.update({"channel_types": channel_types}) + + if isinstance(content_types, (list, tuple)): + kwargs.update({"content_types": ",".join(content_types)}) + else: + kwargs.update({"content_types": content_types}) + + return self.api_call("assistant.search.context", params=kwargs) + def assistant_threads_setStatus( self, *,