Active calls: Difference between revisions

From VoIPmonitor.org
(Add documentation about dealing with duplicate entries in Active Calls view - filtering by carrier IP and other causes)
(Rewrite: consolidated structure, added troubleshooting table, more compact)
 
(3 intermediate revisions by the same user not shown)
Line 2: Line 2:
[[Category:GUI manual]]
[[Category:GUI manual]]


This page describes the Active Calls view, which provides real-time monitoring of ongoing calls in the VoIPmonitor GUI.
= Active Calls =
 
Real-time monitoring of ongoing VoIP calls with live listening capability (G.711 codec, sniffer v7+).


== Overview ==
== Overview ==


The Active Calls view displays current calls in real time and allows you to listen to G.711 calls live (requires sniffer version 7 or newer). The view refreshes automatically according to the configured refresh interval (default: 2 seconds).
{| class="wikitable"
 
|-
=== Communication with Sniffer ===
! Feature !! Details
 
|-
Live call data is fetched from the VoIPmonitor sniffer instance through the manager TCP port 5029. If calls are not displayed, verify that the web server can reach this port:
| Auto-refresh || Default: 2 seconds
|-
| Communication || TCP port '''5029''' (Manager API)
|-
| Live listening || G.711 codec only (requires sniffer version 7+)
|-
| Direct URL || <code>admin.php?activecalls=1</code>
|}


<kroki lang="mermaid">
<kroki lang="mermaid">
Line 29: Line 38:
</kroki>
</kroki>


