:mod:`airflow.contrib.hooks.discord_webhook_hook`
=================================================

.. py:module:: airflow.contrib.hooks.discord_webhook_hook


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

.. py:class:: DiscordWebhookHook(http_conn_id=None, webhook_endpoint=None, message='', username=None, avatar_url=None, tts=False, proxy=None, *args, **kwargs)

   Bases: :class:`airflow.hooks.http_hook.HttpHook`

   This hook allows you to post messages to Discord using incoming webhooks.
   Takes a Discord connection ID with a default relative webhook endpoint. The
   default endpoint can be overridden using the webhook_endpoint parameter
   (https://discordapp.com/developers/docs/resources/webhook).

   Each Discord webhook can be pre-configured to use a specific username and
   avatar_url. You can override these defaults in this hook.

   :param http_conn_id: Http connection ID with host as "https://discord.com/api/" and
                        default webhook endpoint in the extra field in the form of
                        {"webhook_endpoint": "webhooks/{webhook.id}/{webhook.token}"}
   :type http_conn_id: str
   :param webhook_endpoint: Discord webhook endpoint in the form of
                            "webhooks/{webhook.id}/{webhook.token}"
   :type webhook_endpoint: str
   :param message: The message you want to send to your Discord channel
                   (max 2000 characters)
   :type message: str
   :param username: Override the default username of the webhook
   :type username: str
   :param avatar_url: Override the default avatar of the webhook
   :type avatar_url: str
   :param tts: Is a text-to-speech message
   :type tts: bool
   :param proxy: Proxy to use to make the Discord webhook call
   :type proxy: str

   
   .. method:: _get_webhook_endpoint(self, http_conn_id, webhook_endpoint)

      Given a Discord http_conn_id, return the default webhook endpoint or override if a
      webhook_endpoint is manually supplied.

      :param http_conn_id: The provided connection ID
      :param webhook_endpoint: The manually provided webhook endpoint
      :return: Webhook endpoint (str) to use



   
   .. method:: _build_discord_payload(self)

      Construct the Discord JSON payload. All relevant parameters are combined here
      to a valid Discord JSON payload.

      :return: Discord payload (str) to send



   
   .. method:: execute(self)

      Execute the Discord webhook call




