
Show HN: Push More – Receive Webhook Requests in Telegram - keesj
https://pushmore.io
======
keesj
We switched from Slack to Telegram a few months ago for our team communication
at BetaList. Some of our website notifications (new signups, certain errors,
etc) still were sent to Slack though through a variety of integrations.

I made a simple service that accepts webhook requests and posts them to
Telegram. You can interface with the bot directly (@pushmorebot) or add it to
a group to have notifications show up there.

You can use it in multiple groups and have different notifications for each.

One caveat right now is that that the webhook URL is visible to anyone in the
group so be careful when using it in a public group. (If there's enough
interest I'll add some privacy controls.)

~~~
igammarays
Wow, care to elaborate more about the switch from Slack to Telegram? I've been
thinking of doing the same with my team, and this webhook feature was exactly
what I was going to build. Thanks for releasing this.

~~~
keesj
We're only a 2-(wo)man team and already on Telegram so it was a pretty easy
switch. We also didn't have too many integrations and the ones we did are now
migrated with Push More.

------
jdemler
This kind of feature can easily be implemented by oneself as we described
here: [https://www.curry-
software.com/en/blog/telegram_unit_fail/](https://www.curry-
software.com/en/blog/telegram_unit_fail/)

No need for an external service and dependency!

Also this approach allows very simple integration into code. I.e. in rust:

    
    
        pub fn telegram(msg: &str) {
            use std::process::Command;
    
            if let Err(e) = Command::new("telegram").arg(msg).status() {
                println!("Error occured while calling the telegram command! {:?}", e);
            }
        }

~~~
synthmeat
Absolutely. Their API as well as community's convenience wrappers are pretty
excellent. Wrote an entire bot in a day (@LiveCoinWatchBot) and that's a
testament to the development ease, not really my skills. Definitely the case
for considering not depending on anything there, even a library. Let alone 3rd
party service. BUT...

There's a case for users without running available endpoints for the hooks.
I'd bet those people who also have need for Telegram integration with some 3rd
party webhooks are in majority over us.

------
archi42
Haha, I started building something similar using python (not that I like that
language, but it seemed like the right tool for what I wanted). Additional
features I (partially) added: User verification (click link that's reachable
only via company IP), notification categories (users can configure which they
want to receive) with attachable priority (sender site), user-configurable
nagging (based on category and priority, e.g. for build errors the bot can ask
the user for an ack) and user-configurable work hours.

But my boss decided we wouldn't need that, so I stopped working on it. Maybe I
can release the code as open source.

Edit: User-configuration was via /command messages for the 1337 kids and
clickable buttons for most options (better convenience/less steep learning
curve).

------
jajoosam
I built a quick app with PushMore, to send limited 80 character alerts. It
requires a passphrase to send, so that you're not spammed all the time.

[https://pingr.xyz](https://pingr.xyz)

~~~
Operyl
Mmmm, I quickly broke it by giving it invalid data:

TypeError: name.split(...)[0] is not a function at /app/server.js:74:37 at
Layer.handle [as handle_request] (/rbd/pnpm-
volume/649f928c-a1e2-4468-8355-00786f42479e/node_modules/.registry.npmjs.org/express/4.16.3/node_modules/express/lib/router/layer.js:95:5)
at next (/rbd/pnpm-
volume/649f928c-a1e2-4468-8355-00786f42479e/node_modules/.registry.npmjs.org/express/4.16.3/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/rbd/pnpm-
volume/649f928c-a1e2-4468-8355-00786f42479e/node_modules/.registry.npmjs.org/express/4.16.3/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/rbd/pnpm-
volume/649f928c-a1e2-4468-8355-00786f42479e/node_modules/.registry.npmjs.org/express/4.16.3/node_modules/express/lib/router/layer.js:95:5)
at /rbd/pnpm-
volume/649f928c-a1e2-4468-8355-00786f42479e/node_modules/.registry.npmjs.org/express/4.16.3/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/rbd/pnpm-
volume/649f928c-a1e2-4468-8355-00786f42479e/node_modules/.registry.npmjs.org/express/4.16.3/node_modules/express/lib/router/index.js:335:12)
at next (/rbd/pnpm-
volume/649f928c-a1e2-4468-8355-00786f42479e/node_modules/.registry.npmjs.org/express/4.16.3/node_modules/express/lib/router/index.js:275:10)
at serveStatic (/rbd/pnpm-
volume/649f928c-a1e2-4468-8355-00786f42479e/node_modules/.registry.npmjs.org/serve-
static/1.13.2/node_modules/serve-static/index.js:75:16) at Layer.handle [as
handle_request] (/rbd/pnpm-
volume/649f928c-a1e2-4468-8355-00786f42479e/node_modules/.registry.npmjs.org/express/4.16.3/node_modules/express/lib/router/layer.js:95:5)

You really shouldn't echo out stacktraces to the internet ;).

~~~
jajoosam
Hahaha yes.

Quick build => Quick break

------
adv0r
I love it but it has a few catches.

could you please escape the whitespace? "hello world" returns me "hello+world"
. Also I am trying to configure a nice template on zapier, so I'd need it to
reckon "newline\n" last but not least, parse URLs please!

EDIT: looks way better if I send data in JSON instead that raw/form

------
adv0r
cool I can get the bot to post a PM to me but the website says it also works
in group chats..how? no documentation

~~~
keesj
Invite the bot into the group :) (and send /start to get the webhook URL)

