7.3 KiB
Chatwoot Agent Bot for HOA Ledger IQ
Automated first-line support bot that triages customer conversations and escalates to Chris when needed.
🚀 Quick Start
Already configured? Jump to Production Deployment
What This Bot Does
- Greets customers automatically when they start a conversation
- Detects intent (billing, technical issues, feature questions, account help)
- Searches FAQ knowledge base for answers
- Escalates to Chris when it can't help, with optional Telegram notifications
- Grows smarter as you add more FAQ entries over time
🏗️ Production Deployment
Follow these steps to deploy the bot to your production server.
Prerequisites
- Node.js installed on server (v14+)
- SSH access to production server
- Chatwoot instance running
- PM2 for process management (installed during deployment)
Step-by-Step Deployment
1. SSH into Your Production Server
ssh your-username@your-server-ip
# Example: ssh root@192.168.1.100
# Or: ssh ubuntu@support.hoaledgeriq.com
2. Clone the Repository
# Navigate to where you want the bot (e.g., /opt or ~/apps)
cd /opt
# Clone the repo
git clone https://git.sensetostyle.com/JoeBot/SupportBot.git
cd SupportBot
3. Install Dependencies
# Install Node.js dependencies
npm install --production
4. Configure Chatwoot Bot (If Not Already Done)
In your Chatwoot instance:
- Go to Settings → Bots
- Click Add Bot
- Fill in:
- Name:
HOA Ledger IQ Bot - Avatar: (optional - upload logo)
- Webhook URL: Leave blank for now (we'll add it after deployment)
- Name:
- Click Create
- Copy the Bot Token shown
Connect bot to your inbox:
- Go to Settings → Inboxes
- Click your website widget inbox
- Find Bot Configuration or Agent Bots
- Select HOA Ledger IQ Bot from dropdown
- Click Save
Get your Chatwoot API token:
- Click your profile avatar (top right)
- Go to Profile Settings
- Scroll to API Token section
- Click Generate Token (or copy existing)
- Copy the API token
5. Create the .env Configuration File
# Create .env file
nano .env
Paste this content (update with YOUR values):
# Chatwoot Configuration
CHATWOOT_URL=https://chat.hoaledgeriq.com
CHATWOOT_API_TOKEN=your_api_token_here
CHATWOOT_ACCOUNT_ID=1
BOT_WEBHOOK_TOKEN=your_bot_token_here
# Telegram Notifications (optional - leave empty for now)
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
# Server port
PORT=3001
Save: Ctrl+O, then Enter, then exit with Ctrl+X
6. Install PM2 (Process Manager)
PM2 keeps your bot running 24/7 and restarts it if it crashes.
# Install PM2 globally
npm install -g pm2
# Start the bot with PM2
pm2 start index.js --name chatwoot-bot
# Make it start on server reboot
pm2 save
pm2 startup
The pm2 startup command will show you a sudo command - copy and paste that command to complete the setup.
7. Set Up Reverse Proxy (Nginx)
Your bot is running on port 3001, but needs to be publicly accessible.
Install nginx:
sudo apt update && sudo apt install nginx -y
Create nginx config:
sudo nano /etc/nginx/sites-available/chatwoot-bot
Paste this (replace your-domain.com with your actual domain):
server {
listen 80;
server_name your-domain.com;
location /webhook {
proxy_pass http://localhost:3001/webhook;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Enable the site:
sudo ln -s /etc/nginx/sites-available/chatwoot-bot /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
8. Update Chatwoot Webhook URL
Now that your bot is publicly accessible:
- Go to Settings → Bots in Chatwoot
- Click on HOA Ledger IQ Bot
- Update Webhook URL to:
https://your-domain.com/webhook - Click Save
9. Test It!
- Go to your website widget
- Start a new conversation
- Say "Hello" or "I need help with billing"
- The bot should respond!
🔧 How It Works
Conversation Flow
- Customer sends message → Chatwoot receives it
- Chatwoot sends webhook → Bot receives
message_createdevent - Bot analyzes intent → Detects: billing, technical, account, features, greeting
- Bot responds or escalates:
- Greeting: Friendly welcome, asks how to help
- Known topic: Searches FAQ-KB.md, provides answer
- Technical issue: Collects info, escalates to Chris
- Unknown: Asks clarifying questions or escalates
Escalation to Chris
When bot can't help:
- Changes conversation status from
pendingtoopen - Assigns to human agent queue
- Sends Telegram notification (if configured)
Knowledge Base
- Located at:
../FAQ-KB.md(in the main workspace) - Bot searches this doc for answers
- Organized by categories: Getting Started, Billing, Features, Technical, Account, Troubleshooting
- To add new entries: Edit
FAQ-KB.mdfollowing the template format
🎯 Intent Detection
Current intents (easily expandable):
| Intent | Triggers | Action |
|---|---|---|
greeting |
hello, hi, help | Welcome message |
billing |
price, cost, payment | Search KB or escalate |
technical_issue |
bug, error, broken | Collect info + escalate |
feature_request |
how to, feature, can I | Search KB |
account |
account, login, password | Search KB or escalate |
unknown |
anything else | Ask clarifying questions |
📝 Useful PM2 Commands
# Check bot status
pm2 status
# View logs
pm2 logs chatwoot-bot
# Restart the bot
pm2 restart chatwoot-bot
# Stop the bot
pm2 stop chatwoot-bot
# View memory/CPU usage
pm2 monit
🐛 Troubleshooting
Bot not responding?
- Check logs:
pm2 logs chatwoot-bot - Verify webhook URL is publicly accessible
- Check firewall allows port 80/443
- Test health endpoint:
curl https://your-domain.com/webhook
Can't connect to Chatwoot?
- Verify
CHATWOOT_URLin.envis correct - Check API token is valid
- Ensure server can reach your Chatwoot instance (no firewall blocking)
Escalations not working?
- Verify API token has correct permissions
- Check account ID is correct
- Review Chatwoot conversation status flow
Need to update code?
cd /opt/SupportBot
git pull
pm2 restart chatwoot-bot
📈 Next Steps / Enhancements
- Add Telegram notifications for escalation alerts
- Add conversation memory (context across messages)
- Integrate with actual FAQ database (not just markdown)
- Add confidence scoring for intent detection
- Implement handoff back to bot (status: pending)
- Add analytics (response times, escalation rate)
- Multi-language support
- Rich interactive messages (buttons, cards)
- Integration with HOA Ledger IQ API for account lookups
Maintained by: Forge (Chris's SaaS Operations Bot)
Version: 1.0.0
Last Updated: 2026-04-01
Repository: https://git.sensetostyle.com/JoeBot/SupportBot.git