Installation
What Avaya IP Office SMDR Connector requires, how to install it, and how to check the install worked.
There are three pieces: the Odoo module, a small listener you run yourself, and one setting in IP Office.
IP Office --TCP--> [listener] --> SQLite spool --HTTPS--> Odoo webhookRequirements
- Odoo 18.0, Community or Enterprise
- A host that IP Office can reach on TCP, to run the listener (Docker, systemd or a plain Python process)
- Avaya IP Office with SMDR output available
1. The Odoo module
- Copy technovision_avaya_smdr into your addons path.
- Update the apps list and install Avaya IP Office SMDR Connector.
- Telephony → Configuration → Endpoints. One endpoint is created per company at install.
- Press Show Credentials and copy the webhook URL and token.
The token is 32 random bytes, masked everywhere in the interface, and readable only by an Avaya Technical Administrator. This is the one time it is shown.
2. The listener
Docker:
cd docker
cp ../standalone/avaya_smdr_listener/.env.example .env
$EDITOR .env # paste ODOO_WEBHOOK_URL and ODOO_WEBHOOK_TOKEN
docker compose up -dsystemd:
sudo ./standalone/avaya_smdr_listener/install.sh
sudo $EDITOR /etc/avaya-smdr-listener/.env
sudo systemctl enable --now avaya-smdr-listenerWhy there is a listener at all
SMDR is a raw TCP stream, not HTTP. Something has to hold that socket open, and an Odoo worker is the wrong thing to do it with.
The listener's SQLite spool is the durability boundary: a record is written the moment it is parsed and removed only once Odoo confirms it is stored. An Odoo outage, upgrade or restart costs delay and nothing else.
3. IP Office
In IP Office Manager: System → SMDR
| Setting | Value |
|---|---|
| Output | SMDR only |
| IP Address | the listener's address |
| TCP Port | 8090, or your SMDR_PORT |
| Records to buffer | the maximum your system allows |
Merge the configuration and reboot if prompted.
The mistake everyone makes once
The PBX is the TCP client. IP Office dials out to the address and port you set here; the listener waits to be connected to.
Getting that backwards — pointing the listener at the PBX — is the single most common reason an SMDR integration never receives a record, and it fails silently: both ends sit there looking healthy.
Check it worked
- Make a call through the PBX.
- Telephony → Calls. It should appear within a few seconds.
- If not, Telephony → Configuration → Request Log. Rows there mean the listener is reaching Odoo and the problem is authentication or parsing; no rows mean it is not reaching Odoo at all.
On the listener host:
journalctl -u avaya-smdr-listener | grep connectedThat line appears when the PBX connects. Without it, IP Office is not dialling out to you.
Give somebody the groups
| Group | Can |
|---|---|
| Avaya Call User | See their own calls |
| Avaya Call Manager | See all calls, map extensions, reprocess |
| Avaya Technical Administrator | Tokens, allowlists, raw records, retention |
The separation is deliberate: a sales manager needs the call history, not the webhook credentials.
TLS
The listener has no built-in TLS. Put Odoo behind HTTPS, and if the listener is not on a trusted network with the PBX, tunnel the SMDR connection.
Upgrading
Upgrade the module normally. The listener keeps spooling throughout and delivers what it has once Odoo is back, so there is no need to stop it or to time the upgrade for a quiet period.
Uninstalling
Removes the calls, extensions, endpoints and request log. Stop the listener first, or it will spool records it can never deliver.