QVCCS innovation · Diagnostics

SIP Trace Analyser: from “why did this call fail?” to the trunk and the response code

A carrier says their side is fine. The contact centre says calls are failing. SIP Trace Analyser settles it with evidence: it searches Genesys Cloud voice conversations for SIP and transport failures, reads the SIP signalling metadata Genesys recorded, hunts specific response codes across raw traces and attributes each failure to the trunk that carried it.

QVCCS Innovation teamSIP Trace Analyser user guide →

Why did this call fail? A failed voice call on the left, marked with a red cross, leads to a SIP trace record in the centre showing an INVITE and a 503 Service Unavailable response line highlighted in red. An arrow from the INVITE's request-URI domain points to a carrier trunk tile on the right, which is identified as the trunk that carried the call. Trunk name and codes are illustrative. QVCCS INNOVATION · VOICE DIAGNOSTICS Why did this call fail? Failed call SIP TRACE · ONE CALL-ID INVITE → ruriDomain SIP/2.0 100 Trying SIP/2.0 503 Service Unavailable IDENTIFIED TRUNK Carrier trunk A NEVER A GUESS ILLUSTRATIVE
  • Did you know that Genesys Cloud analytics segments can carry sipResponseCodes alongside a disconnectType such as error, system or transportFailure – so some SIP failures are visible in the conversation detail record before you download a single trace?

  • Did you know that the Genesys Cloud analytics session record carries an edgeId and a provider, but no trunk field? Working out which trunk carried a call means looking at the SIP signalling itself.

  • Did you know that Genesys Cloud generates PCAP files for calls that traverse an external trunk, keeps them available for 21 days, and does not generate them for station-to-station calls? PCAP generation is best-effort and always gives way to call handling.

01

The question every voice engineer gets asked

Monday morning, and a business manager forwards a complaint: customers calling the sales line on Saturday got a fast busy, then nothing. The carrier’s ticket response says no faults were found. The IT Systems, Telecoms & SIP Engineer now needs to find every affected call, prove what the signalling said, and show which trunk carried it – ideally before the next escalation call, and certainly before the evidence ages out.

SIP Trace Analyser is the QVCCS tool for exactly that investigation. It joins two Genesys data sources into one workflow. Analytics conversation details find voice conversations in a date range and classify their disconnects, participant by participant and segment by segment. Telephony SIP traces provide the signalling records Genesys kept for those calls – one record per SIP Call-ID, with From and To URIs, direction, timing, the INVITE’s request-URI domain, a downloadable trace file of the raw messages and a pre-signed PCAP link.

Speed matters as much as accuracy. Genesys keeps signalling evidence for a limited window, carriers ask for Call-IDs and timestamps before they will investigate, and a failure that affects one call in fifty is invisible in queue statistics. So the brief we set ourselves was a single investigation workflow: query a window, see which calls failed and why, prove it from the signalling, name the trunk, and hand over the raw evidence in a form the carrier’s engineers can open.

02

What Genesys Cloud gives you natively

Genesys Cloud has built-in SIP diagnostics, and we use them constantly. The Details tab of an interaction includes a SIP Diagnostics section from which you can download that interaction’s SIP traces file and its PCAP. A PCAP is a packet capture that can be opened in freely available network protocol analysers to see the signalling history of a specific call between Genesys Cloud and the carrier or PBX at the other end.

The documentation is clear about the boundaries. PCAPs are generated for calls that traverse an external trunk – BYOC Cloud carrier, PBX trunks or premises Edge external trunks – and are available for 21 days. Station-to-station calls do not generate them. For BYOC Premises, the Conversation Headers setting must be enabled on the trunk or the capture cannot be queried by conversation ID, and in a hybrid BYOC Cloud and Premises environment a PCAP shows only part of the path. Generation is best-effort under load. These are diagnostics per interaction, and they need the Telephony > Plugin > All and Telephony > Pcap permissions.

03

Legs, segments and purpose-aware error classification

The insight that shaped the tool is that “did this call fail?” is not one question. An analytics conversation is a tree: participants, each with a purpose such as customer, external, outbound, agent, ivr or acd; sessions under them, which are the media legs; and segments under those, each with a disconnectType. SIP Trace Analyser queries /api/v2/analytics/conversations/details/query for voice conversations whose segments ended with error, system or transportFailure, then judges each segment with the participant’s purpose in mind.

