Skip to content

Instantly share code, notes, and snippets.

@sbruder
Last active October 24, 2020 11:24
Show Gist options
  • Save sbruder/cbc299f33f42d0972c64c3d0dd1ccebd to your computer and use it in GitHub Desktop.
Save sbruder/cbc299f33f42d0972c64c3d0dd1ccebd to your computer and use it in GitHub Desktop.

Microsoft Teams mit Datenschutz

Standardmäßig zeigt Microsoft Teams selbst bei „Als abwesend anzeigen“ an, wann ich meinen Computer benutze (und wann zuletzt). Es gibt keine „offizielle“ Möglicheit, das zu deaktivieren.

Mit uBlock Origin kann man erreichen, dass (zumindest in der Web-Version) der Status immer als „Offline“ angezeigt wird, indem man das Statusupdate abfängt/blockiert.

Dazu muss man in den Einstellungen von uBlock Origin unter „Meine Filter“ folgende Regeln hinzufügen:

||presence.teams.microsoft.com/v1/me/reportmyactivity/*$domain=teams.microsoft.com
||presence.teams.microsoft.com/v1/me/endpoints/*$domain=teams.microsoft.com
||emea.presence.teams.microsoft.com/v1/me/reportmyactivity/*$domain=teams.microsoft.com
||emea.presence.teams.microsoft.com/v1/me/endpoints/*$domain=teams.microsoft.com
||teams.microsoft.com/v1/me/endpoints/*$xhr,domain=teams.microsoft.com
||teams.microsoft.com/diagnostics/*$domain=teams.microsoft.com

Nach einem Neuladen von Teams (z.B. mit F5) und einigen Minuten Warten (und evtl. erneutem Neuladen) sollte der Status als „Offline“ angezeigt werden.

Bekannte Probleme

  • Trotz gesetzem Text-Status wird dieser (sich selbst) nicht angezeigt (Abhilfe: Oben rechts über Profilbild hovern, Status von „Offline“ auf etwas anderes stellen (Status wird nicht wirklich aktualisiert), danach wird der Text-Status angezeigt)
  • Höchstwahrscheinlich „Overblocking“, da ich lieber zu viel als zu wenig filtere
function getUserId() {
return Object.keys(localStorage)
.reduce((acc, val) => {
if (acc !== "") {
const regexres = val.match(/^ts\.([0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12})./)
if (regexres !== null && regexres.length === 2) {
return regexres[1]
}
}
}, "")
}
function getAuthToken() {
return localStorage.getItem(
`adal.access.token.keyhttps://presence.teams.microsoft.com/`
)
}
// when userId not given uses userId of invoking user
function checkPresence(userId, cb) {
if (userId === undefined) {
userId = getUserId()
}
fetch("https://emea.presence.teams.microsoft.com/v1/presence/getpresence/", {
"headers": {
"Content-Type": "application/json",
"Authorization": `Bearer ${getAuthToken()}`
},
"body": JSON.stringify([{"mri": `8:orgid:${userId}`}]),
"method": "POST"
})
.then(res => res.json())
.then(data => data[0].presence)
.then(presence => {
if (cb === undefined) {
const activity = presence.activity
const lastSeen = new Date(presence.lastActiveTime)
console.log(`User is currently ${activity} and was last seen on ${lastSeen.toLocaleString()}`)
} else {
cb(presence)
}
})
}
//checkPresence()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment