:mod:`airflow.providers.slack.hooks.slack`
==========================================

.. py:module:: airflow.providers.slack.hooks.slack

.. autoapi-nested-parse::

   Hook for Slack



Module Contents
---------------

.. py:class:: SlackHook(token: Optional[str] = None, slack_conn_id: Optional[str] = None, **client_args)

   Bases: :class:`airflow.hooks.base.BaseHook`

   Creates a Slack connection, to be used for calls. Takes both Slack API token directly and
   connection that has Slack API token. If both supplied, Slack API token will be used.
   Exposes also the rest of slack.WebClient args
   Examples:

   .. code-block:: python

       # Create hook
       slack_hook = SlackHook(token="xxx")  # or slack_hook = SlackHook(slack_conn_id="slack")

       # Call generic API with parameters (errors are handled by hook)
       #  For more details check https://api.slack.com/methods/chat.postMessage
       slack_hook.call("chat.postMessage", json={"channel": "#random", "text": "Hello world!"})

       # Call method from Slack SDK (you have to handle errors yourself)
       #  For more details check https://slack.dev/python-slackclient/basic_usage.html#sending-a-message
       slack_hook.client.chat_postMessage(channel="#random", text="Hello world!")

   :param token: Slack API token
   :type token: str
   :param slack_conn_id: connection that has Slack API token in the password field
   :type slack_conn_id: str
   :param use_session: A boolean specifying if the client should take advantage of
       connection pooling. Default is True.
   :type use_session: bool
   :param base_url: A string representing the Slack API base URL. Default is
       ``https://www.slack.com/api/``
   :type base_url: str
   :param timeout: The maximum number of seconds the client will wait
       to connect and receive a response from Slack. Default is 30 seconds.
   :type timeout: int

   
   .. method:: __get_token(self, token: Any, slack_conn_id: Any)



   
   .. method:: call(self, api_method: str, *args, **kwargs)

      Calls Slack WebClient `WebClient.api_call` with given arguments.

      :param api_method: The target Slack API method. e.g. 'chat.postMessage'. Required.
      :type api_method: str
      :param http_verb: HTTP Verb. Optional (defaults to 'POST')
      :type http_verb: str
      :param files: Files to multipart upload. e.g. {imageORfile: file_objectORfile_path}
      :type files: dict
      :param data: The body to attach to the request. If a dictionary is provided,
          form-encoding will take place. Optional.
      :type data: dict or aiohttp.FormData
      :param params: The URL parameters to append to the URL. Optional.
      :type params: dict
      :param json: JSON for the body to attach to the request. Optional.
      :type json: dict




