Sends a slack notification when you miss a call on your IP phone. Pretty cool, huh?
  • TypeScript 61.1%
  • Shell 38.9%
Find a file
2026-05-29 20:21:43 +02:00
src init 2026-05-29 19:57:24 +02:00
.gitignore init 2026-05-29 19:57:24 +02:00
install.sh fix install 2026-05-29 20:21:43 +02:00
package-lock.json add node type defs 2026-05-29 20:08:25 +02:00
package.json add node type defs 2026-05-29 20:08:25 +02:00
phone-webhook.service fix install 2026-05-29 20:21:43 +02:00
README.md system setup 2026-05-29 20:05:53 +02:00
tsconfig.json fix 2026-05-29 20:10:28 +02:00

Phone webhook notifications

Sends a slack notification when you miss a call on your IP phone. Pretty cool, huh?

In the phone's web UI go to Features → Action URL and set Call Missed to:

http://<server-ip>:3000/webhook?event=CallMissed&caller=%CALLERID%&callerName=%CALLEENAME%&callee=%CALLEE%

Development

cp .env.example .env   # fill in SLACK_WEBHOOK_URL
npm run dev            # ts-node, no build needed

Production (systemd)

Prerequisites

  • Debian/Ubuntu Linux server
  • Volta — install it on the server first if not already present:
    curl https://get.volta.sh | bash
    

Install

Copy the project to the server and run the install script as root:

git clone <repo-url> /tmp/phone-webhook
cd /tmp/phone-webhook
sudo bash install.sh

The script will:

  1. Install the Node version pinned in package.json via Volta
  2. Create a dedicated phone-webhook system user
  3. Deploy the app to /opt/phone-webhook
  4. Create /etc/phone-webhook/.env (edit this before starting — see below)
  5. Enable and start the phone-webhook systemd service

Configure secrets

sudo nano /etc/phone-webhook/.env
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T.../B.../...
PORT=3000
sudo systemctl restart phone-webhook

Useful commands

sudo systemctl status phone-webhook
sudo journalctl -u phone-webhook -f   # live logs
sudo systemctl restart phone-webhook

Updating

cd /tmp/phone-webhook
git pull
sudo bash install.sh   # re-runs safely; skips existing env file