Yes, this sounds like a good feature, but I would go about it in a slightly different way that is less "special cased" to just chat services or webhooks and doesn't need new config (or much less)

Specifically, rather than having to add new parameters to dag/task for webhooks specifically, I would suggest we have add utility functions to hooks/operators etc that have the behaviour you specify.

Slack/credential configuration should be done using connections, not in the config file

So something like this becomes the dag/task API:

from airflow.providers.slack.hooks import task_callback_handler as send_slack_message

task = MyOperator(
   task_id = "something",
   on_failure_callback= send_slack_message(
slack_conn_id='slack-default', # Default, not actually required here, for example only
       channels=['#data-ops'],
       mentions=['@ash'],
   ),
)

Names can be changed/discussed, this is just a rough idea.

Using this approach means that a) We don't need to add a whole bunch of new config, and b) it can be easily extended/created by providers without needing changes to core -- after all the feature to run code after failure/success already exists, we just want to "package up" the common task of sending a slack message.

I think for consistency of interface too we should deprecate the email_on_failure task attribute too in favour of a similar function.

And finally, perhaps `on_*_callback` gets extended to allow a list of functions instead of just one.

Thoughts?

-ash


On Thu, 15 Apr, 2021 at 12:42, Sayed Mohammad Hossein Torabi <blck...@gmail.com> wrote:
I would like to present a new feature in airflow. It's a good idea to support webhooks triggers for notifying users about their tasks. we can do it by providing it in a way that I could supports software like Slack, MatterMost, Discord, MS Teams. this software currently uses by a wide range of international users. This feature provides a better UX for our users and also reduces efforts for every company/user who uses airflow to write their own callbacks.

Here is my initials idea:

Changes in the default_args:
add new entry: webhook_on_failure: booladd new entry: webhook_on_retry: booladd new entry: webhook_on_success: booladd new entry: channels: List[str] (List of channels)add new entry: mentions: List[str] (List of users to mention)
Changes in the airflow.cfg:
add new seciont like [webhook] for Slack, etc. configuration.
Message templates:
I would like to do it like the Prometheus alerting template.
About message templates, I mean something like this.

Reply via email to