How nabilekowahyudi/service-desk-bot works
This is a WhatsApp IT ServiceDesk bot: employees submit requests through a guided conversation, the bot validates them against ManageEngine, creates tickets, and routes authorization approvals and technician replies. The graph preserves the documented webhook/polling, dynamic configuration, security, and media capabilities. Source evidence is sampled, so undocumented runtime wiring is omitted rather than inferred.
Main entry points: message.handler.js Conversation state machine · ticket.service.js Ticket API and user lookup · notification.service.js Ticket update tracking · whatsapp.service.js WhatsApp client
Components 18
Runtime entry
- WhatsApp client
src/services/whatsapp.service.js - HTTP server and webhooks
index.js
Employee workflow
- Conversation state machine
src/handlers/message.handler.js - Input validation
src/utils/validators.js - WhatsApp media download
src/utils/wa-media-download.js
ManageEngine integration
- Ticket API and user lookup
src/services/ticket.service.js - Category mapping cache
src/services/category.service.js - Dynamic service configuration
src/services/me-config.service.js - Request categories and endpoints
src/config/endpoints.js
Approvals and updates
- Ticket update tracking
src/services/notification.service.js - Authorization approvals
src/services/approval.service.js
State and safeguards
- Conversation sessions
src/services/session.service.js - Encrypted JSON store
src/utils/encrypted-store.js - Ticket protection
src/utils/ticket-protection.js - Redacting logger
src/utils/logger.js
Other components
- Employee
- Service admin
- ManageEngine SDP
Connections 35
- Employee → WhatsApp client: sends messages
README.md - WhatsApp client → Conversation state machine: routes messages
src/services/whatsapp.service.js - Conversation state machine → Input validation: validates input
src/handlers/message.handler.js - Conversation state machine → Conversation sessions: loads and saves
src/handlers/message.handler.js - Conversation state machine → Ticket API and user lookup: validates employee and submits
src/handlers/message.handler.js - Conversation state machine → Category mapping cache: uses category map
src/handlers/message.handler.js - Conversation state machine → Request categories and endpoints: selects request form
src/handlers/message.handler.js - Conversation state machine → Ticket update tracking: tracks submitted tickets
src/handlers/message.handler.js - Conversation state machine → Authorization approvals: starts authorization flow
src/handlers/message.handler.js - Conversation state machine → Ticket protection: applies ticket safeguards
src/handlers/message.handler.js - Conversation state machine → WhatsApp media download: downloads attachments
src/handlers/message.handler.js - Ticket API and user lookup → ManageEngine SDP: calls ServiceDesk API
src/services/ticket.service.js - Category mapping cache → ManageEngine SDP: fetches categories
src/services/category.service.js - Category mapping cache → Request categories and endpoints: uses API configuration
src/services/category.service.js - Dynamic service configuration → ManageEngine SDP: resolves configuration
- Ticket API and user lookup → Category mapping cache: uses category mapping
src/services/ticket.service.js - Ticket API and user lookup → Dynamic service configuration: uses dynamic IDs
src/services/ticket.service.js - Ticket API and user lookup → Request categories and endpoints: uses endpoint settings
src/services/ticket.service.js - ManageEngine SDP → HTTP server and webhooks: pushes ticket updates
README.md - HTTP server and webhooks → Ticket update tracking: triggers immediate check
README.md - Ticket update tracking → ManageEngine SDP: polls tracked tickets
README.md - Ticket update tracking → Ticket API and user lookup: fetches ticket and user data
src/services/notification.service.js - Ticket update tracking → Authorization approvals: checks pending approvals
src/services/notification.service.js - Ticket update tracking → WhatsApp client: sends employee updates
README.md - Authorization approvals → WhatsApp client: sends approval prompts
src/services/approval.service.js - Service admin → HTTP server and webhooks: calls admin endpoints
README.md - HTTP server and webhooks → Category mapping cache: refreshes category cache
index.js - Conversation sessions → Redacting logger: logs session errors
src/services/session.service.js - Authorization approvals → Encrypted JSON store: persists pending approvals
src/utils/encrypted-store.js - Ticket update tracking → Encrypted JSON store: persists ticket tracking
src/utils/encrypted-store.js - Conversation state machine → Encrypted JSON store: persists rate limits
src/utils/encrypted-store.js - Encrypted JSON store → Redacting logger: logs storage errors
src/utils/encrypted-store.js - Conversation state machine → Redacting logger: records workflow events
src/handlers/message.handler.js - WhatsApp client → Redacting logger: records client events
src/services/whatsapp.service.js - Ticket API and user lookup → Redacting logger: records API events
src/services/ticket.service.js