Butler Use Case

Getting someone to explain my configuration

Routing tables, regular expressions and SDP profiles, read back to you in plain English. And the same capability facing the other way: describe the match you want, get the regex.

The Situation

Every session border controller accumulates configuration that outlives the person who wrote it: routing tables with forty entries, regular expressions nobody remembers the intent of, and SDP profiles named after a project from four years ago.

None of it is hard to read. The cost is that reading it requires the one engineer who knows the box, and that engineer is busy, on holiday, or has left. This is the category where Butler behaves least like a search tool and most like a colleague who has read the manual.

The Answers

Pick a question, read the whole exchange

Both of these ran against a synthetic demo fleet, so the device names and addresses are ours rather than a customer’s.

#voice-opsChat
EN

Engineer 09:38
@VI - Butler Hi Butler can you tell me my routing table on SBC-01 ?
B

VI - Butler APP 09:38
voice-intelligence_get_host_list
I see your fleet, Sir. You have three ProSBC units:
SBC-SUT-00 192.168.101.63SBC-SUT-01 192.168.101.96SBC-SUT-02 192.168.101.88
I don’t see an “SBC-01” specifically. Would you like me to retrieve the routing table from SBC-SUT-01, or perhaps you meant one of the other units?
EN

Engineer 09:39
@VI - Butler Butler, yes
B

VI - Butler APP 09:39
device_action  action=list_routes, host_id=SBC-SUT-01
Here is the routing table for SBC-SUT-01, Sir. 42 routes configured.
RELAY ROUTES (4)000_RELAY_250 ^0[01]50\+?\d{8,}$ → PROSBC_SUT00_250000_RELAY_251 ^0[01]50\+?\d{8,}$ → PROSBC_SUT00_251002_RELAY_250 ^2[01]50\+?\d{8,}$ → PROSBC_SUT02_250002_RELAY_251 ^2[01]51\+?\d{8,}$ → PROSBC_SUT02_251 INTERNATIONAL (2)001_INTERNATIONAL_00 ^115[01]\+(?!1)\d*$ → INTERNATIONAL_ATT001_INTERNATIONAL_01 ^105[01]\+(?!1)\d*$ → INTERNATIONAL_VERIZON DOMESTIC (2)001_DOMESTIC_00 ^115[01]\+?1?\d{10}$ → DOMESTIC_ATT001_DOMESTIC_01 ^105[01]\+?1?\d{10}$ → DOMESTIC_VERIZON INGEST (34)SIPP00_250 / SIPP00_251 17 routesSIPP01_250 / SIPP01_251 17 routes
All routes have priority 10, weight 100, and are enabled.
EN

Engineer 09:41
@VI - Butler Butler, can you please explain the routing briefly in plain English? I’m on mobile and cant figure out the regex now
B

VI - Butler APP 09:41
Of course, Sir. In plain English:
How calls flow through SBC-SUT-01

  • Incoming from carriers. When a call arrives from a carrier, the SBC adds a prefix to the dialled number. A number like +1 415 555 1234 becomes 0051+14155551234 for the first domestic trunk.
  • Outgoing from your network. Calls matching 0xxx patterns go to SUT-00 on the relay routes, and calls matching 2xxx patterns go to SUT-02.
  • International against domestic. Numbers starting 115 or 105 route as international, and the same prefixes with a US ten-digit number route as domestic.
Bottom line: the SBC prepends a four-digit code to track which carrier brought the call, then routes it to the correct destination or back out to the carrier network. Is there a specific route you need clarification on?

“I’m on mobile and cant figure out the regex now” is the whole argument in one sentence, typos and all. The engineer is away from their desk, the information is in a form that needs a desk, and one message removes the dependency. Worth noticing earlier in the thread too: asked about a box called SBC-01, Butler listed what actually exists and asked which one was meant, rather than picking the closest name and running with it.

#voice-opsChat
EN

Engineer 10:22
@VI - Butler I’ve just taken over this SBC and I don’t know it. Walk me through what it’s actually doing, which NAPs carry traffic, which routes are live, and which are configured but not being used.
B