{{Note|1=If calls are not displayed, verify that the web server can reach the sniffer's manager port 5029.}}
{{Note|1=If calls are not displayed, verify that the web server can reach the sniffer's manager port 5029: <code>telnet localhost 5029</code>}}
 
Test connectivity:
<syntaxhighlight lang="bash">
telnet localhost 5029
</syntaxhighlight>
 
=== Direct URL Access ===
 
You can open the Active Calls view directly using this URL format:
 
<syntaxhighlight lang="text">
http://your-server/admin.php?activecalls=1
</syntaxhighlight>


== Filtering Calls ==
== Filtering ==


The filter box adapts to the type of input provided. Calls can be filtered by:
The filter box adapts to the input type. Available filters:


* National or international (via combo box)
* '''Sensor''' - dropdown selection
* Sensor
* '''IP address/prefix''' - e.g., <code>192.168.%</code>
* IP address or IP prefix
* '''Phone number/prefix''' - e.g., <code>00</code> (international)
* Phone number or prefix
* '''Call-ID''' - exact or substring match
* Call-ID
 
=== Filter Syntax Examples ===


{| class="wikitable"
{| class="wikitable"
|-
|-
! Input !! Description
! Filter Input !! Matches
|-
|-
| <code>192.168.%</code> || Filters calls with source or destination IP starting with 192.168.x.x
| <code>192.168.%</code> || Source/destination IP starting with 192.168.x.x
|-
|-
| <code>00</code> || Filters calls where the number starts with 00
| <code>00</code> || Numbers starting with 00
|-
|-
| <code>abc123</code> || Searches for exact Call-ID match
| <code>abc123</code> || Exact Call-ID match
|-
|-
| <code>%abc123%</code> || Searches for Call-ID containing "abc123" (substring match)
| <code>%abc123%</code> || Call-ID containing "abc123"
|}
|}


{{Tip|1=By default, Call-ID search matches the full Call-ID string. To search for a substring, add the <code>%</code> wildcard character to the start and/or end of the search string.}}
{{Tip|1=Use <code>%</code> wildcard for substring matching in Call-ID searches.}}


== Dealing with Duplicate Entries ==
=== Duplicate Entries ===


The Active Calls view may show duplicate entries for what appears to be a single call. This often happens when calls pass through multiple SIP gateways or carriers, creating separate legs that are all captured by the sniffer.
Duplicates often appear when calls traverse multiple SIP gateways/carriers.


=== Filtering by Carrier IP ===
'''Solutions:'''
* '''Filter by carrier IP''' - Enter the specific carrier IP to show only one leg per call
* '''Filter by sensor''' - If multiple sensors capture the same mirrored traffic
* '''SIP forking''' - Simultaneous ringing to multiple destinations are separate legs (expected behavior)


To consolidate the view and display one entry per call, use the filter field with the carrier's IP address:
For distributed sensor architectures, see [[Sniffer_distributed_architecture]].


* Enter the specific carrier's IP address (e.g., <code>203.0.113.50</code>)
== Show Call Info ==
* The view will display only the SIP leg between your system and that specific carrier
* Other legs are filtered out, making each listed item correspond to a single call


{{Note|1=This approach works best when each call traverses different carriers. Redirected calls using the ''same'' carrier IP for both inbound and outbound legs may still appear twice.}}
Displays detailed SIP packet information for active calls when clicking on a call entry.


=== Other Causes of Duplicates ===
{{Warning|1=Requires VoIPmonitor '''version 2024.09.1+''' and can significantly increase CPU load.}}


If filtering by IP does not resolve the duplication, the duplicates may be caused by:
'''Enable via config file:'''
<syntaxhighlight lang="ini">
# /etc/voipmonitor.conf
active_call_info = yes
</syntaxhighlight>
<syntaxhighlight lang="bash">
systemctl restart voipmonitor
</syntaxhighlight>
 
'''Enable via GUI:''' Settings > Sensors > wrench icon > enable <code>active_call_info</code>
 
== Column Visibility ==


* '''Multiple sensors:''' Different sensors capturing the same mirrored traffic. Filter by a specific Sensor ID using the dropdown.
Customize visible columns via the column header menu ("Show columns"). Settings persist in the <code>custom_config</code> database table.
* '''SIP forking:''' A single INVITE sent to multiple destinations (e.g., simultaneous ringing to desk phone and mobile). These are separate call legs and display correctly as two entries.


For more information on how sensors handle duplicate Call-IDs, see the [[Sniffer_distributed_architecture]] documentation.
{{Tip|Hiding problematic columns (e.g., "Proxy") can resolve performance issues caused by parsing errors.}}


== Bottom Graphs ==
== Bottom Graphs ==


The bottom section of the Active Calls view displays graphs showing the top callers grouped by:
The bottom section displays top callers/called grouped by IP address.
* Caller IP address
* Called IP address


[[File:activecalls.png]]
[[File:activecalls.png]]


== Customizing Column Visibility ==
== Programmatic Access (API) ==
 
The Active Calls view allows you to show or hide columns based on your preferences. This is useful when:


* You want to reduce visual clutter and focus on specific information
=== GUI API (Centralized) ===
* Certain columns contain data that is causing performance issues (e.g., parsing errors in the Proxy column)
* Your display has limited screen space


To hide or show columns:
Query active calls from all connected sensors via <code>listActiveCalls</code>:


# Locate the column header area at the top of the table
# Click on the column visibility icon (typically a column or grid icon) or look for a "Show columns" dropdown menu
# Uncheck columns you want to hide, check columns you want to show
# The view will update immediately with your selection
Your column visibility preferences are stored in the GUI configuration (saved in the MySQL <code>custom_config</code> table) and persist across sessions.
=== Troubleshooting Performance Issues ===
If the Active Calls view becomes unresponsive or slow, particularly when displaying certain columns like "Proxy":
'''Temporary workaround:'''
Hide the problematic column using the column visibility method above.
'''If the GUI is completely unresponsive:'''
* Connect directly to the GUI database
* Check the <code>custom_config</code> table for column visibility settings
* Clear or modify the relevant configuration entries
* Contact support with SSH access to the GUI host for investigation
'''Information to provide for support:'''
* A SIP PCAP dump of a problematic call (to identify data causing parsing errors)
* A mysqldump of the <code>voipmonitor.custom_config</code> table (to review current column configuration)
== Programmatic Access to Active Calls ==
In addition to viewing active calls in the GUI, you can programmatically retrieve active call data for automation and integration purposes.
=== GUI API (Recommended for Centralized Systems) ===
The VoIPmonitor GUI provides a web API endpoint <code>listActiveCalls</code> that retrieves active calls from all connected sensors/probes. This is the preferred method for centralized monitoring environments.
* '''Method:''' HTTP POST or GET to <code>/php/api.php?task=listActiveCalls</code>
* '''Documentation:''' [[WEB_API#listActiveCalls]]
Example:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
curl -X POST 'http://yourserver/php/api.php?task=listActiveCalls&user=USER&password=PASSWORD&params={"sensorId":"1"}'
curl -X POST 'http://yourserver/php/api.php?task=listActiveCalls&user=USER&password=PASSWORD&params={"sensorId":"1"}'
</syntaxhighlight>
</syntaxhighlight>


=== Sniffer Manager API (For Individual Sensors) ===
See [[WEB_API#listActiveCalls]] for details.


For direct access to a single sensor instance, use the sniffer service's manager API on port 5029. The <code>listcalls</code> command retrieves active call data from the specific sensor.
=== Sniffer Manager API (Direct) ===


* '''Method:''' TCP connection to port 5029
Query a single sensor directly via port 5029:
* '''Documentation:''' [[Encryption_in_manager_api_customer#How_to_use_the_API_-_examples|Manager API]]


Example:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
echo 'listcalls' | nc localhost 5029
echo 'listcalls' | nc localhost 5029
</syntaxhighlight>
</syntaxhighlight>


The manager API supports filtering by caller number, called number, IP addresses, and other criteria. See the [[Encryption_in_manager_api_customer#Example_with_filter_used|Manager API documentation]] for advanced filtering examples.
{| class="wikitable"
|-
! Method !! Use Case
|-
| GUI <code>listActiveCalls</code> || Multiple sensors, centralized monitoring, external integrations
|-
| Manager API <code>listcalls</code> || Single sensor, local scripts, low-latency queries
|}
 
== Troubleshooting ==
 
{| class="wikitable"
|-
! Problem !! Solution
|-
| No calls displayed || Verify port 5029 connectivity: <code>telnet localhost 5029</code>
|-
| Duplicate entries || Filter by carrier IP or sensor ID
|-
| Slow/unresponsive view || Hide problematic columns (e.g., "Proxy")
|-
| GUI completely frozen || Connect to DB, clear entries in <code>custom_config</code> table
|}


=== Choosing the Right Method ===
'''For support tickets, provide:'''
* SIP PCAP dump of problematic calls
* mysqldump of <code>voipmonitor.custom_config</code> table


'''Use the GUI <code>listActiveCalls</code> API when:'''
== See Also ==
* You have multiple sensors/probes and need centralized access
* You want to query all connected sensors from a single endpoint
* You are building external integrations that need filtered results


'''Use the sniffer manager API when:'''
* [[Sniffer_distributed_architecture]] - Multi-sensor deployments
* You need direct access to a specific sensor instance
* [[WEB_API]] - Full API documentation
* You are running scripts locally on the sensor host
* [[Settings]] - Sensor configuration
* You require low-latency queries without GUI involvement


== AI Summary for RAG ==
== AI Summary for RAG ==
'''Summary:''' Active Calls provides real-time monitoring of ongoing VoIP calls with live listening capability for G.711 codec. Calls are fetched via manager port 5029 and can be filtered by IP, number, sensor, or Call-ID. The view may show duplicate entries due to multiple call legs passing through different carriers - filtering by carrier IP can consolidate these displays. Other causes of duplicates include multiple sensors capturing the same traffic and SIP forking (simultaneous ringing). Column visibility can be customized and settings persist in the database. Programmatic access is available through two methods: the GUI's listActiveCalls API for centralized monitoring of multiple sensors, and the sniffer's manager API (listcalls command) for direct sensor access.


'''Keywords:''' active calls, real-time monitoring, live calls, manager port 5029, call filter, column visibility, custom_config, G.711 listening, listActiveCalls API, programmatic access, automation, manager API, listcalls command, duplicate entries, multiple call legs, carrier IP filter
'''Summary:''' Active Calls provides real-time monitoring of ongoing VoIP calls via TCP port 5029. Features include: live listening (G.711 only, sniffer v7+), filtering by IP/number/Call-ID/sensor, and column customization. Duplicate entries occur when calls traverse multiple carriers - filter by carrier IP to consolidate. "Show Call Info" feature (v2024.09.1+) displays SIP packet details but increases CPU load. Programmatic access available via GUI API (listActiveCalls for multi-sensor) or Manager API (listcalls for single sensor). Settings stored in custom_config table.
 
'''Keywords:''' active calls, real-time monitoring, live listening, G.711, port 5029, manager API, listActiveCalls, listcalls, call filter, duplicate entries, carrier IP, active_call_info, column visibility, custom_config


'''Key Questions:'''
'''Key Questions:'''
Line 187: Line 168:
* Why are active calls not showing in the GUI?
* Why are active calls not showing in the GUI?
* How do I filter calls by IP address or phone number?
* How do I filter calls by IP address or phone number?
* How do I hide or show columns in the Active Calls view?
* Why do I see duplicate entries for the same call?
* What port is used for fetching live call data?
* How do I enable "Show Call Info" feature?
* How can I programmatically check if a call to a specific phone number is currently active?
* What port is used for active call data?
* What is the difference between listActiveCalls API and the sniffer's manager API?
* How do I programmatically query active calls?
* How do I retrieve active calls from all connected sensors?
* What is the difference between listActiveCalls and listcalls?
* How do I query active calls from a single sensor directly?
* How do I customize column visibility?
* What version is required for SIP packet view in active calls?

Latest revision as of 16:48, 8 January 2026


Active Calls

Real-time monitoring of ongoing VoIP calls with live listening capability (G.711 codec, sniffer v7+).

Overview

Feature Details
Auto-refresh Default: 2 seconds
Communication TCP port 5029 (Manager API)
Live listening G.711 codec only (requires sniffer version 7+)
Direct URL admin.php?activecalls=1

ℹ️ Note: If calls are not displayed, verify that the web server can reach the sniffer's manager port 5029: telnet localhost 5029

Filtering

The filter box adapts to the input type. Available filters:

  • Sensor - dropdown selection
  • IP address/prefix - e.g., 192.168.%
  • Phone number/prefix - e.g., 00 (international)
  • Call-ID - exact or substring match
Filter Input Matches
192.168.% Source/destination IP starting with 192.168.x.x
00 Numbers starting with 00
abc123 Exact Call-ID match
%abc123% Call-ID containing "abc123"

💡 Tip: Use % wildcard for substring matching in Call-ID searches.

Duplicate Entries

Duplicates often appear when calls traverse multiple SIP gateways/carriers.

Solutions:

  • Filter by carrier IP - Enter the specific carrier IP to show only one leg per call
  • Filter by sensor - If multiple sensors capture the same mirrored traffic
  • SIP forking - Simultaneous ringing to multiple destinations are separate legs (expected behavior)

For distributed sensor architectures, see Sniffer_distributed_architecture.

Show Call Info

Displays detailed SIP packet information for active calls when clicking on a call entry.

⚠️ Warning: Requires VoIPmonitor version 2024.09.1+ and can significantly increase CPU load.

Enable via config file:

# /etc/voipmonitor.conf
active_call_info = yes
systemctl restart voipmonitor

Enable via GUI: Settings > Sensors > wrench icon > enable active_call_info

Column Visibility

Customize visible columns via the column header menu ("Show columns"). Settings persist in the custom_config database table.

💡 Tip: Hiding problematic columns (e.g., "Proxy") can resolve performance issues caused by parsing errors.

Bottom Graphs

The bottom section displays top callers/called grouped by IP address.

Programmatic Access (API)

GUI API (Centralized)

Query active calls from all connected sensors via listActiveCalls:

curl -X POST 'http://yourserver/php/api.php?task=listActiveCalls&user=USER&password=PASSWORD&params={"sensorId":"1"}'

See WEB_API#listActiveCalls for details.

Sniffer Manager API (Direct)

Query a single sensor directly via port 5029:

echo 'listcalls' | nc localhost 5029
Method Use Case
GUI listActiveCalls Multiple sensors, centralized monitoring, external integrations
Manager API listcalls Single sensor, local scripts, low-latency queries

Troubleshooting

Problem Solution
No calls displayed Verify port 5029 connectivity: telnet localhost 5029
Duplicate entries Filter by carrier IP or sensor ID
Slow/unresponsive view Hide problematic columns (e.g., "Proxy")
GUI completely frozen Connect to DB, clear entries in custom_config table

For support tickets, provide:

  • SIP PCAP dump of problematic calls
  • mysqldump of voipmonitor.custom_config table

See Also

AI Summary for RAG

Summary: Active Calls provides real-time monitoring of ongoing VoIP calls via TCP port 5029. Features include: live listening (G.711 only, sniffer v7+), filtering by IP/number/Call-ID/sensor, and column customization. Duplicate entries occur when calls traverse multiple carriers - filter by carrier IP to consolidate. "Show Call Info" feature (v2024.09.1+) displays SIP packet details but increases CPU load. Programmatic access available via GUI API (listActiveCalls for multi-sensor) or Manager API (listcalls for single sensor). Settings stored in custom_config table.

Keywords: active calls, real-time monitoring, live listening, G.711, port 5029, manager API, listActiveCalls, listcalls, call filter, duplicate entries, carrier IP, active_call_info, column visibility, custom_config

Key Questions:

  • How do I view active/live calls in VoIPmonitor?
  • Why are active calls not showing in the GUI?
  • How do I filter calls by IP address or phone number?
  • Why do I see duplicate entries for the same call?
  • How do I enable "Show Call Info" feature?
  • What port is used for active call data?
  • How do I programmatically query active calls?
  • What is the difference between listActiveCalls and listcalls?
  • How do I customize column visibility?
  • What version is required for SIP packet view in active calls?