From 1dbefd54572d1d9132d2e86b522ddc9f689dc8ef Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Mon, 22 Jun 2026 09:45:01 -0700 Subject: [PATCH] sync: auto-sync from GURU-5070 at 2026-06-22 09:44:14 Author: Mike Swanson Machine: GURU-5070 Timestamp: 2026-06-22 09:44:14 --- .claude/memory/MEMORY.md | 1 + .../reference_packetdial_oit_netsapiens.md | 27 +++++++++++++++++++ errorlog.md | 2 ++ 3 files changed, 30 insertions(+) create mode 100644 .claude/memory/reference_packetdial_oit_netsapiens.md diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md index ceb56916..35066b47 100644 --- a/.claude/memory/MEMORY.md +++ b/.claude/memory/MEMORY.md @@ -141,6 +141,7 @@ - [Radio show co-host — Tara, not Tom](radio_show_no_cohost_named_tom.md) — Co-host in 2014-s6e19 and 2016-s8e43 is Tara. "Tom" was hallucinated; rename complete. - [Proposal: centralize config in identity.json](proposal_identity_centralization.md) — Rationale for the identity.json machine-config centralization (claudetools_root, ollama/python); now implemented. - [ACG MSP tool stack](reference_acg_msp_stack.md) — ScreenConnect/CW Control, Splashtop, Syncro, Datto RMM, Datto EDR/AV, GuruRMM are ACG's OWN tools; do not flag as foreign/threat on managed machines (Defender-off is expected when Datto AV is active). +- [VoIP vendor stack: PacketDial / OIT / NetSapiens / YMCS](reference_packetdial_oit_netsapiens.md) — PacketDial = ACG's VoIP-dept brand (pbx.packetdial.com, the `packetdial` skill); NetSapiens = the PBX platform (API v2); OIT/OITVOIP = white-label wholesaler running NetSapiens (api.ucaasnetwork.com); reseller `91912.service`. YMCS (Yealink) = phone device-mgmt, pairs with the PBX. - [ACG Website Hosting](project_azcomputerguru_hosting.md) — azcomputerguru.com is hosted on IX Web Hosting via cPanel. - [jq on Windows emits CRLF](feedback_jq_crlf_windows.md) — winget jq outputs CRLF; trailing \r silently breaks `for x in $(jq ...)` loops + read-from-@tsv. Override `jq(){ command jq "$@"|tr -d '\r'; }`. Windows-build-specific (passes on Mac/Linux). - [ScreenConnect RESTful API auth](reference_screenconnect_api.md) — CTRLAuthHeader = raw api_secret (no Basic/b64) + Origin header; now wrapped by the /screenconnect skill. Verified surface: GetSessionsByName/GetSessionDetails + writes SendCommand/SendMessage/UpdateCustomProperties + parameterized self-tagging installer. Still NO full-fleet inventory method (GetSessions missing). diff --git a/.claude/memory/reference_packetdial_oit_netsapiens.md b/.claude/memory/reference_packetdial_oit_netsapiens.md new file mode 100644 index 00000000..f0f5aa8b --- /dev/null +++ b/.claude/memory/reference_packetdial_oit_netsapiens.md @@ -0,0 +1,27 @@ +--- +name: reference_packetdial_oit_netsapiens +description: VoIP vendor stack — PacketDial = ACG's VoIP department/brand; runs on NetSapiens (the PBX platform) supplied by OIT/OITVOIP (white-label wholesaler). YMCS = Yealink device mgmt. +metadata: + type: reference +--- + +ACG's VoIP vendor stack, top to bottom (don't conflate these): +- **PacketDial** = ACG's own **VoIP department / customer-facing brand**. `pbx.packetdial.com` is + the ACG-branded host. The `packetdial` skill is ACG's VoIP-management tool — keep it named + `packetdial` (ACG's brand) even though it speaks the NetSapiens API. +- **NetSapiens** = the underlying **PBX/UCaaS software platform** (open API v2, v44.4.10). What the + skill actually talks to. +- **OIT / OITVOIP** = the **white-label wholesale provider** that runs NetSapiens and resells it to + MSPs; ACG buys VoIP wholesale from OIT. `api.ucaasnetwork.com` is the OIT/NetSapiens host (same + platform as `pbx.packetdial.com`, different white-label hostname). Reseller territory + `91912.service` is ACG's account on OIT's platform; the reseller API key is vaulted at + `msp-tools/oitvoip.sops.yaml` (key-id `nsr_hSGUB5Wo`). +- **YMCS (Yealink Management Cloud Service)** = separate Yealink **device-management** cloud for the + physical phones (`us-api.ymcs.yealink.com`); pairs with the PBX (phones register to + pbx.packetdial.com). API creds `services/yealink-ymcs.sops.yaml`; portal login + `infrastructure/voip-phones.sops.yaml`. + +One line: customer-facing brand = **PacketDial (ACG)**; platform = **NetSapiens**; wholesaler = +**OIT/OITVOIP**; phone device-mgmt = **YMCS (Yealink)**. + +Related: [[reference_resource_map]] diff --git a/errorlog.md b/errorlog.md index 38528954..27a8ecdf 100644 --- a/errorlog.md +++ b/errorlog.md @@ -17,6 +17,8 @@ Categories (the `[type]` tag): _(none)_ = skill/command execution failure · +2026-06-22 | GURU-5070 | packetdial/vendor-model | [correction] conflated PacketDial/NetSapiens/OIT; correct: PacketDial = ACG's VoIP-dept brand, NetSapiens = the PBX platform, OIT/OITVOIP = white-label wholesaler running NetSapiens (api.ucaasnetwork.com) + 2026-06-22 | GURU-5070 | packetdial | HTTP 400 DELETE https://pbx.packetdial.com/ns-api/v2/domains/arizonacomputerguru/number-filters: {"code":400,"message":"The default answering rule cannot be deleted."} [ctx: cmd=unblock-numbers] 2026-06-22 | GURU-5070 | packetdial | HTTP 400 DELETE https://pbx.packetdial.com/ns-api/v2/domains/arizonacomputerguru/number-filters: {"code":400,"message":"The default answering rule cannot be deleted."} [ctx: cmd=unblock-numbers]