からめもぶろぐ。

俺たちは雰囲気で OAuth をやっている

Microsoft Teams の Power Apps でアプリがどの環境で実行されているのかを判断する

Project Oakdale によって Microsoft Teams で Power Apps を作成することができるようになりましたが、例えば特定のユーザーとのチャットにリンクするなど、Power Apps から Microsoft Teams の機能を呼び出したいことがあると思います。これは Microsoft Teams のディープ リンクを使用することで解決できます。

docs.microsoft.com

ただし以下のようにして呼び出すと必ずブラウザーが開いてしまいます。

Launch("https://teams.microsoft.com/_#/l/chat/0/0?users=someone@example.com")

Web 版の Teams はまだ問題ないのですが、デスクトップ版の Teams の場合はそのまま遷移してほしいので、以下のように URI スキームで呼び出したいです。

Launch("msteams://teams.microsoft.com/l/chat/0/0?users=someone@example.com")

ということで Web 版の Teams と デスクトップ版の Teams のどちらで実行されているかを判断したいのですが、これは Microsoft Teams から Power Apps を呼び出すときに渡される URL パラメーターを取得することで判断できます。具体的には Param("hostClientType") を呼び出すことで実行されている環境を取得することができます。

  • Web 版の場合

f:id:karamem0:20201028103226p:plain

  • デスクトップ版の場合

f:id:karamem0:20201028103420p:plain

他にも例えば Param("theme") とすれば Microsoft Teams で適用しているテーマの情報が取れたりもするので、テーマに合わせてデザインを変えるようなこともできます。