Dial‑pad assente in Microsoft Teams: come far comparire il tastierino chiamate (Direct Routing, Operator Connect, Calling Plan)

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.

Indice

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:

PassaggioCosa verificare / configurareStrumento consigliato
Licenza voceL’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 PolicyOccorre 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

  1. Configurare l’URI del numero – facoltativo ma utile per la diagnostica: Set-CsUser -Identity user@dominio.com -OnPremLineURI "tel:+6871231234;ext=1234"
  2. Exchange Online – necessario per abilitare la segreteria telefonica (voicemail) con policy adeguata.
  3. Propagazione – le modifiche a criteri/licenze possono richiedere tempo; suggerire all’utente sign‑out e sign‑in dopo aver atteso la propagazione.
  4. 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:

ControlloDettaglioEsito attesoDove
Licenza utenteLa licenza include Phone SystemAssegnataM365 Admin Center
Enterprise VoiceEnterpriseVoiceEnabled a TrueTruePowerShell
Voice Routing PolicyPolicy assegnata, route valida verso SBCAssegnataPowerShell / TAC
OnPremLineURINumero in formato E.164 (tel:+prefisso)ImpostatoPowerShell
Teams Calling Policy“Make private calls” = OnConsentitaTAC
App Setup Policy“Calls” tra le app fissatePresenteTAC
PropagazioneAttesa e sign‑out/sign‑in eseguitiCompletataClient

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

  1. 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.
  2. Abilita EV: Set-CsUser -Identity user@dominio.com -EnterpriseVoiceEnabled $true
  3. Assegna VRP/rotte (Direct Routing) oppure assegna operatore/piano (Operator Connect/Calling Plan).
  4. Imposta OnPremLineURI in E.164. Set-CsUser -Identity user@dominio.com -OnPremLineURI "tel:+6871231234"
  5. Verifica Calling Policy: la policy deve consentire le chiamate private.
  6. Verifica App Setup Policy: “Calls” presente fra le app pin.
  7. Propagazione + riaccesso: attendi la convergenza dei criteri, esegui sign‑out/sign‑in.
  8. 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

  1. Licenza: l’utente ha Phone System? Se no, assegnala.
  2. Scenario:
    • Direct Routing: abilita EV, assegna VRP, imposta LineURI.
    • Operator Connect/Calling Plan: verifica assegnazione operatore/piano.
  3. Policy lato Teams:
    • Calling Policy: “Make private calls” = On.
    • App Setup Policy: “Calls” fissata.
  4. Propagazione e client: attendi, esegui sign‑out/sign‑in; se necessario reset dell’app.
  5. Diagnostica: usa Get-CsOnlineUser e Get-CsUserPolicyAssignment, esporta i log.
  6. 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.

Indice