Whozz Calling Bridge - Installation Guide
Whozz Calling Bridge
Installation & Configuration Guide — Version 1.0
Contents
How It Works
Requirements
Architecture Diagram
Installation Steps
Configuration
Running the Bridge
Auto-Start on Boot
Verification
Troubleshooting
Multi-Workstation Deployment
1. How It Works
The Whozz Calling Bridge is a lightweight Python program that runs on a computer connected to the same network as your Whozz Calling device. It:
Listens to the Whozz Calling device over the network (TCP/IP)
Captures call data — phone number, caller name, which line, and call duration
Sends the data to your Whozz Calling web application so it appears in the dashboard, popup notifications, and call statistics
Key Point: The bridge must run on a computer that is always on and on the same local network as the Whozz Calling device. When the bridge is off, calls won't be logged. The web application itself runs in the cloud and is always available.
2. Requirements
RequirementDetails
Computer Any always-on PC, Mac, Linux machine, or Raspberry Pi on the same LAN as the Whozz Calling device
Python Python 3.7 or newer (python.org/downloads)
Network Same local network as the Whozz Calling device (the computer must be able to reach the device's IP)
API Key Your BRIDGE_API_KEY (provided by your system administrator)
Web App URL The URL of your Whozz Calling web app (e.g., https://callerid.link)
3. Architecture Diagram
Phone Lines ──┐ │ ┌──────┴──────┐ │ Whozz │ │ Calling │ │ Device │ │ (Ethernet) │ └──────┬───────┘ │ TCP port 3520 │ (local network) │ ┌──────┴──────┐ │ Bridge │ │ Computer │ ← Always-on machine │ (this │ running whozz_bridge.py │ script) │ └──────┬───────┘ │ HTTPS (internet) │ ┌──────┴──────┐ │ Web App │ ← Cloud-hosted │ (Replit) │ (always available) │ Dashboard, │ │ Popups, │ │ Stats │ └─────────────┘
4. Installation Steps
Step 1: Install Python
If you don't already have Python installed, download it from python.org/downloads.
Windows users: During installation, check the box that says "Add Python to PATH".
Verify the installation by opening a command prompt (or terminal) and typing:
python --version You should see something like Python 3.11.5 (any version 3.7+ is fine).
Step 2: Install the Requests Library
The bridge needs one additional Python library to communicate with the web app. Install it by running:
pip install requests On some systems you may need to use pip3 instead of pip.
Step 3: Download the Bridge Script
Download whozz_bridge.py and save it to a folder on the bridge computer. A good location is:
Windows: C:\CallerID\whozz_bridge.py
Mac/Linux: /opt/callerid/whozz_bridge.py
Step 4: Find Your Device IP Address
You need the IP address of your Whozz Calling device. You can find it using:
ELConfig utility (included with your Whozz Calling unit)
Your router's device list (look for a device named "Whozz" or similar)
The default IP is usually 192.168.1.250 and the default port is 3520.
Step 5: Configure the Bridge
You have two options for configuration:
Option A: Edit the Script (Simplest)
Open whozz_bridge.py in a text editor and find the CONFIG section near the top. Fill in your values:
CONFIG = { 'device_ip': '192.168.1.250', # Your device IP 'device_port': 3520, # Usually 3520 'api_url': 'https://callerid.link', 'api_key': 'your-api-key-here', }
Option B: Use Environment Variables
Set these environment variables on your system instead of editing the file:
VariableExample Value
WHOZZ_DEVICE_IP192.168.1.250Required
WHOZZ_DEVICE_PORT3520Optional
BRIDGE_API_URLhttps://callerid.linkRequired
BRIDGE_API_KEYyour-api-key-hereRequired
5. Configuration Reference
SettingDefaultDescription
device_ip192.168.1.250IP address of the Whozz Calling device on your LAN
device_port3520TCP port the device listens on
api_url(none)Full URL of your web app (no trailing slash)
api_key(none)API key that authenticates the bridge with the web app
reconnect_delay5Seconds to wait before reconnecting after a disconnect
log_filewhozz_bridge.logFile where activity logs are written
6. Running the Bridge
Open a command prompt (or terminal) and navigate to the folder containing the script:
# Windows cd C:\CallerID python whozz_bridge.py
# Mac/Linux cd /opt/callerid python3 whozz_bridge.py
You should see output like:
============================================================ CallerID.com Whozz Calling Bridge ============================================================
Device: 192.168.1.250:3520 API URL: https://callerid.link Log: whozz_bridge.log
Connecting to Whozz Calling device at 192.168.1.250:3520... Connected to device.
When a call comes in, you'll see:
2026-02-13 10:30:15 [INFO] [Line 01] Inbound S: JOHN SMITH (770-555-1234) dur=0s 2026-02-13 10:30:15 [INFO] -> Call created (id=42) 2026-02-13 10:30:45 [INFO] [Line 01] Inbound E: JOHN SMITH (770-555-1234) dur=30s 2026-02-13 10:30:45 [INFO] -> Duration updated: call 42 = 30s
Important: The bridge must stay running to capture calls. If you close the terminal window, the bridge stops. See the next section for how to set it up to run automatically.
7. Auto-Start on Boot
To keep the bridge running without manual intervention:
Windows: Task Scheduler
Open Task Scheduler (search for it in the Start menu)
Click Create Basic Task
Name it: Whozz Calling Bridge
Trigger: When the computer starts
Action: Start a program
Program: python (or full path like C:\Python311\python.exe)
Arguments: C:\CallerID\whozz_bridge.py
Start in: C:\CallerID
Check "Run whether user is logged on or not"
Click Finish
Mac/Linux: systemd Service
Create a service file at /etc/systemd/system/whozz-bridge.service:
[Unit] Description=Whozz Calling Bridge After=network.target
[Service] Type=simple User=callerid WorkingDirectory=/opt/callerid ExecStart=/usr/bin/python3 /opt/callerid/whozz_bridge.py Restart=always RestartSec=10 Environment=BRIDGE_API_URL=https://callerid.link Environment=BRIDGE_API_KEY=your-api-key-here Environment=WHOZZ_DEVICE_IP=192.168.1.250
[Install] WantedBy=multi-user.target
Then enable and start the service:
sudo systemctl enable whozz-bridge sudo systemctl start whozz-bridge sudo systemctl status whozz-bridge
Raspberry Pi
Use the same systemd approach as Linux above. A Raspberry Pi is an excellent low-power, always-on bridge computer.
8. Verification
Test 1: Bridge Connection
Start the bridge. You should see Connected to device. in the output. If not, check the device IP and that both machines are on the same network.
Test 2: Make a Test Call
Call one of your phone lines from a cell phone. You should see:
The bridge logs an Inbound S (Start) record
The call appears in the web app dashboard
When you hang up, the bridge logs an Inbound E (End) record with duration
The call statistics page shows the correct duration
Test 3: Check the Web App
Open your web app in a browser and go to the Logs tab. You should see the test call with caller name, phone number, and duration.
Success! If all three tests pass, your bridge is working correctly. Calls will be logged with full duration data in your dashboard and statistics.
9. Troubleshooting
ProblemCauseSolution
"Cannot connect to device" Wrong IP, device off, or network issue Verify the device IP with ELConfig. Ensure both machines are on the same network. Try ping 192.168.1.250
"Connection refused" Another program is connected to the device Only one TCP connection is allowed at a time. Close ELConfig or any other software connected to the device
"API error 401" Invalid API key Check that your BRIDGE_API_KEY matches the one configured in the web application
"API error 429" Too many requests (rate limit) Normal operation shouldn't trigger this. Check if the bridge is sending duplicate records
Calls appear but duration is 0 End records not being received Check that the device is sending both Start and End records. Some configurations only send Start
"Network error posting call" Internet connectivity issue Verify the bridge computer has internet access. Check the API URL for typos
Bridge disconnects frequently Network instability The bridge will auto-reconnect. Check network cables and Wi-Fi signal. Use a wired connection if possible
10. Multi-Workstation Deployment
Important: You only need one bridge computer per Whozz Calling device. The bridge captures all calls from the device and sends them to the web app. All workstations view calls through the web app — they do not need the bridge installed.
Setup Overview
MachineWhat to InstallAlways On?
Bridge computer (1 per device) Python + whozz_bridge.py Yes
All other workstations Nothing — just open the web app in a browser No
Deployment Steps
Choose one always-on computer on the same network as the Whozz Calling device
Install the bridge on that one computer following steps 1-5 above
Set up auto-start (Section 7) so it runs on boot
On all other workstations, simply open the web app URL in any browser
Every workstation will see the same call data in real time
That's it! One bridge captures all calls. Every workstation sees them through the web app. No additional software needed on workstations.
CallerID.com — Whozz Calling Bridge Installation Guide v1.0
Odoo Version Upgrade Compatibility
Important: Major Version Upgrade Notice (e.g., Odoo 18 → 19) This custom module was developed and tested for Odoo 18.0. Understanding how Odoo updates affect custom modules is critical for long-term maintenance.
Minor Updates (Within Odoo 18.x)
Routine patches and security updates within the same major version (e.g., 18.0.1 → 18.0.2) will not affect this module. Your custom module files are stored separately from Odoo's core code and are not modified or deleted by these updates. No action is required for minor updates.
Major Version Upgrades (e.g., Odoo 18 → 19)
When upgrading to a new major version, be aware of the following:
Aspect Impact Action Required
Module Files Your custom module files will not be deleted or overwritten None — files remain in your custom addons directory
Python API Changes Odoo may rename, deprecate, or remove Python methods and classes between major versions Review Odoo's migration guide and test all model methods, computed fields, and overrides
XML/QWeb Templates View inheritance targets (template IDs, XPath expressions) may change if Odoo restructures its base templates Verify all inherited views and templates render correctly in the new version
Database Schema Core Odoo table structures may change, affecting fields this module extends Test database migration in a staging environment before production upgrade
JavaScript/OWL Frontend framework changes (e.g., OWL component API updates) may break client-side customizations Test all UI components, wizards, and client actions in the new version
Dependencies Required base modules listed in __manifest__.py must still exist in the new version Verify all dependency modules are available and compatible
Recommended Upgrade Procedure
Never upgrade production directly. Always set up a staging/test environment first.
Back up everything — database, filestore, and all custom module directories.
Review Odoo's official migration documentation for the target version, noting any breaking changes to models or APIs used by this module.
Update the module's __manifest__.py version number to match the new Odoo version (e.g., change 18.0.1.0.0 to 19.0.1.0.0).
Test in staging — install the module, verify all features, check server logs for deprecation warnings or errors.
Fix any compatibility issues — update Python code, XML views, and JavaScript as needed.
Run full regression testing before deploying to production.
Key Takeaway: You control when major upgrades happen. Custom modules are safe during routine 18.x updates. For major version jumps, plan ahead with staging tests and allow time for any code adjustments.
© 2026 CallerID.com — All Rights Reserved
For technical support, contact Info@CallerID.com or call 770.263.7111