PrettyGoodPing / pretty-good-complaints

Open feature requests, bug reports or start a conversation about PrettyGoodPing.com
1 stars 0 forks source link

extra notification channels #5

Open garu opened 1 week ago

garu commented 1 week ago

Describe the feature Ability to notify issues through means other than email (e.g. sms, telegram, whatsapp, google chat, or an actual custom POST)

Which problem does it solve? While expiration issues are monitored with enough of a head start to be calmly resolved, ping/head requests usually mean something is wrong and deserves someone's attention right now, and email may not the best channel for emergencies.

Expected behavior I expect accounts to be able to register different notification channels per alarm, so I can (for example) receive domain expiration alerts via email, and ping/head errors via SMS, slack, discord, google chat or whatever (maybe even combination of those).

Additional context I understand some of these instant notifications aren't free or require a lot of setup, but not all. For example, implementing a Google Chat notification is a simple POST in their json message format with the proper api/key.

A powerful developer-friendly feature would be to allow people to craft their own endpoint and message on failure and fix. So for example I could say that, whenever ping fails, send a POST to https://myotherserver.com/api/v1/alerts with the json body { "alarm": { "type":"ping", "message": "myserver is down! " } } and another one for when ping resolves successfully again. Although, I understand this requires some sort of validation that the user owns the target endpoint, otherwise it would be susceptible to reflection attacks where prettygoodping would make unsolicited POST requests to an unsuspecting server.

Anyway, thank you for taking the time to read through this and for such a great product!

oalders commented 1 week ago

Thanks for this, @garu! I do have a partially finished Slack integration in a branch. I could probably tweak that to allow the payload to be sent to a custom URL. I think that would solve at least some of this.