Wire CP-78xx probe discovery, relay phone-probe commands, and a chat follow-up message so store desk phones get registration, switch, and provisioning detail alongside DECT and WAN diagnostics. Co-authored-by: Cursor <cursoragent@cursor.com>
12 KiB
MPP Phone Probe — Data Inventory
Reference catalog for Cisco CP-78xx phones on Webex Calling (WxC MPP firmware).
Validated against lab store 782 (10.43.206.157, CP-7841-3PCC, MAC CC98914F6799).
Use this document to decide what to surface in /phonestatus, tickets, and diagnostics.
How data flows
Webex Control Hub Phone HTTPS (via DC relay agent)
───────────────── ────────────────────────────────
collectPhoneStatus() → GET /Status.json ← primary (parsed today)
MAC, name, IP GET /Download%20Status.json ← fetched, not parsed
product, webexId GET /ns.json ← fetched, not parsed
GET /basic/System.json ← fetched, not parsed
GET /admin/* ← login HTML (no password)
Auth: No credentials required for JSON endpoints when Web Server is enabled (Settings → Security → Web Access). Webex does not provide per-phone admin passwords.
Typical probe time: ~11s for 8 sequential GETs through the relay (store 782).
CLI:
node scripts/probePhone.js probe 782 --ip 10.43.206.157
node scripts/probePhone.js raw 782 --ip 10.43.206.157 --save-dir tests/fixtures/mpp/
Source A — Webex inventory (before probe)
From collectPhoneStatus() / discoverDeskPhones(). Used to find phones and match MAC ↔ IP.
| Field | Example (782) | Notes |
|---|---|---|
mac |
CC98914F6799 |
Normalized to colon format in probe target |
name |
Store 00782 CP-7841 |
Display name in Control Hub |
product |
Cisco 7841 |
Used to classify MPP vs room/DECT |
ip |
10.43.206.157 |
From Meraki or Webex ipAddress |
webexId |
device UUID | Cross-reference to Control Hub |
source |
meraki / webex |
Where IP came from |
capabilities |
["xapi"] |
Present on WxC phones; not a probe blocker |
Not available from Webex alone: live registration state, firmware load name, switch port, provisioning history, SIP registrar IP.
Source B — /Status.json (~12 KB)
Phone web UI: Info → Status. Primary source — fully parsed into parsed + verdict.
Structured fields extracted today (parseStatusJson)
| Group | Fields | Example (782) |
|---|---|---|
| Device | product, mac, firmware, serial, hostname | CP-7841-3PCC, cc:98:91:4f:67:99 |
| Network | ipv4, netmask, gateway, dns1, dns2, vlan, connectionType, ipStatus | 10.43.206.157, VLAN 4095, DHCP, OK |
| Registration | registration (Ext 1), lines[] per extension |
Registered → 150.253.156.211 |
| SIP counters | messagesSent, messagesRecv | 82 / 81 |
| Reboot history | last 5 reasons + timestamps | Provisioning, Upgrade, Cloud Triggered |
| Health verdict | healthy, warnings[], info[] |
healthy: true |
All sections in raw Status.json (~93 populated fields on 782)
| Section | Useful for | Key fields |
|---|---|---|
| System Information | Identity | Host Name, Primary NTP (ntp.broadcloudpbx.net) |
| IPv4 Information | Network triage | IP Status, DHCP/Static, IP, mask, gateway, DNS |
| IPv6 Information | IPv6 rollout | Usually empty/initializing on store LAN |
| Reboot History | "Why did it reboot?" | 5 entries: Provisioning / Upgrade / Cloud Triggered + timestamp |
| VPN Status | VPN phones | VPN Connected, client address (No on 782) |
| Product Information | Inventory match | Product, Serial, VID, MAC, Software/Hardware version, Client Cert, WxC auth type |
| Phone Status | Uptime & health | Current time, Elapsed Time, SIP byte/packet counters, Operational VLAN, SW/PC Port link, Upgrade Status |
| Dot1x Authentication | 802.1X stores | Transaction status (Authenticated), Protocol |
| LED Status | Visual state | Line 1–4, headset, speaker, mute, MWI cadence/color (Line 1 Green = registered) |
| Ext 1–4 Status | Core voice health | Registration State, Last Registration At/IP, Next Registration In Seconds, MWI, Hoteling, Extended Function |
| Paging Status | Overhead paging | Multicast Rx/Tx packets |
| XML Streaming Status | Cisco XML apps | Streaming Rx packets |
| TR-069 Status | Remote mgmt | Feature disabled on WxC MPP |
| PRT Status | Problem report tool | Generation/upload status (usually empty) |
Per-extension detail (Ext 1–4)
| Field | Ext 1 (782) | Ext 2–4 |
|---|---|---|
| Registration State | Registered | Not Registered |
| Last Registration At | timestamp | — |
| Last Registration IP | 150.253.156.211 | — |
| Next Registration In Seconds | ~70 | — |
| Message Waiting | No | No |
| Hoteling State | Disabled | Disabled |
Source C — /Download%20Status.json (~3 KB)
Phone web UI: Info → Download Status. Fetched in probe; not parsed into parsed today.
| Section | Fields | Example (782) |
|---|---|---|
| Firmware Upgrade Status | 1–3 history entries | [date][https://binaries.webex.com/.../sip78xx....loads]Upgrade Succeeded. |
| Transition Authorization Status | WxC migration | migration-service-a.wbx2.com — Authorization Succeeded |
| Provisioning Status | Resync history | [https://cisco.sipflash.com:443/*]Resync Succeeded. |
| Custom CA Status | Custom CA provisioning | Empty |
| MIC Cert Refresh Status | Certificate renewal | MIC Cert Download Failed — file not found (candidate warning) |
Good for: "Did provisioning/firmware succeed recently?" without Control Hub.
Source D — /ns.json (~9 KB)
Phone web UI: Info → Network Statistics. Fetched in probe; not parsed today.
| Section | Useful fields | Example (782) |
|---|---|---|
| Ethernet Information | Tx/Rx frames, broadcasts, multicasts, unicasts | ~2M frames each direction |
| Network Port Information | Error counters, frame size histogram | All zeros (clean link) |
| LLDP/CDP neighbors | Switch hostname, port, mgmt IP | SW00782R, Port 45, 10.229.105.251 |
| Port speed | Link speed/duplex | 100M Full |
| Access Port Information | PC port stats | All zeros (PC port disabled) |
Good for: "Which switch port is this phone on?" — often more useful than Webex for physical troubleshooting.
Source E — /basic/System.json (~8 KB)
Phone web UI: Settings → System (configuration, not live status). Fetched; not parsed today.
Would replace broken cfgParsed from /admin/cfg.xml.
| Section | Fields | Example (782) |
|---|---|---|
| System Configuration | Enable Web Server, Survivability Test Mode | Web Server: Yes |
| Network Settings | IP Mode (Dual), IPv4/IPv6 DHCP vs static | DHCP |
| HTTP Proxy | Proxy Mode, WPAD, PAC URL, host/port, auth | Off |
| 802.1X Authentication | Certificate Select | Manufacturing installed |
| Optional Network | Host Name, Domain (editable) | Empty |
| VPN Settings | Server, username, connect on boot | Empty |
Good for: Confirming web server enabled, proxy misconfig, 802.1X cert source.
Source F — Legacy XML paths (not useful on WxC MPP)
| Path | What you get | Auth |
|---|---|---|
/admin/status.xml |
Admin login HTML (HTTP 200, not XML) | Admin password |
/admin/cfg.xml |
Admin login HTML | Admin password |
/status.xml |
403 Forbidden redirect page | Admin Access required |
cfgParsed: {} and cfg: web=? in CLI output are expected without admin credentials.
Source G — Explore-only (not in default probe)
| Path | Purpose |
|---|---|
/Debug%20Info.json |
Debug bundle metadata |
/basic/init.json |
SPA tab/layout definitions |
/admin/advanced |
Legacy admin HTML |
node scripts/testMppPhone.js --explore --ip 10.x.x.x
Probe response shape (today)
| Output key | Content |
|---|---|
parsed |
Structured data from /Status.json |
verdict |
Health summary (healthy, warnings, info) |
summary |
HTTP probe stats (ok paths, bytes, timing) |
statusJson |
Raw JSON string (in raw/API responses) |
probes[] |
Per-path status, size, snippet/body (raw mode) |
cfgParsed |
Empty unless real /admin/cfg.xml XML |
downloadStatusJson |
Truncated in summary probe; full in raw mode |
Suggested tiers for product decisions
Tier 1 — Likely want in /phonestatus or tickets
| Signal | Source | Why |
|---|---|---|
| Registration state | Status.json Ext 1 | #1 voice issue |
| Last registration IP | Status.json | Confirms WxC registrar |
| Product + MAC + IP | Status + Webex | Identity |
| Firmware version | Status.json | Upgrade troubleshooting |
| Uptime / elapsed time | Status.json | Recent reboot? |
| Latest reboot reason | Status.json | Provisioning vs power vs cloud |
| Switch + port | ns.json (not parsed yet) | Physical layer |
| VLAN | Status.json | Voice VLAN verification |
| Healthy / warnings | verdict |
Single pass/fail |
Tier 2 — Useful for deeper triage
| Signal | Source |
|---|---|
| Last provisioning resync | Download Status.json |
| Last firmware upgrade URL + result | Download Status.json |
| WxC transition auth history | Download Status.json |
| SIP message/byte counters | Status.json |
| Link speed/duplex | Status.json + ns.json |
| 802.1X status | Status.json |
| Web server / proxy config | System.json |
| LED state (line 1 green) | Status.json |
| MWI / hoteling | Status.json Ext 1 |
| MIC cert refresh failures | Download Status.json |
Tier 3 — Debug / rarely needed
| Signal | Source |
|---|---|
| Full Ethernet error counters | ns.json |
| IPv6 details | Status.json |
| TR-069 / XML streaming / paging pkt counts | Status.json |
| All 4 extension slots | Status.json |
| Raw probe bodies | probePhone.js raw |
| Debug Info.json | explore mode |
Gaps — not available without admin password
- SIP proxy, registrar, line DN, display name (in
/admin/cfg.xmlor line config JSON) - Phone reboot/resync commands (
/admin/reboot,/admin/resync— mutating, intentionally separate) - Admin-only configuration changes
Webex Control Hub has user/number assignment; phone web UI has line config behind admin login.
Lab snapshot — store 782
| Item | Value |
|---|---|
| Product | CP-7841-3PCC |
| MAC | CC98914F6799 |
| IP / VLAN | 10.43.206.157 / 4095 |
| Firmware | sip78xx.12-0-7MPP0501-20260317-aa82ce7433.loads |
| Registration | Registered → 150.253.156.211 |
| Uptime | ~22 days |
| Switch | SW00782R Port 45 (10.229.105.251) |
| Last reboot | Provisioning 07/28/2026 15:29 |
| Last resync | cisco.sipflash.com 07/28/2026 15:30 |
| MIC cert | Download failed (not renewed) |
Implementation notes
Highest-value unparsed additions:
/Download%20Status.json— provisioning/firmware history, MIC cert warnings/ns.json— switch port / LLDP neighbor/basic/System.json— web server / proxy / 802.1X config (replaces cfg.xml path)
Code references:
- Probe paths:
integrations/cisco-mpp-phone/probes.js - Status.json parser:
integrations/cisco-mpp-phone/statusJson.js - Discovery:
services/phoneDiscovery.js - Capture API:
services/phoneStatus/capturePhoneProbe.js - Fixture:
tests/fixtures/mpp/status-782-live.json
Last validated: 2026-07-28 against live probe of 10.43.206.157 via relay.