diff --git a/docs-src/real_time_messaging.rst b/docs-src/real_time_messaging.rst index ba2a502d9..a2e90cf82 100644 --- a/docs-src/real_time_messaging.rst +++ b/docs-src/real_time_messaging.rst @@ -8,6 +8,9 @@ RTM Client Real Time Messaging (RTM) --------------------------------------- +.. parsed-literal :: + **rtm.start method has been deprecated for apps created after Nov 30th, 2021.** See details `here `_ + The `Real Time Messaging (RTM) API`_ is a WebSocket-based API that allows you to receive events from Slack in real time and send messages as users. If you prefer events to be pushed to your app, we recommend using the HTTP-based `Events API `_ along with `Socket Mode `_ instead. The Events API contains some events that aren't supported in the RTM API (like `app_home_opened event `_), and it supports most of the event types in the RTM API. If you'd like to use the Events API, you can use the `Python Slack Events Adaptor `_. @@ -50,7 +53,7 @@ Note that the import here is not ``from slack_sdk.rtm import RTMClient`` but ``f thread_ts=thread_ts ) - rtm.start() + rtm.connect() **Connecting to the RTM API (v1 client)** @@ -80,40 +83,14 @@ Below is a code snippet that uses the legacy version of ``RTMClient``. For new a slack_token = os.environ["SLACK_BOT_TOKEN"] rtm_client = RTMClient(token=slack_token) - rtm_client.start() + rtm_client.connect() **rtm.start vs rtm.connect (v1 client)** -By default, the RTM client uses ``rtm.connect`` to establish a WebSocket connection with Slack. The response contains basic information about the team and WebSocket url. - -If you'd rather use ``rtm.start`` to establish the connection, which provides more information about the conversations and users on the team, you can set the ``connect_method`` option to ``rtm.start`` when instantiating the RTM Client. Note that on larger teams, use of ``rtm.start`` can be slow and unreliable. - -.. code-block:: python - - import os - from slack_sdk.rtm import RTMClient - - @RTMClient.run_on(event="message") - def say_hello(**payload): - data = payload['data'] - web_client = payload['web_client'] - if 'text' in data and 'Hello' in data['text']: - channel_id = data['channel'] - thread_ts = data['ts'] - user = data['user'] # This is not username but user ID (the format is either U*** or W***) - - web_client.chat_postMessage( - channel=channel_id, - text=f"Hi <@{user}>!", - thread_ts=thread_ts - ) +.. parsed-literal :: + **rtm.start method has been deprecated for apps created after Nov 30th, 2021.** See details `here `_ - slack_token = os.environ["SLACK_BOT_TOKEN"] - rtm_client = RTMClient( - token=slack_token, - connect_method='rtm.start' - ) - rtm_client.start() +By default, the RTM client uses ``rtm.connect`` to establish a WebSocket connection with Slack. The response contains basic information about the team and WebSocket url. Read the `rtm.connect docs `_ and the `rtm.start docs `_ for more details. Also, note that ``slack.rtm_v2.RTMClient`` does not support ``rtm.start``. diff --git a/docs/real_time_messaging.html b/docs/real_time_messaging.html index 11f4add3a..d5e8fa67e 100644 --- a/docs/real_time_messaging.html +++ b/docs/real_time_messaging.html @@ -215,6 +215,7 @@

RTM Client

Real Time Messaging (RTM)

+
rtm.start method deprecation after Nov 30th, 2021. see details here

The Real Time Messaging (RTM) API is a WebSocket-based API that allows you to receive events from Slack in real time and send messages as users.

If you prefer events to be pushed to your app, we recommend using the HTTP-based Events API along with Socket Mode instead. The Events API contains some events that aren’t supported in the RTM API (like app_home_opened event), and it supports most of the event types in the RTM API. If you’d like to use the Events API, you can use the Python Slack Events Adaptor.

The RTMClient allows apps to communicate with the Slack Platform’s RTM API.

@@ -244,7 +245,7 @@

Real Time Messaging (RTM)thread_ts=thread_ts ) -rtm.start() +rtm.connect()

Connecting to the RTM API (v1 client)

@@ -270,38 +271,12 @@

Real Time Messaging (RTM)slack_token = os.environ["SLACK_BOT_TOKEN"] rtm_client = RTMClient(token=slack_token) -rtm_client.start() +rtm_client.connect()

rtm.start vs rtm.connect (v1 client)

+
rtm.start method deprecation after Nov 30th, 2021. see details here

By default, the RTM client uses rtm.connect to establish a WebSocket connection with Slack. The response contains basic information about the team and WebSocket url.

-

If you’d rather use rtm.start to establish the connection, which provides more information about the conversations and users on the team, you can set the connect_method option to rtm.start when instantiating the RTM Client. Note that on larger teams, use of rtm.start can be slow and unreliable.

-
import os
-from slack_sdk.rtm import RTMClient
-
-@RTMClient.run_on(event="message")
-def say_hello(**payload):
-    data = payload['data']
-    web_client = payload['web_client']
-    if 'text' in data and 'Hello' in data['text']:
-        channel_id = data['channel']
-        thread_ts = data['ts']
-        user = data['user'] # This is not username but user ID (the format is either U*** or W***)
-
-        web_client.chat_postMessage(
-            channel=channel_id,
-            text=f"Hi <@{user}>!",
-            thread_ts=thread_ts
-        )
-
-slack_token = os.environ["SLACK_BOT_TOKEN"]
-rtm_client = RTMClient(
-    token=slack_token,
-    connect_method='rtm.start'
-)
-rtm_client.start()
-
-

Read the rtm.connect docs and the rtm.start docs for more details. Also, note that slack.rtm_v2.RTMClient does not support rtm.start.

RTM Events

