How akentner/phone-logger works
Phone Logger is a Home Assistant phone-event logging and number-resolution service. Fritz!Box, REST, and optional MQTT inputs produce normalized call events; the pipeline enriches events with PBX line state, resolves numbers through an ordered adapter chain, then dispatches results to history and optional integrations. Its API and web interface also manage contacts, call history, cache, configuration, and PBX state. Evidence for several adapter and UI links comes from the README and SOURCE INDEX; unsampled implementation details are not inferred beyond those references.
Main entry points: pipeline.py Event pipeline · routes REST API routes · database.py SQLite database · main.py Application startup
Components 24
Event ingestion
- Fritz monitor
src/adapters/input/fritz_callmonitor.py - REST input
src/adapters/input/rest.py - MQTT adapter
src/adapters/mqtt.py
Call processing
- Call event model
src/core/event.py - Event pipeline
src/core/pipeline.py - PBX state manager
src/core/pbx.py - Number normalization
src/core/phone_number.py
Resolution and storage
- Resolver chain
src/adapters/resolver/chain.py - Local resolvers
src/adapters/resolver - Web lookup resolvers
src/adapters/resolver - SQLite database
src/db/database.py
API and integration
- Call history output
src/adapters/output/call_log.py - Webhook output
src/adapters/output/webhook.py - Configuration
src/config.py - REST API routes
src/api/routes - Application startup
src/main.py
Web interface
- Web interface
src/frontend/src/App.tsx - Management pages
src/frontend/src/pages - API client
src/frontend/src/api
Other components
- Phone Logger operator
- Fritz!Box
- Lookup services
- Home Assistant
- MQTT broker
Connections 32
- Fritz!Box → Fritz monitor: sends events
- Fritz monitor → Event pipeline: emits events
src/core/pipeline.py - REST input → Event pipeline: emits events
src/core/pipeline.py - MQTT broker → MQTT adapter: sends triggers
- MQTT adapter → Event pipeline: emits events
src/adapters/mqtt.py - Event pipeline → Call event model: processes
src/core/pipeline.py - Event pipeline → PBX state manager: enriches state
src/core/pipeline.py - Event pipeline → Number normalization: normalizes numbers
src/core/pipeline.py - Event pipeline → Resolver chain: resolves through
src/core/pipeline.py - Resolver chain → Local resolvers: tries local sources
src/adapters/resolver/chain.py - Resolver chain → Web lookup resolvers: tries web sources
src/adapters/resolver/chain.py - Web lookup resolvers → Lookup services: looks up numbers
- Web lookup resolvers → SQLite database: caches results
src/adapters/resolver/tellows.py - Local resolvers → SQLite database: reads contacts
src/adapters/resolver/tellows.py - Event pipeline → Call history output: dispatches events
src/core/pipeline.py - Event pipeline → Webhook output: dispatches results
src/core/pipeline.py - Event pipeline → MQTT adapter: publishes results
src/core/pipeline.py - Call history output → SQLite database: records calls
src/adapters/output/call_log.py - Webhook output → Home Assistant: posts events
src/adapters/output/webhook.py - MQTT adapter → MQTT broker: publishes events
- Phone Logger operator → Web interface: uses interface
- Web interface → Management pages: routes views
src/frontend/src/App.tsx - Management pages → API client: requests data
src/frontend/src/pages/CallsPage.tsx - API client → REST API routes: calls endpoints
- Phone Logger operator → REST API routes: manages service
- Application startup → REST API routes: registers routes
src/main.py - Application startup → Event pipeline: starts pipeline
src/main.py - Application startup → SQLite database: opens database
src/main.py - Application startup → Configuration: loads settings
src/main.py - REST API routes → SQLite database: manages records
- REST API routes → Event pipeline: triggers calls
- REST API routes → Configuration: reports settings