collabSupport/docs/mpp-phone-data-inventory.md
jmcqueen f7953b8eb5 Add MPP desk phone diagnostics follow-up to /phonestatus via relay.
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>
2026-07-28 18:01:01 -04:00

12 KiB
Raw Blame History

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 14, headset, speaker, mute, MWI cadence/color (Line 1 Green = registered)
Ext 14 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 14)

Field Ext 1 (782) Ext 24
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 13 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.xml or 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:

  1. /Download%20Status.json — provisioning/firmware history, MIC cert warnings
  2. /ns.json — switch port / LLDP neighbor
  3. /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.