# Dienst Bot > Dit project is gemaakt door middel van vibecoding met [OpenCode 1.14.40](https://opencode.ai) en Z.AI/GLM-5.1. WhatsApp bot die dienstschema's (PNG) verstuurt op basis van een dienstnummer in een WhatsApp groep. ## Hoe het werkt 1. Iemand tagt **@EdGpt** in de toegestane groep met een 4-cijferig dienstnummer (bijv. `@EdGpt 4002`) 2. De bot zoekt het dienstschema op in `dienst-tijden.json` 3. De bijbehorende PNG-bestanden worden privé naar de afzender gestuurd ## Vereisten - [Node.js](https://nodejs.org/) 18+ - [wwebjs-api](https://github.com/pedroslopez/whatsapp-web.js) Docker container (poort 3000) - WhatsApp sessie "EdGpt" actief in wwebjs-api - PM2 (optioneel, voor procesbeheer) ## Installatie ```bash git clone cd dienst_echo_whatsappgroep npm install ``` ## Configuratie Kopieer `.env.example` naar `.env` en vul de waarden in: ```env # WhatsApp API WHATSAPP_API_ENDPOINT=http://localhost:3000 WHATSAPP_SESSION=EdGpt # Webhook WEBHOOK_PORT=3002 ALLOWED_GROUP=120363407356808413@g.us BOT_NAME=EdGpt # Bestanden DIENSTEN_JSON=./diensten/dienst-tijden.json DIENSTEN_PNG=./diensten/png # Admin ADMIN_NUMBER=31620248011@c.us ``` ### wwebjs-api webhook config In de `.env` van wwebjs-api: ```env BASE_WEBHOOK_URL=http://host.docker.internal:3002/webhook ENABLE_LOCAL_CALLBACK_EXAMPLE=FALSE ENABLE_WEBHOOK=TRUE ``` Belangrijk: gebruik **`docker compose up -d`** (niet `docker restart`) om `.env` wijzigingen door te voeren. ## Data De map `diensten/` bevat: - `dienst-tijden.json` — array met dienstmetadata: ```json [ { "dienstnummer": "4002", "startTime": "09:30", "endTime": "10:30", "paginas": [ { "bestandsnaam": "4002-001.png" }, { "bestandsnaam": "4002-002.png" } ] } ] ``` - `png/` — PNG bestanden met dienstschema's (bijv. `4002-001.png`) Beide zijn uitgesloten van git via `.gitignore`. ## Gebruik ### Starten ```bash npm start ``` Of met PM2: ```bash npx pm2 start src/index.js --name dienst-bot npx pm2 save ``` ### Stoppen ```bash npx pm2 stop dienst-bot ``` ### Logs bekijken ```bash npx pm2 logs dienst-bot ``` ## Projectstructuur ``` src/ index.js # Express webhook server messageHandler.js # Berichtverwerking en filtering dienstService.js # JSON lookup en PNG bestandspaden whatsappApi.js # WhatsApp API client (bericht + afbeelding) ``` ## Foutafhandeling - **Ongeldig dienstnummer**: de bot stuurt een melding terug naar de afzender - **Fout bij verzenden PNG**: de admin krijgt een WhatsApp melding - **Webhook fout**: wordt gelogd in PM2 logs ## Licentie Privé project — niet voor distributie.