Back to Calendar

2026-02-20

Work Log
2026-02-20 — Session Notes
Highlights
  • ### DNS & HTTPS Setup ✅
  • | `https://kb.rollerup.ca/api/search?q=query` | ✅ Working |
  • | `https://kb.rollerup.ca/webhook/salesiq` (HEAD) | ✅ Returns 200 |
  • Completed 07:00 UTC

# 2026-02-20 — Session Notes

## SalesIQ Bot Webhook Deployment

### DNS & HTTPS Setup ✅
- **DNS**: `kb.rollerup.ca` → `68.183.198.0` (A record on Kinsta, TTL 5min)
- **Caddy**: Added block for `kb.rollerup.ca` → `localhost:5000`
- **HTTPS**: Working, auto-cert from Let's Encrypt

### Caddy Config (Updated)
```
kb.rollerup.ca {
    reverse_proxy localhost:5000
}
```
Also has: `bot.rollerup.ca` (5002), `fsm.rollerup.ca` (5003)

### API Endpoints Live
| Endpoint | Status |
|----------|--------|
| `https://kb.rollerup.ca/api/search?q=query` | ✅ Working |
| `https://kb.rollerup.ca/webhook/salesiq` (HEAD) | ✅ Returns 200 |
| `https://kb.rollerup.ca/webhook/salesiq` (POST) | ⚠️ Fallback response |

### SalesIQ Webhook Created
Added `/opt/kb_website/salesiq_webhook.py`:
- HEAD → returns 200 (SalesIQ validation)
- POST → extracts message, searches KB, returns SalesIQ-format JSON

**Webhook URL for SalesIQ:**
```
https://kb.rollerup.ca/webhook/salesiq
```

### Issue: Empty Content in Search Results
Search returns results but `content` field is empty (`" | "`):
```json
{"content": " | ", "source": "Fire shutters", "type": "repair"}
```
Repair forms data may have empty problem/solution fields, or search is pulling wrong columns. Needs investigation.

---

## Files Reference

Eugene asked for scopes/keys files:
- **Full scope reference:** `/workspace/project/docs/zoho-api-scopes-reference.md`
- **Phase 1 scopes:** `/workspace/project/docs/phase1-scopes.md`

### SalesIQ Bot Scopes Needed
```
SalesIQ.webhooks.CREATE,SalesIQ.webhooks.READ,SalesIQ.webhooks.UPDATE,SalesIQ.integrations.CREATE,SalesIQ.integrations.READ
```

---

## Key Identifiers
| Item | Value |
|------|-------|
| Client ID | `1000.IDSCLW5XQWHZWXRZ37IJGR9TAZKZ9M` |
| Data Center | `.com` |
| Books Org ID | `693694309` |
| SalesIQ Portal | `rollerup` |
| Droplet IP | `68.183.198.0` |

---

## Daily Backup
- Completed 07:00 UTC
- Size: 644 MB
- All systems nominal

---

## Next Steps
1. Debug empty content in search results (repair_forms table)
2. Eugene to configure webhook in SalesIQ console
3. Test end-to-end: visitor message → webhook → KB search → response
4. Monitor and refine bot responses

---

*Session ongoing*