Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
IEC 29341-20-1 defines the UPnP Telephony device, a standardised framework for integrating telephony capabilities into the UPnP home network environment. This specification enables fixed-line phones, mobile handsets, VoIP adapters, and softphone applications to interoperate seamlessly with other UPnP devices such as MediaRenderers, printers, and home automation controllers. The Telephony device exposes services for call control, phonebook management, messaging, and presence information. By abstracting the underlying telephony technology (PSTN, VoIP, cellular), it provides a uniform control interface for all communication-related functions in the digital home.
LineInstanceID values for each active line. This allows the control point to distinguish between calls on different lines and route audio to the correct MediaRenderer endpoint.The Telephony device comprises several mandatory and optional services. The CallControl service handles call setup, teardown, and supplementary services such as call hold, transfer, and conferencing. The Phonebook service provides access to contacts stored on the device, supporting search, add, modify, and delete operations. The Messaging service manages SMS, MMS, and instant messages, allowing control points to send and receive text messages through the telephony device. Finally, the Presence service exposes the device’s availability status (online, busy, away, offline) to other UPnP control points for unified presence aggregation.
| Service | Mandatory | Key Actions |
|---|---|---|
| CallControl | Yes | Call, Hangup, Answer, Hold, Transfer, Conference |
| Phonebook | No | Browse, Search, AddEntry, ModifyEntry, DeleteEntry |
| Messaging | No | SendMessage, ReceiveMessage, GetMessageList, DeleteMessage |
| Presence | No | GetPresenceState, SetPresenceState, SubscribeToPresenceChanges |
Call action requires careful handling of the CallerID state variable. Some VoIP providers do not transmit caller ID for emergency numbers or private calls. Implementations must gracefully handle empty or “Private” caller ID values without logging errors that could confuse users reviewing call history.A key design goal of IEC 29341-20-1 is seamless integration with the broader UPnP ecosystem. For example, an incoming call can trigger a MediaRenderer to pause audio playback (ducking), a UPnP printer to print caller ID information on a call log, or a home automation controller to flash lights when a call is received from a specified contact. This integration is achieved through the standard UPnP eventing mechanism: the Telephony device publishes state variables such as IncomingCall, CallState, and LineStatus, to which other UPnP devices subscribe. When a state change occurs, GENA events propagate the update to all subscribers, enabling coordinated multi-device behaviour.
Transfer action in CallControl supports both attended and unattended (blind) transfer modes. For attended transfer, the transferring party speaks to the recipient before completing the transfer. For blind transfer, the call is redirected immediately. Selecting the appropriate mode improves call handling efficiency in office environments.Implementing the CallControl service requires a robust finite state machine that models the telephony call lifecycle: Idle, Dialling, Alerting, Connected, Held, and Terminated. Each state transition must be atomic and must trigger a CallState event before returning the SOAP response. For devices supporting multiple calls simultaneously (e.g., call waiting), maintain a call table indexed by CallID with each entry tracking its own state machine instance. The phonebook service should implement efficient search algorithms for contact lookup — for phonebooks exceeding 10,000 entries, an indexed search with substring matching is preferable to a linear scan.
LineInstanceID. The device exposes separate CallControl service instances (or virtual instances) for each line, allowing independent call handling on each.StartVideo, StopVideo) alongside the base CallControl service.