Docs navigation

BI reporting views

Your call data lives in a PostgreSQL database you own, on your own server — so instead of "data connectors" to someone else's cloud, Exovo exposes a curated, read-only reporting.* view schema you can point any BI tool at directly: Grafana, Power BI, Metabase, Excel — anything that speaks PostgreSQL.

Enabling access

Admin → Integrations → Data Connectors → BI Reporting Views → Enable. This creates the views and an exovo_reporting login whose password is generated and shown once — copy it then; Exovo doesn't store it, and you can rotate it any time by clicking Enable again.

The login can read only the reporting schema: no configuration tables, no credentials, no message bodies. The views select named columns (never SELECT *), so future schema changes can't silently leak new data into BI. Disable access revokes the login without touching your dashboards' definitions.

The views

View What's in it
reporting.calls One row per call: direction, caller/destination, timestamps, duration, talk time, status, hangup cause, MOS score, routing-rule attribution, whether it was recorded
reporting.calls_daily Per-day rollup: calls, answered, talk seconds, average MOS by direction
reporting.extensions Extension roster: number, name, email, role, enabled
reporting.queues Queue configuration: strategy, timeouts, SLA target
reporting.queue_callbacks Callback requests with status, attempts and completion times
reporting.recordings Recording metadata: parties, timestamps, size, transcription and sentiment flags — not the audio or transcript text

Multi-tenant systems: every view carries tenant_id, and the login is machine-level — scope your dashboards accordingly.

Reaching the database

PostgreSQL runs inside the compose stack and isn't published by default. Two supported paths:

  • SSH tunnel (no firewall changes):

    ssh -L 5432:localhost:5432 root@your-pbx-host
    

    then connect your BI tool to localhost:5432, database exovo, user exovo_reporting.

  • LAN/VPN exposure: add a compose override publishing the port, then restart the stack:

    # docker-compose.override.yml
    services:
      db:
        ports:
          - "5432:5432"
    

    Only do this on a trusted LAN or behind the built-in VPN — never expose 5432 to the internet.

Sample Grafana dashboard

Download the sample dashboard — calls per day, answer rate, talk minutes, average MOS quality, and busiest destinations. In Grafana: Dashboards → Import, upload the JSON, pick your Exovo PostgreSQL datasource, done.

After upgrades

Views are versioned with the product: after an Exovo update that changes reporting-relevant schema, click Enable again — it re-creates the views idempotently (and rotates the password, so update your BI tool's saved credential).