Error and transportFailure always count as SIP errors. System counts only on external-party legs – customer, external or outbound – because on an internal leg, such as an IVR-to-agent transfer, it simply means the platform ended a routing segment, which is normal. Segments whose errorCode points to WebRTC, ICE or DTLS are excluded: those are agent-side media failures, and the SIP call itself completed. Without these rules, an error-rate figure would be dominated by noise.

Badges follow the same taxonomy: red for error, system and transportFailure, amber for timeout, uncallable and noAnswer, green for normal client or endpoint hang-ups and blue for peer. Each row shows its worst badge, preferring a real SIP error. Opening a call shows the failing segments with purpose, disconnect type, time and errorCode, plus any sipResponseCodes Genesys already recorded on the segment – no trace download required.

Analytics, SIP traces and trunk configuration converge on one per-call investigation On the left, three Genesys Cloud sources. Analytics: POST /api/v2/analytics/conversations/details/query returns a conversation tree of participants with a purpose, sessions carrying ani, dnis, edgeId and provider, and segments carrying disconnectType, errorCode and sipResponseCodes. Telephony: GET /api/v2/telephony/siptraces returns one record per SIP Call-ID with From and To URIs, the INVITE ruriDomain, a trace file and a PCAP link. Trunk configuration: the trunks and external trunk bases endpoints supply ACL IP ranges, BYOC termination FQDNs and SIP hosts. On the right, they converge on one investigation view showing error segments, SIP codes, the positively identified trunk and downloads. GENESYS CLOUD DATA MODEL Three sources, one question ANALYTICS · POST /api/v2/analytics/conversations/details/query Conversation voice · interval Participants purpose: customer · external · agent … Sessions ani · dnis · edgeId · provider Segments disconnectType · errorCode · sipResponseCodes TELEPHONY · GET /api/v2/telephony/siptraces One record per Call-ID · From/To · ruriDomain · trace file · PCAP TRUNK CONFIG · …/edges/trunks · …/edges/externaltrunkbases ACL IP ranges · BYOC termination FQDNs · SIP server and proxy hosts ONE FOCAL VIEW Per-call investigation Error segments purpose-aware SIP codes 4xx amber · 5xx red Trunk identified, or shown raw Downloads trace file · PCAP Analytics says what failed, the SIP trace says how, and the INVITE domain says which trunk
Analytics participants, sessions and segments, SIP trace records and trunk configuration converge on one per-call investigation view.
Read this diagram as text

Three Genesys Cloud sources on the left converge on one per-call investigation view on the right.

  1. Left panel, "Genesys Cloud data model: three sources, one question".
  2. Analytics (the conversation details query) returns a nested tree: Conversation (voice, interval), then Participants (purpose: customer, external, agent), then Sessions (ani, dnis, edgeId, provider), then Segments (disconnectType, errorCode, sipResponseCodes).
  3. Telephony (GET /api/v2/telephony/siptraces) returns one record per Call-ID with From and To, ruriDomain, a trace file and a PCAP.
  4. Trunk config (the edges trunks and external trunk bases endpoints) supplies ACL IP ranges, BYOC termination FQDNs and SIP server and proxy hosts.
  5. All three sources converge on the right panel, "One focal view: per-call investigation".
  6. The view shows error segments, purpose-aware; SIP codes, with 4xx shown amber and 5xx shown red; the trunk, identified or shown raw; and downloads of the trace file and PCAP.
  7. A banner says analytics says what failed, the SIP trace says how, and the INVITE domain says which trunk.

04

Hunting one response code across many calls

Sometimes the question is narrower: show me every 503 Service Unavailable from yesterday, or every 480 Temporarily Unavailable on the sales line. Ticking response codes – presets from 400 to 504 with their reason phrases, plus any custom three-digit code – adds a deep scan. For each conversation on the current page, the server fetches its SIP trace metadata from /api/v2/telephony/siptraces for its own time window, reads the raw SIP text that each trace record carries, parses each “SIP/2.0 NNN Reason” status line and de-duplicates by code.

