CLARIFIED (2026-07-10): - Extension 101: Natalya (Receptionist) - M365 Account: Customer Service (customerservice@valleywideplastering.com) - Phone: Test phone from yesterday (MAC 805e0cdd71b1 / Last 4: 71b1) - Status: Phone already registered, ready for user provisioning UPDATED: - Matched users: 11 -> 12 (Natalya now matched) - Unmatched users: 7 -> 6 (removed Natalya from unmatched list) - Created provision-natalya-101.md with step-by-step commands FILES MODIFIED: - extension-mapping.md: Updated ext 101 to show customerservice@ match - PROVISIONING-STATUS.md: Added clarified section for ext 101 - README.md: Updated user counts and added provision-natalya-101.md link - provision-natalya-101.md: NEW - Complete provisioning guide for receptionist NEXT ACTIONS: 1. Upload 11-user CSV to PacketDial (unchanged) 2. Provision extension 101 separately (commands documented) 3. Remaining 6 unmatched extensions need clarification Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
5.5 KiB
5.5 KiB
Provision Extension 101 - Natalya (Receptionist)
Date: 2026-07-10 Status: Ready to provision Phone: Already registered (test phone from yesterday)
User Information
Extension: 101
Name: Natalya (Receptionist)
M365 Account: Customer Service
Email: customerservice@valleywideplastering.com
Phone MAC: 805e0cdd71b1
Phone Last 4: 71b1
Domain: vwp.91912.service
Current Status
Phone Hardware:
- MAC: 805e0cdd71b1
- Status: Already registered (Status 1) with test credentials
- YMCS Device ID: (need to look up)
PacketDial:
- User 101: Does NOT exist yet (needs to be created)
- Device for 101: Does NOT exist yet (will be created with user)
YMCS:
- Physical phone: Exists and online
- SIP account: Currently has test credentials (need to update with real user 101 credentials)
Provisioning Steps
Step 1: Create User 101 in PacketDial
bash .claude/scripts/py.sh .claude/skills/packetdial/scripts/ns.py \
create-user vwp.91912.service --body '{
"user": "101",
"name-first-name": "Natalya",
"name-last-name": "Receptionist",
"email": "customerservice@valleywideplastering.com",
"emergency-address-id": "a-6a395c03d4cfe"
}' --confirm
Step 2: Create SIP Device for Extension 101
bash .claude/scripts/py.sh .claude/skills/packetdial/scripts/ns.py \
create-device vwp.91912.service 101 --body '{
"device": "101a@vwp.91912.service"
}' --confirm
Step 3: Get Auto-Generated SIP Password
bash .claude/scripts/py.sh .claude/skills/packetdial/scripts/ns.py \
devices vwp.91912.service 101 | \
python3 -c "import sys, json; d=json.load(sys.stdin); print('SIP Password:', d[0].get('device-sip-registration-password'))"
Save this password - you'll need it for YMCS update.
Step 4: Find Existing YMCS SIP Account
The test phone already has a SIP account. Find it:
bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py devices | grep -i "71b1" -A 20
Extract:
- Device ID (the "id" field)
- Look for bound accounts
# Get device ID from above, then check bound accounts
bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \
raw GET /v2/dm/devices/{DEVICE-ID}/boundAccounts
Extract the account ID from the bound account.
Step 5: Update Existing YMCS SIP Account with New Credentials
bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \
raw PATCH /v2/dm/sipAccounts/{ACCOUNT-ID} --body '{
"registerName": "101@vwp.91912.service",
"username": "101@vwp.91912.service",
"password": "{SIP-PASSWORD-FROM-STEP-3}",
"label": "Ext 101 - Natalya (Receptionist)",
"displayName": "Natalya",
"sipServer1": {
"host": "pbx.packetdial.com",
"port": 5060
},
"remark": "Valley Wide Plastering - customerservice@valleywideplastering.com"
}' --confirm
Step 6: Reboot Phone to Apply New Credentials
bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \
reboot --body '{
"deviceIds": ["{DEVICE-ID}"],
"deviceType": 1
}' --confirm
Step 7: Verify Registration
Check in PacketDial:
bash .claude/scripts/py.sh .claude/skills/packetdial/scripts/ns.py \
devices vwp.91912.service 101
Look for:
device-sip-registration-state: "registered"device-sip-registration-contact: Shows phone IP
Check in YMCS:
bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \
raw GET /v2/dm/devices/{DEVICE-ID}
Look for:
accounts[].status: 1 (Registered)
Alternative: Create New YMCS Account Instead of Updating
If you prefer to create a NEW SIP account instead of updating the test account:
Step 4 (Alternative): Unbind Old Account
# First, get the old account ID from boundAccounts
bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \
raw DELETE /v2/dm/devices/{DEVICE-ID}/bindAccounts/{OLD-ACCOUNT-ID} --confirm
Step 5 (Alternative): Create New SIP Account
bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \
add-sipaccount --body '{
"registerName": "101@vwp.91912.service",
"username": "101@vwp.91912.service",
"password": "{SIP-PASSWORD-FROM-STEP-3}",
"label": "Ext 101 - Natalya (Receptionist)",
"displayName": "Natalya",
"sipServer1": {
"host": "pbx.packetdial.com",
"port": 5060
},
"remark": "Valley Wide Plastering - customerservice@valleywideplastering.com",
"siteId": "1e7578a6fe0e41cfb5a3e8b40933ffee"
}' --confirm
Save the account ID from response.
Step 6 (Alternative): Bind New Account to Phone
bash .claude/scripts/py.sh .claude/skills/yealink-ymcs/scripts/ymcs.py \
raw POST /v2/dm/devices/{DEVICE-ID}/bindAccounts --body '[{
"lineId": 1,
"accountType": 0,
"accountId": "{NEW-ACCOUNT-ID}"
}]' --confirm
Step 7 (Alternative): Reboot and Verify (Same as Above)
Notes
- Recommended approach: Update existing YMCS account (simpler, phone already bound)
- Alternative approach: Create new account if you want clean separation from test
- Phone should remain registered throughout (just credentials change)
- Extension 101 should be ready for calls immediately after reboot
Status After Provisioning:
- Extension 101 created in PacketDial ✓
- SIP device 101a created with password ✓
- YMCS SIP account updated with real credentials ✓
- Phone registered to extension 101 ✓
- Receptionist can make/receive calls ✓