Con il nuovo client di Microsoft Teams l’ID della chat non è più visibile nell’URL e, in alcune build desktop, manca “Copia link”. In questa guida pratica trovi 5 metodi affidabili per recuperare il chatId (1:1 o gruppi) e creare deep‑link riutilizzabili, anche senza privilegi amministrativi.
Perché oggi è più difficile ottenere l’ID di una chat
Nel client “nuovo Teams” l’interfaccia è stata riprogettata per essere più pulita e veloce, ma questo ha avuto un effetto collaterale: l’URL del browser non espone più direttamente l’identificativo della chat (chatId
) e la voce Copia link nel menu … del messaggio, utile per molti scenari, in alcune versioni desktop è scomparsa o appare in modo intermittente. Per chi non ha privilegi di amministratore — e quindi non può ricorrere al modulo PowerShell di Teams — servono strade alternative, semplici e soprattutto ripetibili.
Cos’è il chatId e perché ti serve
Il chatId è la chiave che identifica in modo univoco una conversazione in Teams (1:1 o di gruppo). È il pezzo che ti consente di:
- Creare deep‑link per aprire una chat o un messaggio preciso da SharePoint, e‑mail, Planner, documentazione interna, ecc.
- Automatizzare flussi in Power Automate (es. log delle chat, notifiche incrociate, archiviazione metadati).
- Fare troubleshooting avanzato (riconcilio eventi, audit, correlazioni con ID di messaggi).
Nella maggior parte dei casi il formato di un chatId
appare come 19:<payload>@thread.v2
. Il prefisso 19:
e il suffisso @thread.v2
segnalano un thread di chat “moderno”.
Metodi rapidi a confronto
# | Metodo | Dove funziona | Passaggi essenziali | Vantaggi / Limiti |
---|---|---|---|---|
1 | Copia link a messaggio | ✔ Desktop (finché disponibile) ✔ Web (ancora presente) | Apri la chat ► sui tre puntini … di un messaggio ► Copia link. Nell’URL copiato l’ID è la stringa fra message/19%3a e %40thread . | Rapidissimo, zero strumenti. Funziona anche per “Copia link al canale”. ✘ In alcune build desktop l’opzione non appare. |
2 | Power Automate – Trigger su messaggi (idea di Ana) | ✔ Qualsiasi interfaccia | Crea un flow con trigger When a new message is posted in a chat. Aggiungi azioni per salvare in una lista SharePoint: nome chat, chatId , deep‑link. | Cattura automaticamente tutte le chat con pochi clic. ✘ Richiede un account con Power Automate (incluso/seeded o gratuito/paid). |
3 | Power Automate – Azione “Post message in a chat or channel” (work‑around di Zac) | ✔ Interfaccia web di Power Automate | In un flow (nuovo o esistente) inserisci l’azione, seleziona la chat dal menu, poi apri Peek/Code view: nel JSON il campo recipient contiene il chatId . Copialo, quindi elimina l’azione (o l’intero flow). | Semplice e visuale. Utile quando manca “Copia link”. ✘ Serve licenza/tenant che consenta il connettore Teams. |
4 | Strumenti di sviluppo del browser (suggerimento di Doug) | ✔ Web app di Teams | Premi F12 / Ctrl + Shift + I ► Inspect. Con il selettore clicca il nome della chat. Nel markup HTML, l’attributo id= del div include qualcosa come chat-19:<ID>@thread.v2 . | Nessun servizio esterno. ✘ Meno intuitivo: richiede confidenza con DevTools. |
5 | Tornare a “Copia link” via Web (nota di Dom) | ✔ Web app | Se il client desktop non mostra l’opzione, apri la web app: il menu … di un messaggio espone ancora Copia link. | È il metodo più rapido se preferisci l’interfaccia browser. |
Guida pratica ai metodi
Copia link a messaggio
Quando usarlo: è il primo tentativo da fare. Non servono strumenti, permessi o configurazioni particolari.
- Apri la chat di interesse in Teams (desktop o web).
- Passa il mouse su un messaggio qualsiasi e clicca sui tre puntini … ► Copia link.
- Incolla l’URL in un editor di testo.
- Individua il tratto
message/19%3a
e copia tutto fino a%40thread
escluso.
Esempio
https://teams.microsoft.com/l/message/19%3aabc123XYZ%40thread.v2/1710225334?tenantId=...
Il chatId
percent‑encoded è 19%3aabc123XYZ%40thread.v2
. Per leggerlo “pulito”:
%3a
→:
%40
→@
Risultato: 19:abc123XYZ@thread.v2
.
Nota: se la voce Copia link non c’è nel desktop, passa alla web app (vedi metodo “Tornare a Copia link via Web”).
Power Automate – Trigger su messaggi
Quando usarlo: vuoi catturare in automatico tutti i chatId
man mano che le persone scrivono, senza fare azioni manuali in Teams.
- In Power Automate, crea un cloud flow automatizzato.
- Scegli come trigger When a new message is posted in a chat (la localizzazione italiana può variare, ad es. “Quando viene pubblicato un nuovo messaggio in una chat”). Autentica il connettore Microsoft Teams.
- Aggiungi un’azione SharePoint ► Create item (o Dataverse/Excel) con colonne: Chat name, ChatId, MessageId, DeepLink, Autore, Timestamp.
- Nelle dinamiche del trigger cerca i campi come Chat Id / conversation id / message id. Inseriscili nelle colonne.
- Per il deep‑link al messaggio, costruisci una stringa (azione Compose o direttamente in SharePoint) sul modello qui sotto.
Template di espressione (Power Automate):
concat(
'https://teams.microsoft.com/l/message/',
<em>triggerOutputs()?['body/chatId']</em>,
'/',
<em>triggerOutputs()?['body/id']</em>,
'?tenantId=',
<em>variables('TenantId')</em>
)
Sostituisci i riferimenti ai campi in corsivo con quelli esatti del tuo connettore/trigger.
Vantaggi: in poche decine di minuti ottieni un inventario sempre aggiornato di chat e messaggi, sfruttabile da SharePoint o Power BI.
Power Automate – Azione “Post message in a chat or channel”
Quando usarlo: vuoi un recupero “spot” del chatId
senza impostare trigger o liste.
- Apri o crea un flow (anche istantaneo). Aggiungi l’azione Post message in a chat or channel.
- Nel campo Recipient / Post in scegli Chat e seleziona la chat desiderata dal menu.
- Nell’angolo dell’azione clicca … ► Peek code (o Visualizza codice).
- Nel pannello JSON, cerca
recipient
ochatId
. Troverai qualcosa di simile:
{
"type": "OpenApiConnection",
"inputs": {
"host": { "connectionName": "teams", ... },
"method": "post",
"path": "/v3/conversations/{chatId}/activities",
"body": {
"recipient": {
"chatId": "19:abc123XYZ@thread.v2"
},
"content": "Prova"
}
}
}
Copia il valore di chatId
e, se non ti serve più, rimuovi l’azione o il flow. Tip: puoi usare questa tecnica anche per i canali: troverai channelId
e/o teamId
.
Strumenti di sviluppo del browser
Quando usarlo: non vuoi aprire Power Automate, oppure devi operare in un tenant bloccato su strumenti di terze parti.
- Apri la web app di Teams.
- Premi F12 (o Ctrl + Shift + I) per aprire i DevTools.
- Attiva il selettore di elementi (icona del mouse) e clicca sul nome della chat nella sidebar.
- Nel markup evidenziato, individua un
div
/li
con attributoid
odata-*
che includa il pattern:chat-19:<qualcosa>@thread.v2
.
In molte build l’ID DOM della riga selezionata contiene esplicitamente il chatId
. In alternativa, sfrutta il pannello Network: filtra per “chat” o “messages” e osserva gli URL delle chiamate, spesso includono /chats/19:...@thread.v2
.
Tornare a “Copia link” via Web
Quando usarlo: il desktop non mostra più la voce, ma vuoi restare su un flusso “point‑and‑click”.
- Apri teams.microsoft.com e autenticati.
- Apri la chat ► vai sul messaggio ► menu … ► Copia link.
- Estrai il
chatId
come descritto nel primo metodo.
Come costruire deep‑link riutilizzabili
Aprire un messaggio specifico in una chat
Struttura generale (i parametri possono variare in base al contesto):
https://teams.microsoft.com/l/message/<ChatID>/<MessageID>?tenantId=<Tenant>&groupId=<Group>&parentMessageId=<ParentId>
- ChatID: il valore tipo
19:...@thread.v2
. - MessageID: l’ID univoco del messaggio.
- tenantId: consigliato nelle organizzazioni multi‑tenant o con utenti guest.
- groupId: appare soprattutto nei link ai canali; in chat può essere assente.
- parentMessageId: utile per evidenziare un messaggio “padre” di un thread.
Esempio
https://teams.microsoft.com/l/message/19:abc123XYZ@thread.v2/1710225334?tenantId=00000000-0000-0000-0000-000000000000
Avviare una chat pre‑compilata (basata su UPN)
Quando non ti serve un chatId
specifico ma vuoi aprire la composer con destinatari pre‑selezionati:
https://teams.microsoft.com/l/chat/0/0?users=user1@contoso.com,user2@contoso.com
È utile in intranet, knowledge base e modelli di comunicazione. Ricorda che non è basato su chatId
, quindi gli invii generano (o ri‑utilizzano) la chat corretta in base agli utenti.
Aprire direttamente una chat esistente via chatId
Teams non documenta un singolo formato universale per “apri chat per chatId
”, ma in pratica i link al messaggio della chat sono la soluzione più robusta: portano comunque l’utente nella conversazione corretta. Se hai bisogno di una scorciatoia “neutra”, crea un deep‑link a un messaggio recente o, in alternativa, usa i jump link che puntano alla chat con parametri contestuali (ad es. tenantId
).
Esempi concreti pronti da incollare
Modello riutilizzabile di deep‑link (Excel/SharePoint)
Supponi di avere le colonne [ChatID]
e [MessageID]
in una lista. Puoi creare la colonna DeepLink con questa formula (formato testo calcolato):
= "https://teams.microsoft.com/l/message/" & [ChatID] & "/" & [MessageID] & "?tenantId=00000000-0000-0000-0000-000000000000"
Espressione equivalente in Power Automate
concat(
'https://teams.microsoft.com/l/message/',
items('Applytoeach')?['ChatID'],
'/',
items('Applytoeach')?['MessageID'],
'?tenantId=00000000-0000-0000-0000-000000000000'
)
Regex utili
- Estrarre il ChatID da un link “Copia link” (encoded):
message\/(19%3a[^%]+)%40thread
- Estrarre il ChatID dopo decoding:
message\/(19:[^\/\?]+@thread\.v2)
- Trovare il ChatID nell’HTML della web app:
id=["']chat-(19:[^"']+@thread\.v2)["']
- Trovare il ChatID nel JSON del flow:
"chatId"\s:\s"([^"]+)"
Automazioni pratiche con Power Automate
Ecco tre idee che sfruttano il chatId
per creare valore subito:
- Registro centrale delle chat
Trigger su nuovo messaggio ► scrivi in SharePoint: Chat name, chatId, MessageId, Autore, Data/ora, DeepLink. Puoi aggiungere regole DLP interne (es. chat con esterni). - Bot di “salvataggio rapido”
Bot/Command flow: quando reagisci con un’emoji specifica, il flow legge chatId e messageId e salva il deep‑link in una tabella (knowledge clipping personale o di team). - Collegamenti incrociati con ticketing
In un flow che crea ticket (es. da e‑mail), aggiungi un campo “Apri la chat” che costruisce il link al messaggio di riferimento in Teams.
Microsoft Graph: alternativa per chi può usare API
Se disponi di un token delegato o di un’app registrata, con i permessi Chat.Read (o superiori) puoi elencare tutte le chat con GET /me/chats
. Non servono diritti amministrativi globali, ma è necessaria l’approvazione dei permessi da parte dell’utente (o dell’amministratore a seconda della policy). La risposta JSON include direttamente il id
di ciascuna chat, ad esempio:
{
"value": [
{
"id": "19:abc123XYZ@thread.v2",
"topic": "Progetto Contoso",
"chatType": "group"
}
]
}
Puoi quindi combinare Graph con Power Automate (HTTP with Azure AD) o con script low‑code.
ID di canale vs. ID di chat
È fondamentale distinguere tra:
- chatId: chat 1:1 o gruppo (
19:...@thread.v2
), deep‑link basati su/l/message/
o su UPN (/l/chat/0/0?users=
). - channelId: canale di un team; i deep‑link ai canali e ai messaggi nei canali hanno formati diversi e possono richiedere anche
teamId
/groupId
.
Per i canali, preferisci Copia link al canale oppure le API GET /teams/{teamId}/channels
di Microsoft Graph.
Consigli di qualità, governance e sicurezza
- Privacy: un
chatId
non rivela i contenuti, ma segnala l’esistenza di una conversazione. Trattalo come metadato interno e non condividerlo pubblicamente. - Tenant multipli: se operi con più tenant o utenti ospiti, includi sempre il
tenantId
nel deep‑link per prevenire errori di accesso. - Obsolescenza dei messaggi: cancellazioni o retention possono invalidare i link a messaggi specifici. In questi casi rimanda alla chat (o a un messaggio “ancora presente”).
- Mobile: di norma i link
https://
aprono l’app Teams nativa. Se il dispositivo offre scelta, seleziona l’app ufficiale per un’esperienza migliore. - Naming: se archivi le chat in SharePoint, salva anche un “nome parlante” (topic o partecipanti) per facilitare la ricerca umana.
Checklist veloce
- Devi solo l’ID di una chat? → Copia link a un messaggio e decodifica
%3a
/%40
. - Ti serve una rubrica completa di
chatId
? → Trigger Power Automate e scrittura in SharePoint/Dataverse. - Hai bisogno di un ID subito senza costruire flussi? → Azione “Post message…” + Peek code.
- Niente Power Automate? → DevTools del browser in web app.
- Desktop senza “Copia link”? → Apri la web app e usa il menu … del messaggio.
Appendice: estrazioni e trasformazioni
Estrarre il chatId con formule Excel
Da URL “Copia link” (encodato):
=LET(
url;A2;
inizio;RICERCA("message/19%3a";url)+LUNGHEZZA("message/");
fine;RICERCA("%40thread";url);
enc;STRINGA.ESTRAI(url;inizio;fine-inizio);
SOSTITUISCI(SOSTITUISCI(enc;"%3a";":");"%40";"@")
)
Decodifica in Power Automate senza funzioni custom
replace(replace(<em>variables('EncodedChatId')</em>, '%3a', ':'), '%40', '@')
Validazione del formato
Una volta estratto, verifica che inizi con 19:
e termini con @thread.v2
. In caso contrario, ripeti l’estrazione o usa uno dei metodi alternativi.
Risoluzione dei problemi
- Non vedo “Copia link” nel menu del messaggio
Puoi essere su una build desktop dove la voce è nascosta. Apri la web app o usa Power Automate/DevTools. - Il link al messaggio restituisce errore
VerificatenantId
, eventuali politiche di retention o se il messaggio è stato rimosso. Prova un altro messaggio nella stessa chat. - Il link apre la chat sbagliata
Di solito dipende da unchatId
troncato o da una decodifica incompleta (%3a
e%40
). Ricontrolla la stringa completa. - Sto lavorando su un canale, non su una chat
Usa Copia link al canale o i metodi dedicati ai canali (servonochannelId
eteamId
). - Non ho Power Automate
Il metodo DevTools funziona senza licenze aggiuntive. In alternativa, chiedi a un collega con Power Automate di ricavare l’ID una tantum.
Riepilogo esecutivo
Anche senza PowerShell o privilegi elevati, recuperare l’ID di ogni chat in Teams è semplice e sostenibile. “Copia link” resta la via più veloce; Power Automate offre automazioni scalabili (trigger o work‑around con Peek code); la web app + DevTools è l’asso nella manica quando tutto il resto non è disponibile. Una volta ottenuto il chatId
, i deep‑link diventano uno strumento potentissimo per flussi, SharePoint, ticketing e documentazione interna.
Appendice: domande frequenti
Il formato del mio chatId
non è “19:…@thread.v2”, è normale?
Sì, in casi rari possono comparire varianti di versione (@thread.v2
è la più comune). Assicurati che l’ID provenga da una fonte affidabile (Copia link, DevTools, Power Automate, Graph).
Posso ottenere il chatId
senza toccare Teams?
Se hai diritto a usare Microsoft Graph con Chat.Read, sì: GET /me/chats
elenca i tuoi chatId
senza aprire l’app.
Serve davvero il parametro tenantId
?
In molte organizzazioni funziona anche senza, ma con utenti guest o più tenant è consigliato per aprire la conversazione nel contesto corretto.
Come collego un deep‑link a SharePoint senza che diventi “brutto”?
Usa una colonna Collegamento o costruisci l’URL in una colonna calcolata; in pagine di intranet racchiudi l’URL in un testo descrittivo (“Apri chat Progetto Contoso”).
Con questi metodi, anche senza PowerShell o ruoli da amministratore, puoi recuperare rapidamente gli ID delle chat e costruire deep‑link per automazioni, documentazione interna o semplici segnalibri.