Rows are then filtered to calls whose codes intersect your selection, and a SIP Codes column appears with 4xx in amber and 5xx in red. The scan runs five conversations at a time to protect the organisation’s API rate limits, shows a cancellable progress bar and keeps partial results if you stop it. We documented one subtlety openly in the guide: with no codes ticked, a call matches if its traces contain any status line at all, including 1xx and 2xx – so tick the codes you are actually hunting.

The response-code deep scan Five steps across the top: query a page of 25 failed voice conversations from analytics; fetch each conversation's SIP trace metadata, five at a time; read the raw SIP text each trace record carries; parse each SIP/2.0 status line and de-duplicate by code; and filter the rows to the codes selected. Below, an illustrative results table shows a SIP Codes column with a red 503 badge, an amber 480 badge and a row with none found, and a note that with no codes ticked any parseable status line matches. INSIDE SIP TRACE ANALYSER Hunting one response code 1 · QUERY 25 failed calls 2 · METADATA 5 at a time 3 · READ raw SIP text 4 · PARSE SIP/2.0 NNN Reason 5 · FILTER codes you ticked CONVERSATION DIRECTION DISCONNECT TRUNK SIP CODES 3f2a… Inbound error Carrier A 503 9c41… Outbound transportFailure Carrier B 480 1b7e… Inbound system — none found ILLUSTRATIVE ROWS No codes ticked = any parseable status line matches, even 1xx or 2xx. Tick the codes you are hunting.
The response-code deep scan: query a page of failed calls, fetch trace metadata, parse the raw SIP text in each record, filter by code.
Read this diagram as text

A five-step pipeline headed "Hunting one response code" runs left to right across the top, above an illustrative results table and a warning note.

  1. Step 1, "Query": "25 failed calls". An arrow leads to step 2.
  2. Step 2, "Metadata": "5 at a time". An arrow leads to step 3.
  3. Step 3, "Read": "raw SIP text". An arrow leads to step 4.
  4. Step 4, "Parse": "SIP/2.0 NNN Reason". An arrow leads to the final step.
  5. Step 5, "Filter": "codes you ticked".
  6. Below the steps, a table labelled "Illustrative rows" has the columns Conversation, Direction, Disconnect, Trunk and SIP codes.
  7. Row one, highlighted: conversation "3f2a…", Inbound, disconnect "error", trunk "Carrier A", with SIP code 503 shown as a red error badge.
  8. Row two: conversation "9c41…", Outbound, disconnect "transportFailure", trunk "Carrier B", with SIP code 480 shown as an amber warning badge.
  9. Row three: conversation "1b7e…", Inbound, disconnect "system", no trunk, and SIP codes "none found".
  10. A warning note at the bottom reads: "No codes ticked = any parseable status line matches, even 1xx or 2xx. Tick the codes you are hunting."

05

Which trunk carried it? Three signals, never a guess

Attributing a failure to a carrier trunk is where most of the engineering went. For Edge-routed calls the analytics record gives you the Edge, and one Edge hosts many trunks, so the app refuses to guess. A trunk name appears only when it is positively identified, in priority order. First come analytics signals: a session provider string matching a known trunk name, an edgeId whose Edge hosts exactly one trunk, or an explicit trunk name field on the session.

The ground truth is the INVITE’s request-URI domain, resolved in the background for each visible row. That domain is the trunk’s BYOC FQDN or the carrier’s IP address. FQDNs are matched against a learned domain-to-trunk map; IP addresses are matched against the trunks’ SIP access-control lists, exact address first and then CIDR range. ACK records are ignored, because their request-URI points at the media server rather than the carrier.

To build that map, the app harvests trunk configuration at sign-in: all trunks, the external trunk bases’ access-control IP ranges and BYOC termination FQDNs, and each trunk’s outbound-proxy and SIP-server hostnames, auto-matching domains to trunks by shared name tokens. It then samples the last 24 hours of traces for INVITE domains, and anything it cannot match appears once in a trunk setup panel for an engineer to confirm. Filtering by trunk hides only rows positively identified as another trunk – unidentified rows stay visible.

06

From metadata to packets

