Il tastierino (“Dial Pad”) di Microsoft Teams non compare anche se l’utente è in modalità Teams Only e ha un numero assegnato? Questa guida pratica spiega cause, controlli e correzioni rapide per Direct Routing, Operator Connect o Calling Plan, con script e checklist pronte all’uso.
Panoramica del problema
Il dial‑pad è l’icona che abilita le chiamate PSTN dall’interfaccia di Teams. Se non appare, quasi sempre manca almeno uno dei tre prerequisiti fondamentali lato utente (Phone System, Enterprise Voice, Voice Routing Policy) oppure una policy/amministrative setting nasconde l’app “Calls”. In scenari non Direct Routing (Operator Connect o Calling Plan), il presupposto è differente: serve l’assegnazione corretta del piano/operatore oltre a Phone System.
Prerequisiti indispensabili (Direct Routing)
Affinché il dial‑pad sia visibile, tutti i requisiti seguenti devono essere soddisfatti contemporaneamente:
Passaggio | Cosa verificare / configurare | Strumento consigliato |
---|---|---|
Licenza voce | L’utente deve disporre di una licenza che includa Phone System (ad es. Microsoft 365 Business Voice / Teams Phone Standard / E5 / Teams Phone con Calling Plan). | Microsoft 365 Admin Center |
Enterprise Voice (EV) | Deve essere abilitato sul singolo account.Set-CsUser -Identity user@dominio.com -EnterpriseVoiceEnabled $true | PowerShell (Teams PS module) |
Voice Routing Policy | Occorre assegnare una Voice Routing Policy che punti a una Voice Route valida.Grant-CsOnlineVoiceRoutingPolicy -Identity user@dominio.com -PolicyName "Local-VRP" | PowerShell |
Se NON si utilizza Direct Routing, l’utente deve avere:
- Operator Connect: operatore assegnato + Phone System.
- Calling Plan Microsoft (nazionale o internazionale) + Phone System.
Passaggi operativi aggiuntivi consigliati
- Configurare l’URI del numero – facoltativo ma utile per la diagnostica:
Set-CsUser -Identity user@dominio.com -OnPremLineURI "tel:+6871231234;ext=1234"
- Exchange Online – necessario per abilitare la segreteria telefonica (voicemail) con policy adeguata.
- Propagazione – le modifiche a criteri/licenze possono richiedere tempo; suggerire all’utente sign‑out e sign‑in dopo aver atteso la propagazione.
- Verifica rapida in Teams Admin Center – in Users > Voice assicurarsi che Phone System, Enterprise Voice e Voice Routing Policy risultino tutti “On/Assigned”.
Perché il dial‑pad può sparire anche con i prerequisiti corretti
Oltre ai prerequisiti, alcuni criteri lato Teams possono nascondere l’app “Calls” (e dunque il dial‑pad) dalla barra sinistra o impedire le chiamate private:
- Teams App Setup Policy: se la policy non include “Calls” tra le app fissate (pinned), l’utente potrebbe non vedere l’icona. Controllare in Teams apps > Setup policies che:
- “Allow user pinning” sia abilitato (se si desidera delegare all’utente);
- “Calls” sia nelle Pinned apps (idealmente in alto, per visibilità immediata).
- Teams Calling Policy: se l’impostazione “Make private calls” è disabilitata per quell’utente, il dial‑pad può non comparire o risultare inutilizzabile. Verificare/assegnare una policy che consenta le chiamate.
- Modalità client: su client mobili il tastierino è accessibile dal pulsante Chiamate > Tastierino. Sul Web/desktop appare come icona “Chiamate” con dial‑pad integrato.
- Utenti speciali (es. account di risorsa con licenza “Phone System Virtual User”): non mostrano il dial‑pad perché destinati a operatori automatici e code di chiamata.
Checklist di conformità (Direct Routing)
Utilizza la seguente checklist per isolare il punto di rottura:
Controllo | Dettaglio | Esito atteso | Dove |
---|---|---|---|
Licenza utente | La licenza include Phone System | Assegnata | M365 Admin Center |
Enterprise Voice | EnterpriseVoiceEnabled a True | True | PowerShell |
Voice Routing Policy | Policy assegnata, route valida verso SBC | Assegnata | PowerShell / TAC |
OnPremLineURI | Numero in formato E.164 (tel:+prefisso ) | Impostato | PowerShell |
Teams Calling Policy | “Make private calls” = On | Consentita | TAC |
App Setup Policy | “Calls” tra le app fissate | Presente | TAC |
Propagazione | Attesa e sign‑out/sign‑in eseguiti | Completata | Client |
Comandi e diagnosi: vedere tutto in un colpo d’occhio
Parti sempre da una verifica “one‑liner” che restituisce lo stato chiave dell’utente:
# Verifica prerequisiti principali
Get-CsOnlineUser -Identity user@dominio.com |
Select DisplayName, EnterpriseVoiceEnabled, VoiceRoutingPolicy, OnlineVoiceMailPolicy
Se i valori non sono quelli attesi, correggi e controlla le assegnazioni nel dettaglio.
Abilitare Enterprise Voice e assegnare la Voice Routing Policy
# Connessione
Connect-MicrosoftTeams
Abilita EV
Set-CsUser -Identity [user@dominio.com](mailto:user@dominio.com) -EnterpriseVoiceEnabled $true
Assegna Voice Routing Policy
Grant-CsOnlineVoiceRoutingPolicy -Identity [user@dominio.com](mailto:user@dominio.com) -PolicyName "Local-VRP"
(Opzionale) Imposta il numero in E.164 con eventuale interno
Set-CsUser -Identity [user@dominio.com](mailto:user@dominio.com) -OnPremLineURI "tel:+6871231234;ext=1234"
Controllare che l’utente possa effettuare chiamate private
# Quale calling policy è effettivamente assegnata all'utente?
Get-CsUserPolicyAssignment -Identity user@dominio.com | Where-Object {$_.PolicyType -like "Calling"}
In alternativa, ispeziona le policy disponibili
Get-CsTeamsCallingPolicy
Verifiche di routing (Direct Routing)
# Elenco delle Voice Routing Policy e assoc. PSTN Usages
Get-CsOnlineVoiceRoutingPolicy | Select Identity, OnlinePstnUsages
Elenco delle Online PSTN Usages
Get-CsOnlinePstnUsage
Ispezione delle voice route disponibili e loro pattern
Get-CsOnlineVoiceRoute | Select Name, NumberPattern, OnlinePstnUsages, OnlinePstnGatewayList
Diagnostica client
- Esportare i log di Teams: premi Ctrl + Alt + Shift + 1 per generare i log lato client.
- Sign‑out/Sign‑in e cache: disconnetti, chiudi l’app e riapri; se necessario esegui un reset dell’app da impostazioni di sistema (Windows/macOS) per il nuovo client.
- Versione client: usa la build corrente di Teams (nuovo client consigliato) per evitare discrepanze UI.
Operator Connect e Calling Plan: cosa cambia
Quando non usi Direct Routing, la logica è più semplice ma i prerequisiti restano imprescindibili:
- Operator Connect: il tenant è collegato a un operatore certificato che assegna il numero all’utente. Se il numero non è assegnato o la portabilità non è completata, il dial‑pad può non essere mostrato.
- Calling Plan: occorre assegnare il piano (nazionale/internazionale) insieme a Phone System. In assenza di almeno uno dei due, il dial‑pad non compare.
In entrambi gli scenari valgono anche i controlli su Calling Policy e App Setup Policy (“Calls” fissata).
Playbook di risoluzione rapida
- Controllo licenze: verifica in Admin Center che l’utente abbia Phone System (in E5 incluso; in E3 va aggiunto Teams Phone Standard). Correggi eventuali assegnazioni.
- Abilita EV:
Set-CsUser -Identity user@dominio.com -EnterpriseVoiceEnabled $true
- Assegna VRP/rotte (Direct Routing) oppure assegna operatore/piano (Operator Connect/Calling Plan).
- Imposta OnPremLineURI in E.164.
Set-CsUser -Identity user@dominio.com -OnPremLineURI "tel:+6871231234"
- Verifica Calling Policy: la policy deve consentire le chiamate private.
- Verifica App Setup Policy: “Calls” presente fra le app pin.
- Propagazione + riaccesso: attendi la convergenza dei criteri, esegui sign‑out/sign‑in.
- Test: apri Teams > Chiamate; il dial‑pad deve essere visibile e funzionante con chiamate in uscita.
Script “tutto‑in‑uno” per validare un utente
Questo esempio produce un riepilogo leggibile con gli elementi chiave per il dial‑pad:
$upn = "user@dominio.com"
Connect-MicrosoftTeams
$u = Get-CsOnlineUser -Identity $upn
$pol = Get-CsUserPolicyAssignment -Identity $upn
$result = [PSCustomObject]@{
UPN = $upn
DisplayName = $u.DisplayName
EnterpriseVoiceEnabled = $u.EnterpriseVoiceEnabled
VoiceRoutingPolicy = $u.VoiceRoutingPolicy
OnlineVoiceMailPolicy = $u.OnlineVoiceMailPolicy
OnPremLineURI = $u.LineURI
TeamsCallingPolicy = ($pol | Where-Object {$_.PolicyType -like "Calling"}).PolicyName
AppSetupPolicy = ($pol | Where-Object {$_.PolicyType -like "TeamsAppSetup"}).PolicyName
}
$result | Format-List
Se uno dei valori non è valorizzato come atteso, intervieni sul punto specifico (licenza, EV, VRP, policy, app pinning) e riesegui lo script finché lo stato non è coerente.
Errori comuni e come evitarli
- Numero non in E.164: usa sempre
tel:+<prefisso><numero>
. Esempio corretto:tel:+390212345678
. - Policy assegnata a livello di gruppo ma non all’utente: verifica gli override individuali con
Get-CsUserPolicyAssignment
. - App “Calls” rimossa dalle policy: capita in deployment education/governativi dove si limitano funzionalità. Ripristinare il pin o creare una policy dedicata.
- Account di risorsa: non aspettarti di vedere il dial‑pad su mailbox di servizio o resource account (ad es. auto attendant).
- Tenant in modalità “Islands”: anche se l’utente è “Teams Only”, assicurati che non esistano conflitti di coexistence o routing legacy che possano interferire.
- Propagazione ignorata: le modifiche voce non sono immediate; pianifica un intervallo di attesa e informa l’utente.
Controlli nel Teams Admin Center (TAC)
Utente > Voice
- Phone System: stato On.
- Enterprise Voice: On.
- Voice Routing Policy: nome policy assegnata (Direct Routing), oppure conferma dell’operatore/piano (Operator Connect/Calling Plan).
- Numero: Line URI corretta in formato E.164.
Teams apps > Setup policies
- Controlla la policy applicata all’utente: “Calls” deve essere tra le Pinned apps.
Voice > Calling policies
- Verifica che la policy applicata consenta le chiamate private e l’uso del dial‑pad.
Domande frequenti (FAQ)
Il dial‑pad compare su tutti i client?
Desktop e Web: appare nella sezione Chiamate. Mobile: accesso via Chiamate > Tastierino. Se l’app “Calls” è nascosta da policy, il dial‑pad non è visibile.
L’utente ha E5: basta per vedere il dial‑pad?
E5 include Phone System, ma in Direct Routing serve anche Enterprise Voice abilitato e una Voice Routing Policy valida. In Operator Connect/Calling Plan è necessario che l’operatore/piano sia assegnato correttamente.
È obbligatorio impostare l’OnPremLineURI?
Formalmente no in tutti gli scenari, ma è altamente consigliato: aiuta la diagnostica e allinea il numero mostrato, soprattutto in Direct Routing.
Quanto tempo serve perché il dial‑pad appaia dopo le modifiche?
Dipende dalla propagazione dei criteri voce. In genere è rapido, ma considera possibili ritardi; invita l’utente a disconnettersi e riconnettersi a Teams.
Posso fare un controllo “da zero” su un profilo appena abilitato?
Sì: assegna la licenza con Phone System, abilita EV, assegna VRP o il piano/operatore, imposta OnPremLineURI, verifica le policy (Calling/App Setup), quindi sign‑out/sign‑in e test.
Sequenza consigliata di troubleshooting
- Licenza: l’utente ha Phone System? Se no, assegnala.
- Scenario:
- Direct Routing: abilita EV, assegna VRP, imposta LineURI.
- Operator Connect/Calling Plan: verifica assegnazione operatore/piano.
- Policy lato Teams:
- Calling Policy: “Make private calls” = On.
- App Setup Policy: “Calls” fissata.
- Propagazione e client: attendi, esegui sign‑out/sign‑in; se necessario reset dell’app.
- Diagnostica: usa
Get-CsOnlineUser
eGet-CsUserPolicyAssignment
, esporta i log. - Escalation: se il dial‑pad resta assente, raccogli output dei comandi, screenshot da TAC (Users > Voice) e apri ticket al supporto Microsoft 365.
Riassunto operativo
Per oltre il 90% dei casi di “dial‑pad mancante” è sufficiente:
- Confermare la presenza di Phone System nella licenza.
- Abilitare Enterprise Voice e assegnare una Voice Routing Policy valida (oppure associare operatore/piano in scenari non Direct Routing).
- Verificare Calling Policy e App Setup Policy.
- Impostare OnPremLineURI in E.164 e forzare un sign‑out/sign‑in.
Con questi step il tastierino di chiamata torna visibile nella quasi totalità dei casi. In caso contrario, i log dell’app e l’output dei cmdlet sono essenziali per l’escalation.
Appendice: comandi utili
# Collegarsi a Teams PowerShell
Connect-MicrosoftTeams
Stato sintetico dell'utente
Get-CsOnlineUser -Identity [user@dominio.com](mailto:user@dominio.com) |
Select DisplayName, LineURI, EnterpriseVoiceEnabled, VoiceRoutingPolicy
Abilitare EV
Set-CsUser -Identity [user@dominio.com](mailto:user@dominio.com) -EnterpriseVoiceEnabled $true
Assegnare VRP (Direct Routing)
Grant-CsOnlineVoiceRoutingPolicy -Identity [user@dominio.com](mailto:user@dominio.com) -PolicyName "Local-VRP"
Impostare il numero
Set-CsUser -Identity [user@dominio.com](mailto:user@dominio.com) -OnPremLineURI "tel:+6871231234;ext=1234"
Verificare policy assegnate all'utente
Get-CsUserPolicyAssignment -Identity [user@dominio.com](mailto:user@dominio.com) | Format-Table PolicyType, PolicyName
Esaminare calling policies disponibili
Get-CsTeamsCallingPolicy | Select Identity, AllowPrivateCalling
Log client
In Teams premere: Ctrl + Alt + Shift + 1
Appendice: best practice di configurazione
- Standardizza il naming (es.
VRP-Headquarters
,VRP-RemoteSites
) per semplificare l’assegnazione massiva. - Eredi le policy: applica policy globali permissive e usa override solo dove necessario.
- Automazione: crea script di provisioning che eseguono in sequenza licenza → EV → VRP → LineURI → policy → test.
- Monitoraggio: traccia i cambi con auditing e mantieni una matrice utente‑policy aggiornata.
Se, dopo tutte le verifiche, il dial‑pad non dovesse ancora apparire, raccogli i log client, l’output dei cmdlet e un riepilogo delle licenze/policy. Condividi il pacchetto con il supporto Microsoft 365 per l’analisi approfondita.
Con questa guida hai un percorso completo, dalla diagnosi all’azione, per ristabilire il dial‑pad in Microsoft Teams con il minimo impatto sugli utenti.