VI - Butler APP 10:23
device_action  list_naps, list_routes, get_nap_status × 3 hosts, in parallel
You have three ProSBC units: SBC-SUT-00 at the head of the chain, SBC-SUT-01 in the middle, SBC-SUT-02 at the tail. Each carries these NAPs:
NAP PURPOSE STATUSDOMESTIC_ATT domestic carrier EnabledDOMESTIC_VERIZON domestic carrier EnabledINTERNATIONAL_ATT international carrier EnabledINTERNATIONAL_VERIZON international carrier EnabledBAD_NAP test / ingest, SUT-00 only Enabled INTER-SBCPROSBC_SUT00_250 / _251 routes to SUT-00PROSBC_SUT01_250 / _251 routes to SUT-01PROSBC_SUT02_250 / _251 routes to SUT-02 EXTERNAL, SUT-01 ONLYVOIP_MS external ITSP
What is live against what is configured. All 9 NAPs on SUT-00 and SUT-01 show available in status. SUT-02 shows 8, with no VOIP_MS. They are all enabled in config and the runtime agrees, so this is a live system with active call legs, 8 currently up across the fleet.
B

VI - Butler APP 10:23
Bottom line

  • This is a multi-carrier SBC cluster handling domestic US calls over two carrier trunks and international calls over two separate international trunks.
  • It also carries test traffic from SIPp generators, and inter-SBC routing for load distribution and resilience.
  • The SUT-02 unit has no external ITSP trunk and serves as a downstream node for relayed traffic.
Want me to pull recent call volume by NAP, or check which routes are actually seeing traffic?

An illustration rather than a case study: nobody has asked this in anger, because both of the teams using Butler already knew their own networks. It is here because it is the first day on an unfamiliar box, and the answer does the thing that matters on a first day, which is separating what is configured from what is actually carrying calls. Note the last line as well. It got to the end of a complete answer and then offered the question you would have asked next.

Ask It This Way

The prompts, and where each one leads

Nothing here needs you to know a field name or navigate to a configuration page.

Can you tell me my routing table on sbc-01?
When you’d ask

The obvious first question of anyone handed an unfamiliar box.

What comes back

The routes as configured, in the order they are evaluated, in the thread rather than behind a login.

Then ask

Which of these actually carried traffic this week?Explain the third one in plain English
Explain the regex in my international route on sbc-01
When you’d ask

A rule is doing something you did not expect and you need to know what it actually matches, not what it was meant to.

What comes back

The expression broken down piece by piece, with what each fragment admits and what it excludes.

Then ask

Would 00 1 555 0147 match it?Say that in plain English
Can you please explain the routing briefly in plain English? I’m on mobile and can’t figure out the regex now
When you’d ask

You are away from your desk and somebody needs an answer now. Telling Butler your constraint changes how it answers.

What comes back

A short prose summary sized for a phone screen, with no syntax to parse.

Then ask

ShorterWhich route would this number take?
More, including the first-day question

Can you list the SDP description for each profile. Include the description itself and the profile name
What do you know about the ProSBCs?
I’ve just taken over this SBC. Walk me through what it’s actually doing: which NAPs carry traffic, which routes are live, and which are configured but unused.
Working With It

How to get the most out of it

Ask a direct question if you want a judgment. Butler reads your configuration back to you rather than scoring it unprompted, so put the question you actually have: whether this rule does what you intended, or which of these routes would catch a given number.
It knows the platform as well as your data, because the ProSBC and Tmedia knowledge base is available to it, so “how does blacklisting work on this platform” is as answerable as “what is in my blacklist”. Customers have opened with exactly that kind of question before looking at a single call.
Sanity-check a regex before you put it live. Butler hands one back with what it catches and what it excludes spelled out, so test it against a handful of your own numbers first. Nothing reaches a live route until you ask, and the confirmation flow on the next page takes over when you do.
Butler Use Cases

One number and maybe a time. Butler finds the call and says whose side ended it.

Counts, groupings, thresholds and KPIs across a population of calls.

Explain my configuration

Routing tables, regex and SDP profiles in plain English.

Ask in French, Spanish or Portuguese, get the answer from the English documentation.

Changes, reports, files and email, each one waiting for your yes.

Paste the complaint in the customer’s own words and let Butler find the call.

All Butler use cases

Ask Butler what your own routing does

Deployed in 48 hours, month to month, in the chat app your team already has open.

By submitting this form, your information will be processed in accordance with our Privacy Policy.