The per-call detail view renders each SIP trace record as a card: Call-ID, direction, From and To URIs with a live reverse-DNS lookup of the host part, start and end times, any trunk field and any extra metadata the API returned. Well-known field aliases map to labelled rows and unrecognised fields are listed dynamically, so new API fields appear without a code change. A collapsible raw-JSON view and the full analytics detail record, rendered as a navigable tree with a Copy JSON button, sit one click away.

What the tool deliberately does not do is draw a SIP message ladder. It renders trace metadata, not the message exchange, and hands the raw evidence to the right tool: the downloadable trace file and the PCAP, which open in a network protocol analyser whose flow graph does that job properly. Because Genesys keeps traces for a limited window, the app assumes 21 days – older conversations still show their analytics detail, but signalling-level work should focus on recent history.

07

Read-only on configuration, and built the way we build

SIP Trace Analyser signs in with an OAuth client-credentials grant whose role reads analytics conversation details and telephony data – SIP trace metadata, PCAP download, trunks and external trunk bases – plus the organisation name. Nothing in the organisation is ever changed. Every Genesys call is a read except the PCAP request, which the API models as creating a download and so needs the Telephony > Pcap > Add permission; the analytics query is a POST only because of the API’s shape. There is no database and no local trace store: trace records are parsed in memory, the trace file is generated on request from them, PCAPs are fetched from a pre-signed link, and nothing is written to disk. Tokens are refreshed proactively and on any 401, so long investigations do not die mid-hunt.

The trunk-attribution rules came straight from our telephony practice, where a single Edge carrying several carriers is an everyday design. A Senior Business Consultant captured the investigation as user stories with acceptance criteria, an IT Systems, Telecoms & SIP Engineer and a Solution Architect designed the classification and attribution rules, and a Systems Integration Tester proved them against WebRTC-only calls, expired traces, unmapped domains and shared Edges – backed, as always, by the whole practice.

How it compares

Native SIP diagnostics and SIP Trace Analyser

Both read the same Genesys signalling data. The difference is scope and attribution.

AspectNative Genesys Cloud CXQVCCS SIP Trace Analyser
Starting pointThe SIP Diagnostics section of one interaction’s Details tab.A search across a date range for voice conversations that ended with error, system or transportFailure.
Signalling evidenceDownload the interaction’s SIP traces file and PCAP for a network protocol analyser.Trace metadata cards per SIP Call-ID, with trace-file and PCAP downloads for the same analysis.
Response codesVisible inside the PCAP’s signalling history; analytics segments can record sipResponseCodes.Shows segment sipResponseCodes and scans trace files across a page of calls for chosen codes such as 480 or 503.
Error classificationdisconnectType per segment in the analytics record.Purpose-aware rules: system counts only on external legs, and WebRTC, ICE and DTLS media errors are excluded.
Trunk attributionThe analytics session carries edgeId and provider rather than a trunk.Positive identification from the INVITE request-URI domain, ACL IP ranges and BYOC FQDNs; never a guess.
Coverage and retentionPCAPs for external-trunk calls, kept for 21 days; none for station-to-station; best-effort under load.Relies on the same data, so the same limits apply; it assumes 21 days of trace retention.
PermissionsTelephony > Plugin > All and Telephony > Pcap > Add and View.Analytics conversation detail view plus telephony read, and Pcap > Add only to request a PCAP; no configuration is ever changed.

Native capabilities are as described in the Genesys Cloud Resource Center and Developer Center at the time of writing.

The takeaways

  • Find every failed voice call in a window, not one interaction at a time.
  • Purpose-aware classification separates real SIP failures from normal platform behaviour.
  • Hunt specific response codes such as 480 or 503 across raw traces.
  • Attribute failures to a carrier trunk with evidence, never a guess.
  • Hand the trace file or PCAP straight to the carrier or a protocol analyser.

SIP Trace Analyser is part of the QVCCS App Suite, included with every Managed Professional Services tier and built by the same certified team that designs, builds and supports Genesys Cloud CX solutions.

Read the user guide Managed Professional Services

Last reviewed

Questions about what you have read?

Clients, partners and people introduced to us can reach the specialists behind our applications and articles directly.

Who to contact