Register active

From VoIPmonitor.org
Revision as of 16:47, 8 January 2026 by Admin (talk | contribs) (Rewrite: improved structure with tables, added See Also, cleaner examples)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Querying Active SIP Registrations via Manager API

This page documents how to programmatically query active SIP registrations using VoIPmonitor's Manager API. For information about the Register tables in the GUI (Active, Failed, State), see Register.

Configuration

Configure the manager API in /etc/voipmonitor.conf:

Method Configuration Description
TCP port (default) manager_ip = 127.0.0.1
manager_port = 5029
Standard network socket
Unix socket manager_socket = /tmp/vm_manager_socket Alternative, lower overhead

Restart voipmonitor after configuration changes: systemctl restart voipmonitor

The listregisters Command

JSON Parameters

Parameter Description Example
filter Filter criteria object {"digestusername":"user1"}
limit Max results to return 30
states Registration state filter "OK"
sort_field Field to sort by "calldate"
sort_dir Sort direction "asc" or "desc"
zip Compress output "yes" or "no"

Common filter fields: digestusername, sipcallerip, sipcalledip

Query via TCP Port

# Basic query - all active registrations
echo 'listregisters' | nc 127.0.0.1 5029

# Filter by username
echo 'listregisters {"zip":"no","limit":30,"states":"OK","filter":{"digestusername":"user1"},"sort_field":"calldate","sort_dir":"desc"}' | nc 127.0.0.1 5029

# Filter by username AND source IP
echo 'listregisters {"zip":"no","limit":30,"states":"OK","filter":{"sipcallerip":"192.168.88.209","digestusername":"11"},"sort_field":"calldate","sort_dir":"desc"}' | nc 127.0.0.1 5029

Query via Unix Socket

echo 'listregisters' | nc -U /tmp/vm_manager_socket

Query via GUI API Script

This method auto-detects whether TCP or Unix socket is configured:

php /var/www/html/php/run.php send_manager_cmd -s NULL -c 'listregisters'

Example: PHP Filter Script

Filter active registrations by IP address:

php active_register.php "192.168.43.212"

active_register.php:

<?php
if (!array_key_exists("1", $argv)) exit;

$searchVal = ip2long($argv[1]);
exec("echo 'listregisters' | nc 127.0.0.1 5029", $retstr, $rt);
$data = json_decode($retstr[0]);

if (!array_key_exists("2", $data)) exit;

$regkeys = $data[0];
$sipcallerip_key = array_search("sipcallerip", $regkeys);
$reglist = array_slice($data, 2); // Skip header rows

foreach ($reglist as $item) {
    if ($item[$sipcallerip_key] == $searchVal) {
        var_dump($item);
    }
}
?>

ℹ️ Note: For Unix socket, change nc 127.0.0.1 5029 to nc -U /tmp/vm_manager_socket

See Also

  • Register - SIP Register tables in GUI (Active, Failed, State)
  • WEB_API - HTTP API for CDR access

AI Summary for RAG

Summary: Documents querying active SIP registrations via VoIPmonitor's Manager API. Two connection methods: TCP port (default manager_ip=127.0.0.1, manager_port=5029) and Unix socket (manager_socket). The listregisters command accepts JSON parameters: filter (digestusername, sipcallerip), limit, states, sort_field, sort_dir. GUI API script auto-detects configuration. Example PHP script shows IP-based filtering.

Keywords: manager API, listregisters, active registrations, TCP port, Unix socket, manager_ip, manager_port, manager_socket, netcat, nc, digestusername, sipcallerip, registration query, SIP register, JSON parameters

Key Questions:

  • How do I list all active SIP registrations in VoIPmonitor?
  • How do I query registrations by username using the manager API?
  • How do I filter active registrations by IP address?
  • What is the difference between TCP port and Unix socket for manager API?
  • What JSON parameters does the listregisters command accept?
  • How do I use the GUI API script to query registrations?