{
diff --git a/docs/searchindex.js b/docs/searchindex.js
index 277b30ac8..ae8f6cca1 100644
--- a/docs/searchindex.js
+++ b/docs/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["about", "audit-logs/index", "faq", "index", "installation/index", "metadata", "oauth/index", "real_time_messaging", "scim/index", "socket-mode/index", "v3-migration/index", "web/index", "webhook/index"], "filenames": ["about.rst", "audit-logs/index.rst", "faq.rst", "index.rst", "installation/index.rst", "metadata.rst", "oauth/index.rst", "real_time_messaging.rst", "scim/index.rst", "socket-mode/index.rst", "v3-migration/index.rst", "web/index.rst", "webhook/index.rst"], "titles": ["About", "Audit Logs API Client", "FAQ", "Python Slack SDK", "Installation", "<no title>", "OAuth Modules", "RTM Client", "SCIM API Client", "Socket Mode Client", "Migration Guide", "Web Client", "Webhook Client"], "terms": {"access": [0, 1, 6, 8, 11], "platform": [0, 3, 6, 7], "from": [0, 1, 2, 3, 4, 6, 7, 8, 9, 11, 12], "your": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "app": [0, 1, 3, 4, 7, 8, 9, 11, 12], "let": [0, 2, 4, 6, 9, 11], "you": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "build": [0, 3, 4, 6, 11], "web": [0, 3, 6, 7, 9, 10], "api": [0, 2, 3, 4, 6, 7, 9, 10, 12], "i": [0, 1, 2, 4, 6, 7, 8, 9, 10, 11, 12], "proudli": 0, "maintain": 0, "develop": [0, 3, 7, 11], "tool": [0, 1, 8], "team": [0, 4, 6, 7, 11], "licens": 0, "code": [0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12], "conduct": 0, "contribut": 0, "contributor": [0, 2], "agreement": 0, "opensourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "com": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "slackapi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "set": [1, 2, 3, 4, 6, 7, 8, 9, 11, 12], "monitor": 1, "what": [1, 2, 3, 6], "": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "happen": [1, 3, 6], "enterpris": [1, 6], "grid": [1, 6], "organ": 1, "The": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "can": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "us": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "secur": 1, "inform": [1, 4, 7, 9, 11], "event": [1, 3, 6, 7, 9, 11, 12], "manag": [1, 3, 6, 8, 9], "siem": 1, "provid": [1, 4, 6, 7, 8, 10, 11], "an": [1, 2, 4, 6, 7, 8, 9, 11, 12], "analysi": 1, "how": [1, 4, 6, 8, 11, 12], "slack": [1, 2, 4, 5, 7, 8, 9, 10, 11, 12], "being": [1, 2, 11], "also": [1, 3, 7, 8, 10, 11, 12], "thi": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "write": [1, 2, 4, 6, 9, 11], "own": [1, 6, 8, 9, 11, 12], "applic": [1, 4, 11], "see": [1, 4, 6, 7, 11], "member": [1, 11], "ar": [1, 2, 3, 4, 8, 9, 10, 11, 12], "follow": [1, 2, 3, 6, 9, 11], "instruct": 1, "document": [1, 3, 4, 6, 7, 8, 9, 11, 12], "get": [1, 4, 6, 9, 11, 12], "valid": [1, 4, 6, 11], "token": [1, 2, 7, 8, 9, 11], "need": [1, 2, 3, 4, 6, 7, 9, 10, 11], "instal": [1, 9, 11, 12], "individu": 1, "workspac": [1, 6, 9, 11], "within": 1, "python": [1, 4, 5, 6, 7, 8, 9, 10, 11, 12], "modul": [1, 2, 3, 8, 9, 10, 11, 12], "avail": [1, 2, 3, 4, 6, 8, 9, 11, 12], "http": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "dev": [1, 2, 3, 6, 8, 9, 10, 11, 12], "sdk": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12], "doc": [1, 2, 3, 6, 7, 8, 9, 11, 12], "slack_sdk": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "oauth": [1, 3, 4, 8, 9, 10, 11], "admin": [1, 8], "scope": [1, 4, 6, 7, 8, 9, 11], "requir": [1, 4, 6, 8, 9, 10, 11, 12], "like": [1, 7, 9, 10, 11], "endpoint": [1, 4, 6, 11], "essenti": 1, "part": [1, 3], "To": [1, 4, 6, 8, 9, 11, 12], "learn": [1, 6, 7, 8, 11, 12], "about": [1, 2, 4, 6, 7, 8, 11], "paramet": [1, 4, 6, 11], "check": [1, 4, 6, 8, 11, 12], "out": [1, 4, 8, 9, 10, 11], "guid": 1, "more": [1, 2, 4, 7, 8, 9, 10, 11, 12], "data": [1, 3, 4, 6, 7, 8, 11], "structur": [1, 8], "api_respons": [1, 3, 11], "typed_bodi": 1, "class": [1, 8, 10, 11, 12], "sourc": [1, 2, 3, 4, 8, 9, 10, 11, 12], "import": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "o": [1, 2, 4, 6, 7, 8, 9, 11, 12], "audit_log": [1, 3], "environ": [1, 2, 4, 6, 7, 8, 9, 11, 12], "slack_org_admin_user_token": [1, 8], "action": [1, 10, 12], "user_login": 1, "limit": [1, 3, 8, 12], "1": [1, 8, 9, 11, 12], "v1": [1, 7, 8], "logsrespons": 1, "If": [1, 2, 3, 4, 6, 7, 9, 10, 11], "would": [1, 4, 7], "scheme": 1, "method": [1, 3, 4, 6, 8, 9, 12], "schema": 1, "keen": [1, 8], "asyncio": [1, 6, 8, 10, 11, 12], "scim": [1, 3], "call": [1, 4, 6, 7, 8, 9, 10, 12], "we": [1, 2, 3, 4, 7, 8, 10, 11], "offer": [1, 3, 8, 9], "asyncscimcli": 1, "reli": [1, 8, 10, 11, 12], "aiohttp": [1, 8, 9, 10, 11, 12], "librari": [1, 8, 10, 11, 12], "async_cli": [1, 3, 8, 9, 11, 12], "await": [1, 8, 9, 10, 11, 12], "With": [1, 6, 8, 11, 12], "default": [1, 6, 7, 8, 11, 12], "onli": [1, 8, 9, 10, 11, 12], "connectionerrorretryhandl": [1, 8, 11, 12], "its": [1, 2, 3, 6, 7, 8, 9, 11, 12], "configur": [1, 4, 7, 8, 9, 11, 12], "one": [1, 2, 4, 7, 8, 9, 10, 11, 12], "retri": [1, 8, 11, 12], "manner": [1, 8, 11, 12], "exponenti": [1, 8, 11, 12], "backoff": [1, 8, 11, 12], "jitter": [1, 8, 11, 12], "enabl": [1, 3, 8, 9, 11, 12], "handler": [1, 6, 8, 11, 12], "encount": [1, 2, 8, 11, 12], "connect": [1, 3, 6, 7, 8, 9, 11, 12], "relat": [1, 3, 8, 11, 12], "failur": [1, 8, 11, 12], "e": [1, 3, 6, 8, 11, 12], "g": [1, 8, 10, 11, 12], "reset": [1, 8, 11, 12], "peer": [1, 8, 11, 12], "other": [1, 4, 8, 9, 10, 11, 12], "pass": [1, 4, 7, 8, 9, 11, 12], "list": [1, 2, 4, 7, 8, 11, 12], "constructor": [1, 8, 11, 12], "For": [1, 4, 7, 8, 10, 11, 12], "instanc": [1, 8, 11, 12], "add": [1, 2, 4, 6, 8, 9, 10, 11, 12], "built": [1, 4, 8, 9, 11, 12], "ratelimiterrorretryhandl": [1, 8, 11, 12], "wai": [1, 3, 6, 8, 9, 10, 11, 12], "doe": [1, 6, 7, 8, 11, 12], "when": [1, 3, 6, 7, 8, 11, 12], "statu": [1, 8, 11, 12], "429": [1, 8, 11, 12], "return": [1, 4, 6, 8, 11, 12], "http_retri": [1, 8, 11, 12], "builtin_handl": [1, 8, 11, 12], "rate_limit_handl": [1, 8, 11, 12], "max_retry_count": [1, 8, 11, 12], "rate": [1, 8, 12], "error": [1, 2, 6, 8, 11, 12], "well": [1, 6, 8, 11, 12], "retry_handl": [1, 8, 11, 12], "append": [1, 8, 9, 11, 12], "creat": [1, 2, 6, 7, 8, 9, 11, 12], "ones": [1, 8, 9, 11, 12], "quit": [1, 8, 11, 12], "simpl": [1, 4, 8, 9, 10, 11, 12], "defin": [1, 4, 8, 11, 12], "new": [1, 2, 4, 6, 7, 8, 9, 10, 11, 12], "inherit": [1, 8, 11, 12], "asyncretryhandl": [1, 8, 11, 12], "implement": [1, 6, 8, 9, 11, 12], "intern": [1, 8, 10, 11, 12], "can_retri": [1, 8, 11, 12], "prepare_for_next_retri": [1, 8, 11, 12], "properli": [1, 8, 10, 11, 12], "socket": [1, 3, 7, 8, 11, 12], "type": [1, 6, 7, 8, 9, 11, 12], "option": [1, 6, 7, 8, 10, 11, 12], "retryst": [1, 8, 11, 12], "httprequest": [1, 8, 11, 12], "httprespons": [1, 8, 11, 12], "builtin_interval_calcul": [1, 8, 11, 12], "backoffretryintervalcalcul": [1, 8, 11, 12], "randomjitt": [1, 8, 11, 12], "myretryhandl": [1, 8, 11, 12], "def": [1, 4, 6, 7, 8, 9, 11, 12], "_can_retri": [1, 8, 11, 12], "self": [1, 8, 11, 12], "state": [1, 4, 6, 8, 11, 12], "request": [1, 3, 4, 6, 8, 9, 11, 12], "respons": [1, 4, 6, 7, 8, 9, 11, 12], "none": [1, 6, 8, 9, 11, 12], "except": [1, 6, 8, 11, 12], "bool": [1, 8, 11, 12], "errno": [1, 8, 11, 12], "104": [1, 8, 11, 12], "isinst": [1, 8, 11, 12], "interval_calcul": [1, 8, 11, 12], "backoff_factor": [1, 8, 11, 12], "0": [1, 2, 8, 10, 11, 12], "5": [1, 8, 11, 12], "async": [1, 8, 9, 10, 11, 12], "prefix": [1, 8, 9, 11, 12], "correspond": [1, 3, 4, 7, 8, 11, 12], "all": [1, 2, 4, 6, 8, 9, 10, 11, 12], "those": [1, 3, 7, 8, 10, 11, 12], "compat": [1, 6, 8, 9, 10, 11, 12], "test": [1, 2, 3, 8, 11, 12], "detail": [1, 6, 7, 8, 9, 11, 12], "recommend": [2, 3, 4, 7, 10], "virtualenv": 2, "venv": [2, 3], "up": 2, "runtim": [2, 4], "dedic": 2, "virtual": [2, 3], "env": [2, 3], "run": [2, 3, 4, 8, 9, 11, 12], "script": 2, "m": [2, 3], "activ": [2, 3], "window": 2, "bin": [2, 3], "pypi": [2, 3, 9, 10], "packag": [2, 3, 10], "pip": [2, 3, 11, 12], "3": [2, 3], "variabl": [2, 4], "command": [2, 6, 9, 12], "export": [2, 11], "slack_bot_token": [2, 4, 7, 9, 11], "xoxb": [2, 4, 9, 11], "Then": [2, 4], "verifi": [2, 3, 4, 6, 12], "work": [2, 3, 4, 9, 10, 11, 12], "repl": [2, 3], "start": [2, 4, 6, 7, 9, 10, 11], "just": [2, 3, 4, 9, 10, 11, 12], "log": [2, 3, 6, 11], "webclient": [2, 3, 4, 6, 9, 10, 11], "basicconfig": [2, 3, 11], "level": [2, 3, 9, 11], "debug": [2, 3, 11], "client": [2, 3, 4, 6, 10], "re": [2, 3, 4, 6, 9, 10, 11], "api_test": [2, 3], "As": [2, 10], "deprec": [2, 10], "switch": [2, 10], "That": [2, 10, 11], "said": [2, 10, 11, 12], "mai": [2, 6, 8, 11], "still": [2, 6, 10], "old": 2, "sai": [2, 7, 10, 11], "attributeerror": 2, "ha": [2, 4, 10, 11], "attribut": [2, 8, 11], "find": [2, 10], "both": 2, "output": 2, "try": [2, 3, 6, 9, 11], "remov": [2, 10, 11], "uninstal": [2, 6], "reinstal": [2, 4], "great": 2, "thank": [2, 6, 11], "u": [2, 3, 7, 8], "know": [2, 4, 6], "tracker": [2, 3], "feel": [2, 11], "particularli": 2, "ambiti": 2, "why": 2, "submit": [2, 6, 9, 11], "pull": [2, 3], "fix": 2, "There": [2, 9, 10], "alwai": [2, 3], "someth": [2, 6, 10], "could": 2, "ad": [2, 7, 11], "discuss": [2, 3], "around": 2, "propos": 2, "good": [2, 3, 9], "yourself": 2, "love": 2, "feedback": 2, "help": [2, 6], "don": [2, 4, 6, 7, 9, 10, 11], "t": [2, 4, 6, 7, 9, 10, 11], "bite": 2, "much": [2, 6], "excel": 2, "question": [2, 3], "first": [2, 6, 9, 10], "pleas": [2, 4, 6, 7, 10], "have": [2, 7, 9, 10, 11, 12], "look": [2, 6, 9, 11], "our": [2, 4, 7, 11], "gener": [2, 3, 4, 6, 11, 12], "guidelin": 2, "done": 2, "while": [2, 7, 10, 11], "super": 2, "excit": [2, 11], "incorpor": 2, "coupl": 2, "thing": [2, 9, 11], "want": [2, 6, 11], "make": [2, 10, 11], "sure": [2, 11], "ve": [2, 4], "given": [2, 6, 11], "thought": 2, "unit": 2, "But": 2, "aim": 2, "increas": 2, "coverag": [2, 10], "rather": [2, 7], "expect": [2, 10], "written": 2, "ensur": 2, "continu": [2, 11], "futur": 2, "thei": [2, 3, 11], "break": [2, 10], "think": 2, "concret": 2, "case": [2, 6], "section": [2, 4, 6, 7, 9, 11, 12], "appropri": [2, 8], "includ": [2, 4, 6, 8, 11, 12], "complet": [2, 4, 6, 7], "sampl": 2, "program": [2, 9, 11, 12], "demonstr": [2, 6], "forget": [2, 4, 9, 11], "updat": [2, 8, 11], "changelog": 2, "rst": 2, "two": 2, "item": [2, 11], "total": 2, "dai": 2, "importantli": 2, "user": [2, 3, 4, 6, 7, 8, 9, 11, 12], "On": [2, 8, 9], "note": [2, 6, 7, 9, 11], "project": [2, 3, 9, 10], "sphinx": 2, "edit": 2, "mani": [2, 11], "restructuredtext": 2, "file": 2, "src": [2, 6], "folder": 2, "ll": [2, 4, 11], "rebuild": 2, "It": [2, 3, 6, 8, 12], "step": [2, 6, 10], "insid": [2, 7], "v3": [2, 6, 10, 11], "sh": 2, "do": [2, 4, 6, 7, 9, 11], "content": 2, "sever": 3, "each": [3, 11], "deliv": 3, "capabl": 3, "so": [3, 10, 11, 12], "pick": 3, "fit": 3, "small": 3, "power": 3, "independ": 3, "seamlessli": 3, "togeth": [3, 11], "too": [3, 6, 11, 12], "featur": [3, 4, 6, 9, 10], "send": [3, 7, 9, 11, 12], "queri": [3, 4, 6], "ani": [3, 4, 6, 7, 9, 10, 12], "over": [3, 9, 11], "200": [3, 6, 11, 12], "webhook": [3, 10], "response_url": 3, "messag": [3, 9, 12], "incom": [3, 6], "mode": [3, 7, 10], "receiv": [3, 7, 9, 11], "socket_mod": [3, 9], "setup": [3, 4], "authent": [3, 6, 11, 12], "flow": [3, 4, 10], "v2": [3, 4, 6, 7, 10], "openid": [3, 6], "audit": 3, "util": 3, "provis": [3, 8], "account": [3, 8], "group": [3, 8, 11], "rtm": [3, 10], "listen": [3, 9], "websocket": [3, 7, 9], "rtm_v2": [3, 7], "signatur": [3, 6, 11, 12], "verif": 3, "server": [3, 6, 9], "ui": [3, 6], "builder": [3, 11], "construct": 3, "compon": 3, "easi": [3, 9], "model": [3, 7, 9, 11], "support": [3, 7, 8, 10], "6": 3, "higher": 3, "Of": 3, "cours": 3, "directli": [3, 11], "git": 3, "clone": 3, "github": 3, "cd": 3, "python3": [3, 11], "And": 3, "save": [3, 4, 6, 11], "few": [3, 9, 10], "line": 3, "py": [3, 4, 10, 11], "sy": 3, "stuck": [3, 11], "here": [3, 6, 7, 8, 9, 10, 11], "best": [3, 11], "assist": 3, "through": [3, 6], "issu": [3, 6, 7], "bug": 3, "report": 3, "visit": [3, 9], "commun": [3, 7], "bond": 3, "fellow": 3, "keep": [4, 7], "safe": 4, "where": [4, 6], "depend": [4, 9, 10, 11, 12], "grant": 4, "potenti": 4, "abil": [4, 7], "read": [4, 6, 7], "treat": 4, "password": 4, "publish": 4, "them": [4, 11], "share": [4, 6, 11], "avoid": 4, "111": [4, 9], "222": [4, 9], "xxxxx": 4, "persist": [4, 6], "databas": 4, "myapp": 4, "retriev": [4, 6, 11], "kei": 4, "addit": [4, 9, 11], "store": [4, 6, 11], "credenti": [4, 7], "page": [4, 7, 9, 11], "singl": [4, 8, 11], "entir": 4, "onc": 4, "click": [4, 6, 9], "button": [4, 6, 11], "found": [4, 8], "permiss": [4, 7, 9], "after": [4, 6, 11], "been": [4, 7, 11], "must": [4, 7, 8, 11], "chang": [4, 9, 10, 11], "take": [4, 6, 11], "effect": 4, "multipl": 4, "intend": 4, "handl": [4, 6, 7, 11, 12], "via": [4, 12], "industri": 4, "standard": [4, 6, 10, 11, 12], "protocol": 4, "exchang": [4, 6, 11], "facilit": 4, "webserv": 4, "exampl": [4, 6, 7, 8, 11], "flask": [4, 6, 11, 12], "id": [4, 6, 7, 8, 9, 11], "secret": 4, "appli": 4, "determin": 4, "function": [4, 7, 9], "everi": 4, "wish": [4, 11], "order": 4, "abl": 4, "review": [4, 11], "full": [4, 6, 11], "client_id": [4, 6], "slack_client_id": [4, 6], "client_secret": [4, 6], "slack_client_secret": [4, 6], "oauth_scop": 4, "slack_scop": 4, "__name__": [4, 6, 11, 12], "initi": [4, 9], "link": [4, 7], "begin": [4, 8], "author": [4, 6], "pre": 4, "direct": [4, 9, 11], "accept": [4, 11], "refus": 4, "rout": [4, 6, 11, 12], "pre_instal": 4, "randomli": 4, "time": [4, 10, 11], "valu": [4, 6, 8, 11], "href": [4, 6], "f": [4, 6, 7, 11, 12], "agre": 4, "redirect": [4, 6], "auth": [4, 6], "which": [4, 6, 7, 11], "string": [4, 6, 11], "param": [4, 6, 11], "final": 4, "oauth_redirect": [4, 6], "post_instal": 4, "code_param": 4, "arg": [4, 6], "empti": [4, 8, 11], "oauth_v2_access": [4, 6], "A": [4, 11], "success": 4, "yield": 4, "json": [4, 6, 11], "payload": [4, 6, 7, 9, 11, 12], "least": [4, 8], "bot": [4, 6, 7, 9, 11], "print": [4, 6, 8, 11], "environment": 4, "later": 4, "access_token": [4, 6], "succeed": 4, "__main__": [4, 11], "localhost": [4, 11], "3000": [4, 11], "basic": [4, 7, 9, 11], "usag": 4, "explain": 6, "easier": [6, 11], "same": [6, 9, 11], "bolt": 6, "stack": 6, "framework": 6, "most": [6, 7, 10, 11], "At": 6, "end": 6, "gain": 6, "refer": [6, 7, 8, 10, 11], "necessari": 6, "valida": 6, "process": [6, 9], "installationstor": 6, "fileinstallationstor": 6, "oauthstatestor": 6, "consum": 6, "side": 6, "fileoauthstatestor": 6, "authorizeurlgener": 6, "suffici": 6, "snippet": [6, 7], "below": [6, 7, 9, 11], "installation_stor": 6, "state_stor": 6, "expiration_second": 6, "300": 6, "base_dir": 6, "authorize_url_gener": 6, "app_ment": 6, "chat": [6, 11], "user_scop": 6, "search": 6, "make_respons": [6, 11, 12], "oauth_start": 6, "random": [6, 11], "url": [6, 7, 11, 12], "img": 6, "alt": 6, "height": 6, "40": 6, "width": 6, "139": 6, "edg": 6, "add_to_slack": 6, "png": [6, 11], "srcset": 6, "1x": 6, "2x": 6, "domain": [6, 8, 11], "webpag": 6, "callback": [6, 7, 9, 11], "goe": 6, "okai": 6, "back": [6, 7], "specifi": [6, 8, 11], "give": [6, 7], "oauth_callback": 6, "prepar": 6, "oauth_respons": 6, "redirect_uri": 6, "installed_enterpris": 6, "is_enterprise_instal": 6, "installed_team": 6, "authed_us": 6, "incoming_webhook": 6, "bot_token": 6, "doesn": [6, 10], "bot_id": 6, "enterprise_url": 6, "auth_test": 6, "true": [6, 10, 11], "app_id": 6, "enterprise_id": 6, "enterprise_nam": 6, "name": [6, 8, 9, 10, 11], "team_id": 6, "team_nam": 6, "bot_user_id": 6, "bot_scop": 6, "comma": [6, 11], "separ": [6, 11], "user_id": [6, 8, 11], "user_token": 6, "incoming_webhook_url": 6, "incoming_webhook_channel": 6, "channel": [6, 7, 9, 11, 12], "incoming_webhook_channel_id": 6, "channel_id": [6, 7, 11], "incoming_webhook_configuration_url": 6, "configuration_url": 6, "token_typ": 6, "els": [6, 11], "again": 6, "alreadi": [6, 7, 11], "expir": 6, "400": 6, "wrong": 6, "now": [6, 10], "choos": [6, 9], "right": 6, "slackapierror": [6, 11], "signatureverifi": [6, 11, 12], "signing_secret": [6, 12], "slack_signing_secret": [6, 11, 12], "signature_verifi": [6, 11, 12], "post": [6, 7, 8, 11, 12], "slack_app": [6, 11, 12], "is_valid": [6, 12], "bodi": [6, 11, 12], "get_data": [6, 11, 12], "timestamp": [6, 9, 11, 12], "header": [6, 11, 12], "x": [6, 12], "invalid": [6, 11, 12], "403": [6, 11, 12], "slash": [6, 9, 12], "invoc": [6, 12], "form": [6, 11, 12], "open": [6, 9, 11], "modal": [6, 9], "find_bot": 6, "trigger_id": [6, 9, 11], "views_open": [6, 9, 11], "view": [6, 9, 11], "callback_id": [6, 9, 11], "titl": [6, 9, 11], "plain_text": [6, 9, 11], "text": [6, 7, 9, 11, 12], "awesom": [6, 11], "block": [6, 9, 11, 12], "input": [6, 11], "block_id": [6, 11], "b": [6, 11], "label": [6, 11], "element": [6, 11], "action_id": [6, 11], "plain_text_input": [6, 11], "fail": [6, 11], "due": [6, 11], "elif": 6, "submiss": [6, 11], "load": [6, 11], "view_submiss": [6, 9, 11], "submitted_data": [6, 11], "indic": [6, 11], "unsupport": 6, "pattern": 6, "404": [6, 11, 12], "solut": 6, "abov": [6, 11], "servic": [6, 8, 12], "profil": 6, "wa": [6, 11], "recent": 6, "upgrad": [6, 7], "specif": [6, 9, 10], "9": [6, 11], "oauth_config": 6, "redirect_url": 6, "email": [6, 8], "openidconnectauthorizeurlgener": 6, "easili": 6, "nonc": 6, "perform": [6, 9], "sanic": 6, "directori": 6, "base": 7, "allow": [7, 9, 11], "prefer": [7, 9], "push": [7, 11], "along": 7, "instead": [7, 9, 10, 11, 12], "contain": [7, 11], "some": [7, 10, 11], "aren": 7, "app_home_open": 7, "d": 7, "adaptor": 7, "rtmclient": 7, "driven": 7, "architectur": 7, "simpli": [7, 10, 11], "occur": 7, "execut": 7, "In": [7, 9, 11], "watch": 7, "hello": [7, 9, 11, 12], "say_hello": 7, "hi": 7, "classic": 7, "plain": 7, "even": [7, 8], "encourag": 7, "newer": [7, 10], "_v2": 7, "latter": 7, "legaci": 7, "version": [7, 9], "go": [7, 9, 10, 11, 12], "next": 7, "dict": [7, 11], "thread_t": [7, 11], "usernam": [7, 8], "format": [7, 11], "either": [7, 8, 9, 11], "w": [7, 8], "web_client": [7, 9], "chat_postmessag": [7, 11], "resolv": [7, 10], "run_on": 7, "slack_token": [7, 11], "rtm_client": 7, "v": 7, "By": [7, 11], "establish": [7, 9], "convers": [7, 10], "connect_method": 7, "instanti": 7, "larger": 7, "slow": 7, "unreli": 7, "1358878749": 7, "000002": [7, 11], "u023becgf": 7, "sign": 8, "sso": 8, "ident": 8, "peopl": [8, 11], "across": 8, "varieti": 8, "system": 8, "cross": 8, "myriad": 8, "behav": 8, "slightli": [8, 11], "differ": [8, 9, 11], "fetch": 8, "search_us": 8, "start_index": 8, "count": 8, "100": 8, "filter": 8, "eq": 8, "carli": 8, "similarli": 8, "search_group": 8, "shape": 8, "object": [8, 11], "10": 8, "delet": [8, 11], "useremail": 8, "user_nam": 8, "argument": [8, 9, 11], "address": [8, 10], "automat": [8, 10], "convert": 8, "cal": 8, "given_nam": 8, "c": 8, "family_nam": 8, "henderson": 8, "uniqu": 8, "creation_result": 8, "create_us": 8, "patch": 8, "exist": [8, 10, 11], "resourc": 8, "overwrit": 8, "patch_result": 8, "patch_us": 8, "partial_us": 8, "chenderson": 8, "put": 8, "user_to_upd": 8, "update_result": 8, "update_us": 8, "deactiv": 8, "should": [8, 11], "delete_result": 8, "delete_us": 8, "lastli": 8, "main": [8, 9], "2": 8, "interact": [9, 11], "off": [9, 11], "left": [9, 11], "pane": 9, "turn": 9, "home": 9, "under": 9, "show": [9, 11], "tab": 9, "subscript": 9, "expand": 9, "subscrib": 9, "select": 9, "im": [9, 11], "sent": 9, "itself": [9, 11], "shortcut": [9, 11], "global": [9, 11], "short": [9, 10, 11], "descript": 9, "greet": 9, "reaction": [9, 11], "emoji": [9, 11], "reacji": 9, "xapp": 9, "xoxp": 9, "app_token": 9, "slack_app_token": 9, "a111": 9, "xyz": 9, "socketmoderespons": 9, "socketmoderequest": 9, "req": 9, "events_api": 9, "acknowledg": [9, 12], "anywai": 9, "envelope_id": 9, "send_socket_mode_respons": 9, "subtyp": 9, "reactions_add": [9, 11], "ey": 9, "welcom": 9, "bye": 9, "mrkdwn": [9, 11, 12], "close": [9, 11], "socket_mode_request_listen": 9, "stop": 9, "thread": [9, 11], "wait": [9, 11], "cover": [9, 11], "3rd": 9, "parti": [9, 11], "websocket_cli": 9, "pockag": 9, "apart": [9, 10], "asyncwebcli": [9, 10], "sleep": [9, 11], "float": 9, "inf": 9, "websit": 10, "live": 10, "befor": [10, 11], "howev": [10, 11], "mainten": 10, "successor": 10, "introduc": 10, "renam": 10, "warn": 10, "mean": 10, "longer": [10, 11], "run_async": 10, "legacywebcli": 10, "sorri": 10, "inconveni": 10, "txt": 10, "sinc": [10, 11], "technic": 10, "biggest": 10, "reason": 10, "box": [10, 11], "secondari": 10, "consist": 10, "long": [10, 11], "confus": 10, "between": [10, 11], "replac": 10, "your_app": 10, "xarg": 10, "sed": 10, "similar": 10, "manual": 10, "without": [10, 11], "userwarn": 10, "info": [10, 11], "won": [10, 11], "term": 10, "asyncwebhookcli": 10, "explicitli": 10, "unlik": 10, "synchron": 10, "highli": 10, "straight": 10, "forward": 10, "natur": 10, "complex": 11, "than": 11, "integr": 11, "practic": 11, "fulli": 11, "site": 11, "One": 11, "primari": 11, "dm": 11, "anoth": 11, "person": 11, "otherwis": 11, "not_in_channel": 11, "channel_not_found": 11, "public": 11, "join": 11, "postmessag": 11, "c0xxxxxx": 11, "tada": 11, "ok": [11, 12], "fals": 11, "assert": [11, 12], "str": [11, 12], "invalid_auth": 11, "ephemer": 11, "visibl": 11, "assign": 11, "nearli": 11, "regular": 11, "chat_postephemer": 11, "silent": 11, "u0xxxxxxx": 11, "postephemer": 11, "kit": [11, 12], "though": 11, "interfac": 11, "compos": 11, "custom": 11, "layout": 11, "arrai": 11, "danni": 11, "torrenc": 11, "properti": 11, "overlook": 11, "hotel": 11, "n": [11, 12], "star": 11, "door": 11, "had": 11, "ax": 11, "hole": 11, "guest": 11, "room": 11, "237": 11, "far": 11, "rowdi": 11, "whole": 11, "place": 11, "felt": 11, "1920": 11, "accessori": 11, "imag": 11, "image_url": 11, "pexel": 11, "photo": 11, "750319": 11, "jpeg": 11, "alt_text": 11, "haunt": 11, "field": 11, "averag": 11, "n1": 11, "prototyp": 11, "greater": 11, "context": 11, "repli": [11, 12], "origin": 11, "linear": 11, "timelin": 11, "becom": 11, "parent": 11, "appear": 11, "releg": 11, "kind": 11, "fork": 11, "descend": 11, "1476746830": 11, "000003": 11, "reply_broadcast": 11, "german": 11, "therefor": 11, "notif": 11, "attach": 11, "broadcast": 11, "actual": 11, "articl": 11, "reflect": 11, "chat_upd": 11, "special": 11, "consider": 11, "sometim": 11, "chat_delet": 11, "1476745373": 11, "quickli": 11, "respond": 11, "purpos": 11, "vote": 11, "fun": 11, "comment": 11, "file_com": 11, "combin": 11, "c0xxxxxxx": 11, "thumbsup": 11, "1234567890": 11, "123456": 11, "reactions_remov": 11, "upload": 11, "onto": 11, "files_upload": 11, "c3ukjtqac": 11, "pdf": 11, "remot": 11, "extern": 11, "storag": 11, "files_remote_add": 11, "external_id": 11, "hand": 11, "deck": 11, "12345": 11, "external_url": 11, "preview_imag": 11, "preview": 11, "displai": 11, "unifi": 11, "privat": 11, "newest": 11, "conversations_open": 11, "multi": 11, "number": 11, "suppli": 11, "conversations_cr": 11, "8": 11, "resum": 11, "subsequ": 11, "w123456789": 11, "u987654321": 11, "letter": 11, "hyphen": 11, "underscor": 11, "fewer": 11, "80": 11, "charact": 11, "is_priv": 11, "channel_nam": 11, "my": 11, "round": 11, "conversations_arch": 11, "conversations_list": 11, "interest": 11, "public_channel": 11, "private_channel": 11, "mpim": 11, "archiv": 11, "exclud": 11, "exclude_archiv": 11, "metadata": 11, "conversations_info": 11, "include_local": 11, "boolean": 11, "local": 11, "include_num_memb": 11, "c031415926": 11, "conversations_memb": 11, "c16180339": 11, "social": 11, "hub": 11, "hop": 11, "conversations_join": 11, "c0xxxxxxy": 11, "already_in_channel": 11, "cannot": 11, "invit": 11, "leav": 11, "conversations_leav": 11, "c27182818": 11, "collect": 11, "dynam": 11, "focus": 11, "surfac": 11, "jsonifi": 11, "is_valid_request": 11, "flask_env": 11, "tell": 11, "current": 11, "response_act": 11, "modifi": 11, "block_act": 11, "private_metadata": 11, "views_upd": 11, "view_id": 11, "hash": 11, "cancel": 11, "per": 11, "second": 11, "burst": 11, "period": 11, "exce": 11, "grace": 11, "fallback": [11, 12], "hit": 11, "until": 11, "veri": 11, "might": 11, "deal": 11, "wrapper": 11, "send_slack_messag": 11, "result": 11, "status_cod": [11, 12], "delai": 11, "int": 11, "rais": 11, "bit": 11, "releas": 11, "hurri": 11, "api_cal": 11, "api_method": 11, "world": 11, "asynchron": [11, 12], "beforehand": [11, 12], "slack_api_token": 11, "post_messag": 11, "keyword": 11, "got": 11, "simplest": [11, 12], "webhookcli": 12, "associ": 12, "hook": 12, "t00000000": 12, "b00000000": 12, "xxxxxxxxxxxxxxxxxxxxxxxx": 12, "possibl": 12, "richer": 12, "fakelink": 12, "toemployeeprofil": 12, "fred": 12, "enriquez": 12, "devic": 12, "send_message_via_webhook": 12}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"about": 0, "python": [0, 2, 3], "slack": [0, 3, 6], "sdk": [0, 3], "audit": 1, "log": 1, "api": [1, 8, 11], "client": [1, 7, 8, 9, 11, 12], "auditlogscli": 1, "asyncauditlogscli": 1, "retryhandl": [1, 8, 11, 12], "faq": 2, "document": 2, "instal": [2, 3, 4, 6], "issu": 2, "bug": 2, "report": 2, "featur": 2, "request": 2, "contribut": 2, "get": 3, "help": 3, "access": 4, "token": [4, 6], "workspac": 4, "oauth": 6, "modul": 6, "app": 6, "flow": 6, "lookup": 6, "sign": 6, "rtm": 7, "real": 7, "time": 7, "messag": [7, 11], "scim": 8, "scimclient": 8, "asyncscimcli": 8, "socket": 9, "mode": 9, "socketmodecli": 9, "support": 9, "librari": 9, "asyncio": 9, "base": 9, "migrat": 10, "guid": 10, "from": 10, "slackclient": 10, "2": 10, "x": 10, "1": 10, "web": 11, "file": 11, "convers": 11, "modal": 11, "rate": 11, "limit": 11, "call": 11, "ani": 11, "method": 11, "asyncwebcli": 11, "webhook": 12, "incom": 12, "response_url": 12, "asyncwebhookcli": 12}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"About": [[0, "about"]], "Python Slack SDK": [[0, "product-name"], [3, "product-name"]], "Audit Logs API Client": [[1, "audit-logs-api-client"]], "AuditLogsClient": [[1, "auditlogsclient"]], "AsyncAuditLogsClient": [[1, "asyncauditlogsclient"]], "RetryHandler": [[1, "retryhandler"], [8, "retryhandler"], [11, "retryhandler"], [12, "retryhandler"]], "FAQ": [[2, "faq"]], "Python Documents": [[2, "python-documents"]], "Installation Issues": [[2, "installation-issues"]], "Bug Report": [[2, "bug-report"]], "Feature Requests": [[2, "feature-requests"]], "Contributions": [[2, "contributions"]], "Documentation": [[2, "documentation"]], "Installation": [[3, "installation"], [4, "installation"]], "Getting Help": [[3, "getting-help"]], "Access Tokens": [[4, "access-tokens"]], "Workspace Installations": [[4, "workspace-installations"]], "OAuth Modules": [[6, "oauth-modules"]], "App Installation Flow": [[6, "app-installation-flow"]], "Token Lookup": [[6, "token-lookup"]], "Sign in with Slack": [[6, "sign-in-with-slack"]], "RTM Client": [[7, "rtm-client"]], "Real Time Messaging (RTM)": [[7, "real-time-messaging-rtm"]], "SCIM API Client": [[8, "scim-api-client"]], "SCIMClient": [[8, "scimclient"]], "AsyncSCIMClient": [[8, "asyncscimclient"]], "Socket Mode Client": [[9, "socket-mode-client"]], "SocketModeClient": [[9, "socketmodeclient"]], "Supported Libraries": [[9, "supported-libraries"]], "Asyncio Based Libraries": [[9, "asyncio-based-libraries"]], "Migration Guide": [[10, "migration-guide"]], "From slackclient 2.x": [[10, "from-slackclient-2-x"]], "From slackclient 1.x": [[10, "from-slackclient-1-x"]], "Web Client": [[11, "web-client"]], "Messaging": [[11, "messaging"]], "Files": [[11, "files"]], "Conversations": [[11, "conversations"]], "Modals": [[11, "modals"]], "Rate Limits": [[11, "rate-limits"]], "Calling any API methods": [[11, "calling-any-api-methods"]], "AsyncWebClient": [[11, "asyncwebclient"]], "Webhook Client": [[12, "webhook-client"]], "Incoming Webhooks": [[12, "id1"]], "response_url": [[12, "response-url"]], "AsyncWebhookClient": [[12, "asyncwebhookclient"]]}, "indexentries": {}})
\ No newline at end of file
+Search.setIndex({"docnames": ["about", "audit-logs/index", "faq", "index", "installation/index", "metadata", "oauth/index", "real_time_messaging", "scim/index", "socket-mode/index", "v3-migration/index", "web/index", "webhook/index"], "filenames": ["about.rst", "audit-logs/index.rst", "faq.rst", "index.rst", "installation/index.rst", "metadata.rst", "oauth/index.rst", "real_time_messaging.rst", "scim/index.rst", "socket-mode/index.rst", "v3-migration/index.rst", "web/index.rst", "webhook/index.rst"], "titles": ["About", "Audit Logs API Client", "FAQ", "Python Slack SDK", "Installation", "<no title>", "OAuth Modules", "RTM Client", "SCIM API Client", "Socket Mode Client", "Migration Guide", "Web Client", "Webhook Client"], "terms": {"access": [0, 1, 6, 8, 11], "platform": [0, 3, 6, 7], "from": [0, 1, 2, 3, 4, 6, 7, 8, 9, 11, 12], "your": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "app": [0, 1, 3, 4, 7, 8, 9, 11, 12], "let": [0, 2, 4, 6, 9, 11], "you": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "build": [0, 3, 4, 6, 11], "web": [0, 3, 6, 7, 9, 10], "api": [0, 2, 3, 4, 6, 7, 9, 10, 12], "i": [0, 1, 2, 4, 6, 7, 8, 9, 10, 11, 12], "proudli": 0, "maintain": 0, "develop": [0, 3, 7, 11], "tool": [0, 1, 8], "team": [0, 4, 6, 7, 11], "licens": 0, "code": [0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12], "conduct": 0, "contribut": 0, "contributor": [0, 2], "agreement": 0, "opensourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "com": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "slackapi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "set": [1, 2, 3, 4, 6, 8, 9, 11, 12], "monitor": 1, "what": [1, 2, 3, 6], "": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "happen": [1, 3, 6], "enterpris": [1, 6], "grid": [1, 6], "organ": 1, "The": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "can": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "us": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "secur": 1, "inform": [1, 4, 7, 9, 11], "event": [1, 3, 6, 7, 9, 11, 12], "manag": [1, 3, 6, 8, 9], "siem": 1, "provid": [1, 4, 6, 8, 10, 11], "an": [1, 2, 4, 6, 7, 8, 9, 11, 12], "analysi": 1, "how": [1, 4, 6, 8, 11, 12], "slack": [1, 2, 4, 5, 7, 8, 9, 10, 11, 12], "being": [1, 2, 11], "also": [1, 3, 7, 8, 10, 11, 12], "thi": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "write": [1, 2, 4, 6, 9, 11], "own": [1, 6, 8, 9, 11, 12], "applic": [1, 4, 11], "see": [1, 4, 6, 7, 11], "member": [1, 11], "ar": [1, 2, 3, 4, 8, 9, 10, 11, 12], "follow": [1, 2, 3, 6, 9, 11], "instruct": 1, "document": [1, 3, 4, 6, 7, 8, 9, 11, 12], "get": [1, 4, 6, 9, 11, 12], "valid": [1, 4, 6, 11], "token": [1, 2, 7, 8, 9, 11], "need": [1, 2, 3, 4, 6, 7, 9, 10, 11], "instal": [1, 9, 11, 12], "individu": 1, "workspac": [1, 6, 9, 11], "within": 1, "python": [1, 4, 5, 6, 7, 8, 9, 10, 11, 12], "modul": [1, 2, 3, 8, 9, 10, 11, 12], "avail": [1, 2, 3, 4, 6, 8, 9, 11, 12], "http": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "dev": [1, 2, 3, 6, 8, 9, 10, 11, 12], "sdk": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12], "doc": [1, 2, 3, 6, 7, 8, 9, 11, 12], "slack_sdk": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "oauth": [1, 3, 4, 8, 9, 10, 11], "admin": [1, 8], "scope": [1, 4, 6, 7, 8, 9, 11], "requir": [1, 4, 6, 8, 9, 10, 11, 12], "like": [1, 7, 9, 10, 11], "endpoint": [1, 4, 6, 11], "essenti": 1, "part": [1, 3], "To": [1, 4, 6, 8, 9, 11, 12], "learn": [1, 6, 7, 8, 11, 12], "about": [1, 2, 4, 6, 7, 8, 11], "paramet": [1, 4, 6, 11], "check": [1, 4, 6, 8, 11, 12], "out": [1, 4, 8, 9, 10, 11], "guid": 1, "more": [1, 2, 4, 7, 8, 9, 10, 11, 12], "data": [1, 3, 4, 6, 7, 8, 11], "structur": [1, 8], "api_respons": [1, 3, 11], "typed_bodi": 1, "class": [1, 8, 10, 11, 12], "sourc": [1, 2, 3, 4, 8, 9, 10, 11, 12], "import": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12], "o": [1, 2, 4, 6, 7, 8, 9, 11, 12], "audit_log": [1, 3], "environ": [1, 2, 4, 6, 7, 8, 9, 11, 12], "slack_org_admin_user_token": [1, 8], "action": [1, 10, 12], "user_login": 1, "limit": [1, 3, 8, 12], "1": [1, 8, 9, 11, 12], "v1": [1, 7, 8], "logsrespons": 1, "If": [1, 2, 3, 4, 6, 7, 9, 10, 11], "would": [1, 4, 7], "scheme": 1, "method": [1, 3, 4, 6, 7, 8, 9, 12], "schema": 1, "keen": [1, 8], "asyncio": [1, 6, 8, 10, 11, 12], "scim": [1, 3], "call": [1, 4, 6, 7, 8, 9, 10, 12], "we": [1, 2, 3, 4, 7, 8, 10, 11], "offer": [1, 3, 8, 9], "asyncscimcli": 1, "reli": [1, 8, 10, 11, 12], "aiohttp": [1, 8, 9, 10, 11, 12], "librari": [1, 8, 10, 11, 12], "async_cli": [1, 3, 8, 9, 11, 12], "await": [1, 8, 9, 10, 11, 12], "With": [1, 6, 8, 11, 12], "default": [1, 6, 7, 8, 11, 12], "onli": [1, 8, 9, 10, 11, 12], "connectionerrorretryhandl": [1, 8, 11, 12], "its": [1, 2, 3, 6, 7, 8, 9, 11, 12], "configur": [1, 4, 7, 8, 9, 11, 12], "one": [1, 2, 4, 7, 8, 9, 10, 11, 12], "retri": [1, 8, 11, 12], "manner": [1, 8, 11, 12], "exponenti": [1, 8, 11, 12], "backoff": [1, 8, 11, 12], "jitter": [1, 8, 11, 12], "enabl": [1, 3, 8, 9, 11, 12], "handler": [1, 6, 8, 11, 12], "encount": [1, 2, 8, 11, 12], "connect": [1, 3, 6, 7, 8, 9, 11, 12], "relat": [1, 3, 8, 11, 12], "failur": [1, 8, 11, 12], "e": [1, 3, 6, 8, 11, 12], "g": [1, 8, 10, 11, 12], "reset": [1, 8, 11, 12], "peer": [1, 8, 11, 12], "other": [1, 4, 8, 9, 10, 11, 12], "pass": [1, 4, 7, 8, 9, 11, 12], "list": [1, 2, 4, 7, 8, 11, 12], "constructor": [1, 8, 11, 12], "For": [1, 4, 7, 8, 10, 11, 12], "instanc": [1, 8, 11, 12], "add": [1, 2, 4, 6, 8, 9, 10, 11, 12], "built": [1, 4, 8, 9, 11, 12], "ratelimiterrorretryhandl": [1, 8, 11, 12], "wai": [1, 3, 6, 8, 9, 10, 11, 12], "doe": [1, 6, 7, 8, 11, 12], "when": [1, 3, 6, 7, 8, 11, 12], "statu": [1, 8, 11, 12], "429": [1, 8, 11, 12], "return": [1, 4, 6, 8, 11, 12], "http_retri": [1, 8, 11, 12], "builtin_handl": [1, 8, 11, 12], "rate_limit_handl": [1, 8, 11, 12], "max_retry_count": [1, 8, 11, 12], "rate": [1, 8, 12], "error": [1, 2, 6, 8, 11, 12], "well": [1, 6, 8, 11, 12], "retry_handl": [1, 8, 11, 12], "append": [1, 8, 9, 11, 12], "creat": [1, 2, 6, 7, 8, 9, 11, 12], "ones": [1, 8, 9, 11, 12], "quit": [1, 8, 11, 12], "simpl": [1, 4, 8, 9, 10, 11, 12], "defin": [1, 4, 8, 11, 12], "new": [1, 2, 4, 6, 7, 8, 9, 10, 11, 12], "inherit": [1, 8, 11, 12], "asyncretryhandl": [1, 8, 11, 12], "implement": [1, 6, 8, 9, 11, 12], "intern": [1, 8, 10, 11, 12], "can_retri": [1, 8, 11, 12], "prepare_for_next_retri": [1, 8, 11, 12], "properli": [1, 8, 10, 11, 12], "socket": [1, 3, 7, 8, 11, 12], "type": [1, 6, 7, 8, 9, 11, 12], "option": [1, 6, 8, 10, 11, 12], "retryst": [1, 8, 11, 12], "httprequest": [1, 8, 11, 12], "httprespons": [1, 8, 11, 12], "builtin_interval_calcul": [1, 8, 11, 12], "backoffretryintervalcalcul": [1, 8, 11, 12], "randomjitt": [1, 8, 11, 12], "myretryhandl": [1, 8, 11, 12], "def": [1, 4, 6, 7, 8, 9, 11, 12], "_can_retri": [1, 8, 11, 12], "self": [1, 8, 11, 12], "state": [1, 4, 6, 8, 11, 12], "request": [1, 3, 4, 6, 8, 9, 11, 12], "respons": [1, 4, 6, 7, 8, 9, 11, 12], "none": [1, 6, 8, 9, 11, 12], "except": [1, 6, 8, 11, 12], "bool": [1, 8, 11, 12], "errno": [1, 8, 11, 12], "104": [1, 8, 11, 12], "isinst": [1, 8, 11, 12], "interval_calcul": [1, 8, 11, 12], "backoff_factor": [1, 8, 11, 12], "0": [1, 2, 8, 10, 11, 12], "5": [1, 8, 11, 12], "async": [1, 8, 9, 10, 11, 12], "prefix": [1, 8, 9, 11, 12], "correspond": [1, 3, 4, 7, 8, 11, 12], "all": [1, 2, 4, 6, 8, 9, 10, 11, 12], "those": [1, 3, 7, 8, 10, 11, 12], "compat": [1, 6, 8, 9, 10, 11, 12], "test": [1, 2, 3, 8, 11, 12], "detail": [1, 6, 7, 8, 9, 11, 12], "recommend": [2, 3, 4, 7, 10], "virtualenv": 2, "venv": [2, 3], "up": 2, "runtim": [2, 4], "dedic": 2, "virtual": [2, 3], "env": [2, 3], "run": [2, 3, 4, 8, 9, 11, 12], "script": 2, "m": [2, 3], "activ": [2, 3], "window": 2, "bin": [2, 3], "pypi": [2, 3, 9, 10], "packag": [2, 3, 10], "pip": [2, 3, 11, 12], "3": [2, 3], "variabl": [2, 4], "command": [2, 6, 9, 12], "export": [2, 11], "slack_bot_token": [2, 4, 7, 9, 11], "xoxb": [2, 4, 9, 11], "Then": [2, 4], "verifi": [2, 3, 4, 6, 12], "work": [2, 3, 4, 9, 10, 11, 12], "repl": [2, 3], "start": [2, 4, 6, 7, 9, 10, 11], "just": [2, 3, 4, 9, 10, 11, 12], "log": [2, 3, 6, 11], "webclient": [2, 3, 4, 6, 9, 10, 11], "basicconfig": [2, 3, 11], "level": [2, 3, 9, 11], "debug": [2, 3, 11], "client": [2, 3, 4, 6, 10], "re": [2, 3, 4, 6, 9, 10, 11], "api_test": [2, 3], "As": [2, 10], "deprec": [2, 7, 10], "switch": [2, 10], "That": [2, 10, 11], "said": [2, 10, 11, 12], "mai": [2, 6, 8, 11], "still": [2, 6, 10], "old": 2, "sai": [2, 7, 10, 11], "attributeerror": 2, "ha": [2, 4, 10, 11], "attribut": [2, 8, 11], "find": [2, 10], "both": 2, "output": 2, "try": [2, 3, 6, 9, 11], "remov": [2, 10, 11], "uninstal": [2, 6], "reinstal": [2, 4], "great": 2, "thank": [2, 6, 11], "u": [2, 3, 7, 8], "know": [2, 4, 6], "tracker": [2, 3], "feel": [2, 11], "particularli": 2, "ambiti": 2, "why": 2, "submit": [2, 6, 9, 11], "pull": [2, 3], "fix": 2, "There": [2, 9, 10], "alwai": [2, 3], "someth": [2, 6, 10], "could": 2, "ad": [2, 7, 11], "discuss": [2, 3], "around": 2, "propos": 2, "good": [2, 3, 9], "yourself": 2, "love": 2, "feedback": 2, "help": [2, 6], "don": [2, 4, 6, 7, 9, 10, 11], "t": [2, 4, 6, 7, 9, 10, 11], "bite": 2, "much": [2, 6], "excel": 2, "question": [2, 3], "first": [2, 6, 9, 10], "pleas": [2, 4, 6, 7, 10], "have": [2, 7, 9, 10, 11, 12], "look": [2, 6, 9, 11], "our": [2, 4, 7, 11], "gener": [2, 3, 4, 6, 11, 12], "guidelin": 2, "done": 2, "while": [2, 7, 10, 11], "super": 2, "excit": [2, 11], "incorpor": 2, "coupl": 2, "thing": [2, 9, 11], "want": [2, 6, 11], "make": [2, 10, 11], "sure": [2, 11], "ve": [2, 4], "given": [2, 6, 11], "thought": 2, "unit": 2, "But": 2, "aim": 2, "increas": 2, "coverag": [2, 10], "rather": 2, "expect": [2, 10], "written": 2, "ensur": 2, "continu": [2, 11], "futur": 2, "thei": [2, 3, 11], "break": [2, 10], "think": 2, "concret": 2, "case": [2, 6], "section": [2, 4, 6, 7, 9, 11, 12], "appropri": [2, 8], "includ": [2, 4, 6, 8, 11, 12], "complet": [2, 4, 6, 7], "sampl": 2, "program": [2, 9, 11, 12], "demonstr": [2, 6], "forget": [2, 4, 9, 11], "updat": [2, 8, 11], "changelog": 2, "rst": 2, "two": 2, "item": [2, 11], "total": 2, "dai": 2, "importantli": 2, "user": [2, 3, 4, 6, 7, 8, 9, 11, 12], "On": [2, 8, 9], "note": [2, 6, 7, 9, 11], "project": [2, 3, 9, 10], "sphinx": 2, "edit": 2, "mani": [2, 11], "restructuredtext": 2, "file": 2, "src": [2, 6], "folder": 2, "ll": [2, 4, 11], "rebuild": 2, "It": [2, 3, 6, 8, 12], "step": [2, 6, 10], "insid": [2, 7], "v3": [2, 6, 10, 11], "sh": 2, "do": [2, 4, 6, 7, 9, 11], "content": 2, "sever": 3, "each": [3, 11], "deliv": 3, "capabl": 3, "so": [3, 10, 11, 12], "pick": 3, "fit": 3, "small": 3, "power": 3, "independ": 3, "seamlessli": 3, "togeth": [3, 11], "too": [3, 6, 11, 12], "featur": [3, 4, 6, 9, 10], "send": [3, 7, 9, 11, 12], "queri": [3, 4, 6], "ani": [3, 4, 6, 7, 9, 10, 12], "over": [3, 9, 11], "200": [3, 6, 11, 12], "webhook": [3, 10], "response_url": 3, "messag": [3, 9, 12], "incom": [3, 6], "mode": [3, 7, 10], "receiv": [3, 7, 9, 11], "socket_mod": [3, 9], "setup": [3, 4], "authent": [3, 6, 11, 12], "flow": [3, 4, 10], "v2": [3, 4, 6, 7, 10], "openid": [3, 6], "audit": 3, "util": 3, "provis": [3, 8], "account": [3, 8], "group": [3, 8, 11], "rtm": [3, 10], "listen": [3, 9], "websocket": [3, 7, 9], "rtm_v2": [3, 7], "signatur": [3, 6, 11, 12], "verif": 3, "server": [3, 6, 9], "ui": [3, 6], "builder": [3, 11], "construct": 3, "compon": 3, "easi": [3, 9], "model": [3, 7, 9, 11], "support": [3, 7, 8, 10], "6": 3, "higher": 3, "Of": 3, "cours": 3, "directli": [3, 11], "git": 3, "clone": 3, "github": 3, "cd": 3, "python3": [3, 11], "And": 3, "save": [3, 4, 6, 11], "few": [3, 9, 10], "line": 3, "py": [3, 4, 10, 11], "sy": 3, "stuck": [3, 11], "here": [3, 6, 7, 8, 9, 10, 11], "best": [3, 11], "assist": 3, "through": [3, 6], "issu": [3, 6, 7], "bug": 3, "report": 3, "visit": [3, 9], "commun": [3, 7], "bond": 3, "fellow": 3, "keep": [4, 7], "safe": 4, "where": [4, 6], "depend": [4, 9, 10, 11, 12], "grant": 4, "potenti": 4, "abil": [4, 7], "read": [4, 6, 7], "treat": 4, "password": 4, "publish": 4, "them": [4, 11], "share": [4, 6, 11], "avoid": 4, "111": [4, 9], "222": [4, 9], "xxxxx": 4, "persist": [4, 6], "databas": 4, "myapp": 4, "retriev": [4, 6, 11], "kei": 4, "addit": [4, 9, 11], "store": [4, 6, 11], "credenti": [4, 7], "page": [4, 7, 9, 11], "singl": [4, 8, 11], "entir": 4, "onc": 4, "click": [4, 6, 9], "button": [4, 6, 11], "found": [4, 8], "permiss": [4, 7, 9], "after": [4, 6, 7, 11], "been": [4, 7, 11], "must": [4, 7, 8, 11], "chang": [4, 9, 10, 11], "take": [4, 6, 11], "effect": 4, "multipl": 4, "intend": 4, "handl": [4, 6, 7, 11, 12], "via": [4, 12], "industri": 4, "standard": [4, 6, 10, 11, 12], "protocol": 4, "exchang": [4, 6, 11], "facilit": 4, "webserv": 4, "exampl": [4, 6, 7, 8, 11], "flask": [4, 6, 11, 12], "id": [4, 6, 7, 8, 9, 11], "secret": 4, "appli": 4, "determin": 4, "function": [4, 7, 9], "everi": 4, "wish": [4, 11], "order": 4, "abl": 4, "review": [4, 11], "full": [4, 6, 11], "client_id": [4, 6], "slack_client_id": [4, 6], "client_secret": [4, 6], "slack_client_secret": [4, 6], "oauth_scop": 4, "slack_scop": 4, "__name__": [4, 6, 11, 12], "initi": [4, 9], "link": [4, 7], "begin": [4, 8], "author": [4, 6], "pre": 4, "direct": [4, 9, 11], "accept": [4, 11], "refus": 4, "rout": [4, 6, 11, 12], "pre_instal": 4, "randomli": 4, "time": [4, 10, 11], "valu": [4, 6, 8, 11], "href": [4, 6], "f": [4, 6, 7, 11, 12], "agre": 4, "redirect": [4, 6], "auth": [4, 6], "which": [4, 6, 11], "string": [4, 6, 11], "param": [4, 6, 11], "final": 4, "oauth_redirect": [4, 6], "post_instal": 4, "code_param": 4, "arg": [4, 6], "empti": [4, 8, 11], "oauth_v2_access": [4, 6], "A": [4, 11], "success": 4, "yield": 4, "json": [4, 6, 11], "payload": [4, 6, 7, 9, 11, 12], "least": [4, 8], "bot": [4, 6, 7, 9, 11], "print": [4, 6, 8, 11], "environment": 4, "later": 4, "access_token": [4, 6], "succeed": 4, "__main__": [4, 11], "localhost": [4, 11], "3000": [4, 11], "basic": [4, 7, 9, 11], "usag": 4, "explain": 6, "easier": [6, 11], "same": [6, 9, 11], "bolt": 6, "stack": 6, "framework": 6, "most": [6, 7, 10, 11], "At": 6, "end": 6, "gain": 6, "refer": [6, 7, 8, 10, 11], "necessari": 6, "valida": 6, "process": [6, 9], "installationstor": 6, "fileinstallationstor": 6, "oauthstatestor": 6, "consum": 6, "side": 6, "fileoauthstatestor": 6, "authorizeurlgener": 6, "suffici": 6, "snippet": [6, 7], "below": [6, 7, 9, 11], "installation_stor": 6, "state_stor": 6, "expiration_second": 6, "300": 6, "base_dir": 6, "authorize_url_gener": 6, "app_ment": 6, "chat": [6, 11], "user_scop": 6, "search": 6, "make_respons": [6, 11, 12], "oauth_start": 6, "random": [6, 11], "url": [6, 7, 11, 12], "img": 6, "alt": 6, "height": 6, "40": 6, "width": 6, "139": 6, "edg": 6, "add_to_slack": 6, "png": [6, 11], "srcset": 6, "1x": 6, "2x": 6, "domain": [6, 8, 11], "webpag": 6, "callback": [6, 7, 9, 11], "goe": 6, "okai": 6, "back": [6, 7], "specifi": [6, 8, 11], "give": [6, 7], "oauth_callback": 6, "prepar": 6, "oauth_respons": 6, "redirect_uri": 6, "installed_enterpris": 6, "is_enterprise_instal": 6, "installed_team": 6, "authed_us": 6, "incoming_webhook": 6, "bot_token": 6, "doesn": [6, 10], "bot_id": 6, "enterprise_url": 6, "auth_test": 6, "true": [6, 10, 11], "app_id": 6, "enterprise_id": 6, "enterprise_nam": 6, "name": [6, 8, 9, 10, 11], "team_id": 6, "team_nam": 6, "bot_user_id": 6, "bot_scop": 6, "comma": [6, 11], "separ": [6, 11], "user_id": [6, 8, 11], "user_token": 6, "incoming_webhook_url": 6, "incoming_webhook_channel": 6, "channel": [6, 7, 9, 11, 12], "incoming_webhook_channel_id": 6, "channel_id": [6, 7, 11], "incoming_webhook_configuration_url": 6, "configuration_url": 6, "token_typ": 6, "els": [6, 11], "again": 6, "alreadi": [6, 7, 11], "expir": 6, "400": 6, "wrong": 6, "now": [6, 10], "choos": [6, 9], "right": 6, "slackapierror": [6, 11], "signatureverifi": [6, 11, 12], "signing_secret": [6, 12], "slack_signing_secret": [6, 11, 12], "signature_verifi": [6, 11, 12], "post": [6, 7, 8, 11, 12], "slack_app": [6, 11, 12], "is_valid": [6, 12], "bodi": [6, 11, 12], "get_data": [6, 11, 12], "timestamp": [6, 9, 11, 12], "header": [6, 11, 12], "x": [6, 12], "invalid": [6, 11, 12], "403": [6, 11, 12], "slash": [6, 9, 12], "invoc": [6, 12], "form": [6, 11, 12], "open": [6, 9, 11], "modal": [6, 9], "find_bot": 6, "trigger_id": [6, 9, 11], "views_open": [6, 9, 11], "view": [6, 9, 11], "callback_id": [6, 9, 11], "titl": [6, 9, 11], "plain_text": [6, 9, 11], "text": [6, 7, 9, 11, 12], "awesom": [6, 11], "block": [6, 9, 11, 12], "input": [6, 11], "block_id": [6, 11], "b": [6, 11], "label": [6, 11], "element": [6, 11], "action_id": [6, 11], "plain_text_input": [6, 11], "fail": [6, 11], "due": [6, 11], "elif": 6, "submiss": [6, 11], "load": [6, 11], "view_submiss": [6, 9, 11], "submitted_data": [6, 11], "indic": [6, 11], "unsupport": 6, "pattern": 6, "404": [6, 11, 12], "solut": 6, "abov": [6, 11], "servic": [6, 8, 12], "profil": 6, "wa": [6, 11], "recent": 6, "upgrad": [6, 7], "specif": [6, 9, 10], "9": [6, 11], "oauth_config": 6, "redirect_url": 6, "email": [6, 8], "openidconnectauthorizeurlgener": 6, "easili": 6, "nonc": 6, "perform": [6, 9], "sanic": 6, "directori": 6, "base": 7, "allow": [7, 9, 11], "prefer": [7, 9], "push": [7, 11], "along": 7, "instead": [7, 9, 10, 11, 12], "contain": [7, 11], "some": [7, 10, 11], "aren": 7, "app_home_open": 7, "d": 7, "adaptor": 7, "rtmclient": 7, "driven": 7, "architectur": 7, "simpli": [7, 10, 11], "occur": 7, "execut": 7, "In": [7, 9, 11], "watch": 7, "hello": [7, 9, 11, 12], "say_hello": 7, "hi": 7, "classic": 7, "plain": 7, "even": [7, 8], "encourag": 7, "newer": [7, 10], "_v2": 7, "latter": 7, "legaci": 7, "version": [7, 9], "go": [7, 9, 10, 11, 12], "next": 7, "dict": [7, 11], "thread_t": [7, 11], "usernam": [7, 8], "format": [7, 11], "either": [7, 8, 9, 11], "w": [7, 8], "web_client": [7, 9], "chat_postmessag": [7, 11], "resolv": [7, 10], "run_on": 7, "slack_token": [7, 11], "rtm_client": 7, "v": 7, "By": [7, 11], "establish": [7, 9], "convers": 10, "connect_method": [], "instanti": [], "larger": [], "slow": [], "unreli": [], "1358878749": 7, "000002": [7, 11], "u023becgf": 7, "sign": 8, "sso": 8, "ident": 8, "peopl": [8, 11], "across": 8, "varieti": 8, "system": 8, "cross": 8, "myriad": 8, "behav": 8, "slightli": [8, 11], "differ": [8, 9, 11], "fetch": 8, "search_us": 8, "start_index": 8, "count": 8, "100": 8, "filter": 8, "eq": 8, "carli": 8, "similarli": 8, "search_group": 8, "shape": 8, "object": [8, 11], "10": 8, "delet": [8, 11], "useremail": 8, "user_nam": 8, "argument": [8, 9, 11], "address": [8, 10], "automat": [8, 10], "convert": 8, "cal": 8, "given_nam": 8, "c": 8, "family_nam": 8, "henderson": 8, "uniqu": 8, "creation_result": 8, "create_us": 8, "patch": 8, "exist": [8, 10, 11], "resourc": 8, "overwrit": 8, "patch_result": 8, "patch_us": 8, "partial_us": 8, "chenderson": 8, "put": 8, "user_to_upd": 8, "update_result": 8, "update_us": 8, "deactiv": 8, "should": [8, 11], "delete_result": 8, "delete_us": 8, "lastli": 8, "main": [8, 9], "2": 8, "interact": [9, 11], "off": [9, 11], "left": [9, 11], "pane": 9, "turn": 9, "home": 9, "under": 9, "show": [9, 11], "tab": 9, "subscript": 9, "expand": 9, "subscrib": 9, "select": 9, "im": [9, 11], "sent": 9, "itself": [9, 11], "shortcut": [9, 11], "global": [9, 11], "short": [9, 10, 11], "descript": 9, "greet": 9, "reaction": [9, 11], "emoji": [9, 11], "reacji": 9, "xapp": 9, "xoxp": 9, "app_token": 9, "slack_app_token": 9, "a111": 9, "xyz": 9, "socketmoderespons": 9, "socketmoderequest": 9, "req": 9, "events_api": 9, "acknowledg": [9, 12], "anywai": 9, "envelope_id": 9, "send_socket_mode_respons": 9, "subtyp": 9, "reactions_add": [9, 11], "ey": 9, "welcom": 9, "bye": 9, "mrkdwn": [9, 11, 12], "close": [9, 11], "socket_mode_request_listen": 9, "stop": 9, "thread": [9, 11], "wait": [9, 11], "cover": [9, 11], "3rd": 9, "parti": [9, 11], "websocket_cli": 9, "pockag": 9, "apart": [9, 10], "asyncwebcli": [9, 10], "sleep": [9, 11], "float": 9, "inf": 9, "websit": 10, "live": 10, "befor": [10, 11], "howev": [10, 11], "mainten": 10, "successor": 10, "introduc": 10, "renam": 10, "warn": 10, "mean": 10, "longer": [10, 11], "run_async": 10, "legacywebcli": 10, "sorri": 10, "inconveni": 10, "txt": 10, "sinc": [10, 11], "technic": 10, "biggest": 10, "reason": 10, "box": [10, 11], "secondari": 10, "consist": 10, "long": [10, 11], "confus": 10, "between": [10, 11], "replac": 10, "your_app": 10, "xarg": 10, "sed": 10, "similar": 10, "manual": 10, "without": [10, 11], "userwarn": 10, "info": [10, 11], "won": [10, 11], "term": 10, "asyncwebhookcli": 10, "explicitli": 10, "unlik": 10, "synchron": 10, "highli": 10, "straight": 10, "forward": 10, "natur": 10, "complex": 11, "than": 11, "integr": 11, "practic": 11, "fulli": 11, "site": 11, "One": 11, "primari": 11, "dm": 11, "anoth": 11, "person": 11, "otherwis": 11, "not_in_channel": 11, "channel_not_found": 11, "public": 11, "join": 11, "postmessag": 11, "c0xxxxxx": 11, "tada": 11, "ok": [11, 12], "fals": 11, "assert": [11, 12], "str": [11, 12], "invalid_auth": 11, "ephemer": 11, "visibl": 11, "assign": 11, "nearli": 11, "regular": 11, "chat_postephemer": 11, "silent": 11, "u0xxxxxxx": 11, "postephemer": 11, "kit": [11, 12], "though": 11, "interfac": 11, "compos": 11, "custom": 11, "layout": 11, "arrai": 11, "danni": 11, "torrenc": 11, "properti": 11, "overlook": 11, "hotel": 11, "n": [11, 12], "star": 11, "door": 11, "had": 11, "ax": 11, "hole": 11, "guest": 11, "room": 11, "237": 11, "far": 11, "rowdi": 11, "whole": 11, "place": 11, "felt": 11, "1920": 11, "accessori": 11, "imag": 11, "image_url": 11, "pexel": 11, "photo": 11, "750319": 11, "jpeg": 11, "alt_text": 11, "haunt": 11, "field": 11, "averag": 11, "n1": 11, "prototyp": 11, "greater": 11, "context": 11, "repli": [11, 12], "origin": 11, "linear": 11, "timelin": 11, "becom": 11, "parent": 11, "appear": 11, "releg": 11, "kind": 11, "fork": 11, "descend": 11, "1476746830": 11, "000003": 11, "reply_broadcast": 11, "german": 11, "therefor": 11, "notif": 11, "attach": 11, "broadcast": 11, "actual": 11, "articl": 11, "reflect": 11, "chat_upd": 11, "special": 11, "consider": 11, "sometim": 11, "chat_delet": 11, "1476745373": 11, "quickli": 11, "respond": 11, "purpos": 11, "vote": 11, "fun": 11, "comment": 11, "file_com": 11, "combin": 11, "c0xxxxxxx": 11, "thumbsup": 11, "1234567890": 11, "123456": 11, "reactions_remov": 11, "upload": 11, "onto": 11, "files_upload": 11, "c3ukjtqac": 11, "pdf": 11, "remot": 11, "extern": 11, "storag": 11, "files_remote_add": 11, "external_id": 11, "hand": 11, "deck": 11, "12345": 11, "external_url": 11, "preview_imag": 11, "preview": 11, "displai": 11, "unifi": 11, "privat": 11, "newest": 11, "conversations_open": 11, "multi": 11, "number": 11, "suppli": 11, "conversations_cr": 11, "8": 11, "resum": 11, "subsequ": 11, "w123456789": 11, "u987654321": 11, "letter": 11, "hyphen": 11, "underscor": 11, "fewer": 11, "80": 11, "charact": 11, "is_priv": 11, "channel_nam": 11, "my": 11, "round": 11, "conversations_arch": 11, "conversations_list": 11, "interest": 11, "public_channel": 11, "private_channel": 11, "mpim": 11, "archiv": 11, "exclud": 11, "exclude_archiv": 11, "metadata": 11, "conversations_info": 11, "include_local": 11, "boolean": 11, "local": 11, "include_num_memb": 11, "c031415926": 11, "conversations_memb": 11, "c16180339": 11, "social": 11, "hub": 11, "hop": 11, "conversations_join": 11, "c0xxxxxxy": 11, "already_in_channel": 11, "cannot": 11, "invit": 11, "leav": 11, "conversations_leav": 11, "c27182818": 11, "collect": 11, "dynam": 11, "focus": 11, "surfac": 11, "jsonifi": 11, "is_valid_request": 11, "flask_env": 11, "tell": 11, "current": 11, "response_act": 11, "modifi": 11, "block_act": 11, "private_metadata": 11, "views_upd": 11, "view_id": 11, "hash": 11, "cancel": 11, "per": 11, "second": 11, "burst": 11, "period": 11, "exce": 11, "grace": 11, "fallback": [11, 12], "hit": 11, "until": 11, "veri": 11, "might": 11, "deal": 11, "wrapper": 11, "send_slack_messag": 11, "result": 11, "status_cod": [11, 12], "delai": 11, "int": 11, "rais": 11, "bit": 11, "releas": 11, "hurri": 11, "api_cal": 11, "api_method": 11, "world": 11, "asynchron": [11, 12], "beforehand": [11, 12], "slack_api_token": 11, "post_messag": 11, "keyword": 11, "got": 11, "simplest": [11, 12], "webhookcli": 12, "associ": 12, "hook": 12, "t00000000": 12, "b00000000": 12, "xxxxxxxxxxxxxxxxxxxxxxxx": 12, "possibl": 12, "richer": 12, "fakelink": 12, "toemployeeprofil": 12, "fred": 12, "enriquez": 12, "devic": 12, "send_message_via_webhook": 12, "nov": 7, "30th": 7, "2021": 7, "_": []}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"about": 0, "python": [0, 2, 3], "slack": [0, 3, 6], "sdk": [0, 3], "audit": 1, "log": 1, "api": [1, 8, 11], "client": [1, 7, 8, 9, 11, 12], "auditlogscli": 1, "asyncauditlogscli": 1, "retryhandl": [1, 8, 11, 12], "faq": 2, "document": 2, "instal": [2, 3, 4, 6], "issu": 2, "bug": 2, "report": 2, "featur": 2, "request": 2, "contribut": 2, "get": 3, "help": 3, "access": 4, "token": [4, 6], "workspac": 4, "oauth": 6, "modul": 6, "app": 6, "flow": 6, "lookup": 6, "sign": 6, "rtm": 7, "real": 7, "time": 7, "messag": [7, 11], "scim": 8, "scimclient": 8, "asyncscimcli": 8, "socket": 9, "mode": 9, "socketmodecli": 9, "support": 9, "librari": 9, "asyncio": 9, "base": 9, "migrat": 10, "guid": 10, "from": 10, "slackclient": 10, "2": 10, "x": 10, "1": 10, "web": 11, "file": 11, "convers": 11, "modal": 11, "rate": 11, "limit": 11, "call": 11, "ani": 11, "method": 11, "asyncwebcli": 11, "webhook": 12, "incom": 12, "response_url": 12, "asyncwebhookcli": 12}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"About": [[0, "about"]], "Python Slack SDK": [[0, "product-name"], [3, "product-name"]], "Audit Logs API Client": [[1, "audit-logs-api-client"]], "AuditLogsClient": [[1, "auditlogsclient"]], "AsyncAuditLogsClient": [[1, "asyncauditlogsclient"]], "RetryHandler": [[1, "retryhandler"], [8, "retryhandler"], [11, "retryhandler"], [12, "retryhandler"]], "FAQ": [[2, "faq"]], "Python Documents": [[2, "python-documents"]], "Installation Issues": [[2, "installation-issues"]], "Bug Report": [[2, "bug-report"]], "Feature Requests": [[2, "feature-requests"]], "Contributions": [[2, "contributions"]], "Documentation": [[2, "documentation"]], "Installation": [[3, "installation"], [4, "installation"]], "Getting Help": [[3, "getting-help"]], "Access Tokens": [[4, "access-tokens"]], "Workspace Installations": [[4, "workspace-installations"]], "OAuth Modules": [[6, "oauth-modules"]], "App Installation Flow": [[6, "app-installation-flow"]], "Token Lookup": [[6, "token-lookup"]], "Sign in with Slack": [[6, "sign-in-with-slack"]], "RTM Client": [[7, "rtm-client"]], "Real Time Messaging (RTM)": [[7, "real-time-messaging-rtm"]], "SCIM API Client": [[8, "scim-api-client"]], "SCIMClient": [[8, "scimclient"]], "AsyncSCIMClient": [[8, "asyncscimclient"]], "Socket Mode Client": [[9, "socket-mode-client"]], "SocketModeClient": [[9, "socketmodeclient"]], "Supported Libraries": [[9, "supported-libraries"]], "Asyncio Based Libraries": [[9, "asyncio-based-libraries"]], "Migration Guide": [[10, "migration-guide"]], "From slackclient 2.x": [[10, "from-slackclient-2-x"]], "From slackclient 1.x": [[10, "from-slackclient-1-x"]], "Web Client": [[11, "web-client"]], "Messaging": [[11, "messaging"]], "Files": [[11, "files"]], "Conversations": [[11, "conversations"]], "Modals": [[11, "modals"]], "Rate Limits": [[11, "rate-limits"]], "Calling any API methods": [[11, "calling-any-api-methods"]], "AsyncWebClient": [[11, "asyncwebclient"]], "Webhook Client": [[12, "webhook-client"]], "Incoming Webhooks": [[12, "id1"]], "response_url": [[12, "response-url"]], "AsyncWebhookClient": [[12, "asyncwebhookclient"]]}, "indexentries": {}})
\ No newline at end of file