ikelike88: I followed your steps exactly, and entered a URI like "msteams://teams.microsoft.com/" into Firefox. Immediately, Firefox recognized the new mime type, and I got a popup offering to launch the "msteams" app. Joining the meeting worked! So thank you very much for your suggestion!
My logs look quite different than before on a successful meeting join:
Fri Dec 13 2019 12:35:29 GMT-0700 (Mountain Standard Time) <593424> -- info -- Running command line from source: handleCommandLine
Fri Dec 13 2019 12:35:29 GMT-0700 (Mountain Standard Time) <593424> -- event -- name: desktop_app_deep_link, deeplinkId: , isMeeting: true, deeplinkType: meetup-join, vdiMode: 0, eventpdclevel: 2,
Fri Dec 13 2019 12:35:29 GMT-0700 (Mountain Standard Time) <593424> -- info -- Command Line State - DeepLink
Fri Dec 13 2019 12:35:29 GMT-0700 (Mountain Standard Time) <593424> -- info -- App subsequent launch - restoring existing app
Fri Dec 13 2019 12:35:29 GMT-0700 (Mountain Standard Time) <593424> -- info -- Starting anonPerfScenario for deeplink
Fri Dec 13 2019 12:35:29 GMT-0700 (Mountain Standard Time) <593424> -- info -- Starting anonPerfScenario for deeplink
Fri Dec 13 2019 12:35:29 GMT-0700 (Mountain Standard Time) <593424> -- info -- Added deeplinkId:4e2249af-f9f0-4e67-b579-a0c86ee5d38a, isMeeting:true and deeplinkType:meetup-join
Fri Dec 13 2019 12:35:29 GMT-0700 (Mountain Standard Time) <593424> -- event -- type: commandline-param, deeplinkId: 4e2249af-f9f0-4e67-b579-a0c86ee5d38a, isMeeting: true, deeplinkType: meetup-join, status: success, scenario: e71b602f-e435-480a-8f97-3cf39c185e14, scenarioName: deeplink, name: deeplink, step: start, sequence: 0, delta: 0, scenarioDelta: 0, elapsed: 90136948, stepDelta: 0, vdiMode: 0, eventpdclevel: 3, Scenario.Name: deeplink, Scenario.Step: start, Scenario.Status: success,
Fri Dec 13 2019 12:35:29 GMT-0700 (Mountain Standard Time) <593424> -- info -- Meetup route. App running. Navigating
Fri Dec 13 2019 12:35:29 GMT-0700 (Mountain Standard Time) <593424> -- info -- Sending IPC to deeplink navigate
Fri Dec 13 2019 12:35:29 GMT-0700 (Mountain Standard Time) <593424> -- event -- status: success, scenario: e71b602f-e435-480a-8f97-3cf39c185e14, scenarioName: deeplink, name: deeplink, step: navigate_to_link, sequence: 1, delta: 1, scenarioDelta: 1, elapsed: 90136949, stepDelta: 1, vdiMode: 0, eventpdclevel: 3, Scenario.Name: deeplink, Scenario.Step: navigate_to_link, Scenario.Status: success,
I don't really know what's going on here. But it looks like whatever was being passed in based on the "default" config that Teams ships with wasn't something that Teams could recognize as a "deeplink" (previously, the logs said "Command Line State - Unknown").
The odd thing is that I already had both teams.desktop (that looks functionally the same as your msteams.desktop) and a mime type of "teams" added to mimeinfo.cache in /usr/share/applications. It seems to me that the default config should be equivalent to the "msteams" config that you got working. I don't quite know enough about MIME types to properly debug this at the moment though.
I'm on Arch Linux using the teams package from AUR: https://aur.archlinux.org/packages/teams/
Edit: one more thing, even though joining meeting works from Firefox, I still can't get Teams to recognize any URI that I pass to xdg-open, or to the teams executable itself.