Microsoft Teamsをもうちょっとだけ便利に使う方法

Microsoft Teamsという最後発のチャットアプリ、無償で公開もされているので誰でも利用することが可能なのですが、一体どれだけシェアあるのか・・・コロナの影響で在宅勤務が強制的にスタートした中では、1200万人ほどユーザが増えたようです。Googleはこのジャンルは迷走しているので、ちょっと残念な結果になってると思います(MeetだChatだ、さらにはDuoやらAlloだと増やし、GMail統合から外しておいて、最近またMeetがGmailに統合されたりと)。

さて、このTeamsですがMicrosoft Graph APIからも投稿が可能ですし、Incoming WebhookPower Automate、外部サービスからの通知や他のアプリケーションからの通知、サーバーからの通知などをチャンネルや個人宛に飛ばす事が可能です。しかし、肝心のこの機能を殺してるアレな大企業があったりするわけで。

これらAPIやWebhookが使えないとなると最後に残るのが「メールで飛ばす」方法があります。他にもアプリで使う場合のURI Handler(URL Scheme)やPower Automateを使っての、メッセージを飛ばす方法もまとめてみました。

メールでTeamsに投稿する

チャンネルのメールアドレスを取得する

メールを送ることでTeamsの参加者に自動的に通知を一斉配信が可能です。チーム毎のメアドの取得方法は以下の通り。

  1. メールアドレスを取得したいチームを開く
  2. 各チャンネルの右にある「」をクリック
  3. メールアドレスを取得をクリック(xxxx.xxxx.onmicrosoft.com@apac.teams.ms)といったようなアドレスが取得できる
  4. コピーをすればOK。このメアド宛にメールを送るだけ。

※添付ファイルをつけてメールを送ると、Teamsのファイルタブ内にファイルが格納されます。

図:メールアドレスの取得はとても簡単

制限を掛ける

デフォルトの状態ですと、メールアドレスを知っていれば誰でも投稿が出来てしまいます。そこで、以下の制限を掛けてあげると良いでしょう。

  1. ​メールアドレスを取得の画面の詳細設定をクリックする
  2. このチームのメンバーのみならば、チームメンバー以外は投稿出来ません。
  3. 外部の人も許可するならば、次のドメインのメールアドレスのみ(例:foobar.co.jp)を設定すると良い。カンマ区切りで複数登録可能。

図:誰でも投稿できるのはちょっとよろしくない

使い所

本来、SlackやTeamsは、チャットでだけ使うようなアプリケーションではありません。しかし、アレな大企業ではそこを制限してしまっており、利用価値がSkypeと変わらない(むしろ、一般的なアプリじゃないので、外部とやり取りする上で、相手にTeamsインストールを要求するという・・・)ので、大変残念な事になっています。
しかし、今回の機能を使う事によって、以下のような使い方が可能になります。
  1. 集約先をメールボックスではなく、目的別のteamsのチャンネルにすることが可能になる。
  2. メールのCCに加えることで、重要と思う内容を、メールではなくTeamsに残すことが可能になる。
  3. VBAやNode.jsといったプログラムから利用することで、Outlookを介してメールをおくって、チャンネルに通知が可能になる。
  4. 3.に伴い、複数のチャンネルに対して、自動的に大量に通知を連続して送ることも可能(他のウェブサービスからのメール通知をメールではなくTeamsにすることができる)

図:実際にメールで投稿してみた

Power Automateとの連携技

OutlookからTeamsへ転送

脱メールの為の仕組みとしてTeamsを入れているのに、一向にメールが減らない。メールボックスに何でもかんでも来る結果、メールフィルタで対応しきれなくなり、ついには仕事を取りこぼす、忘れる、そして誤ってそのままスルーする。結果、小さなミスが大きなクレームとなって帰ってくるわけです。これを少し解消する為に、特定のメールの条件に合致したものは、Teamsにそのまま自動で投げてしまいましょう。

Microsoft365のOutlookで自動応答でも紹介したテクニックです。

  1. Power Automateを起動する
  2. マイフローをクリックする
  3. 上にある「+新規」をクリックする
  4. 自動から作成を今回はクリックします。
  5. フローに名前をつけて、フローのトリガーではメールと検索し、「新しいメールが届いた時(V3)」を選びます。
  6. 作成ボタンをクリックする
  7. ここで条件判定をさせる為に、「制御(条件)」というものを追加します。
  8. 条件では、「差出人」はなく「開始」というものになります。また、「件名」や「本文」というものを使って、「特定の文字が含まれているか?」といった判定も非常に効果的です。
  9. 「はい」の場合だけを作ります。
  10. アクションの追加をクリックして、Teamsと検索。メッセージを投稿する(V3)を選択します。
  11. チームを選びます。
  12. チャネルを選びます。
  13. メッセージ本文を記述します。本文を書かずにメールの内容の本文をそのまんま追加することも可能です。

図:メールの内容をそのままTeamsに転送可能

Teamsの投稿内容をExcelファイルに記録する

社内外で結構問い合わせのある内容が「Teamsのチャンネルに投稿された内容を取り出せませんか?」というテーマ。投稿内容をデータとしてアーカイブし、例えばヒヤリハットの報告をTeamsにさせて纏めるであったりとか、投稿内容から傾向を分析するなどなど。Microsoft Graph APIを使えば過去のメッセージもすべて取得できるのですが、いかんせん構築が大変です。そこで今回は、Power Automateでノーコードでこれを実現します。(新規メッセージのみしか現在はまだ取得できないので、全てを取得したい場合、Graph APIを使って取得するしか方法がありません)

※Hangoutの場合チャット内容はGMailに残るのでGASから内容を取得が容易に出来ます。なお、Graph APIを使ってガッツリチャットログを取得するものは、Google Apps Scriptで作ってみました。

Google Apps ScriptとMicrosoft Graph APIの連携 – Teamsログ取得編

最も簡単なパターンの作り方は以下の通りになります。

  1. Teamsのチャンネルに入り、「+」ボタンをクリックする
  2. ドキュメントライブラリを選択する
  3. Sharepoint側で既に用意されているドキュメントライブラリの一覧が出てくるので、どれか選択する
  4. これで、Teamsチャンネルにドキュメントライブラリがドッキングされます。
  5. 次に、このライブラリにxlsxファイルをアップロードしますが、データ構造は「テーブル」で予め作っておく必要があります。素のxlsxでは書き込みが出来ません。
  6. アップロードされたファイルはTeams上からはロックされて削除出来ません。Sharepointで開くで開いた場所であれば削除が可能です。
  7. Power Automateを開きます。
  8. 左サイドパネルから「作成」⇒自動フローを選択
  9. 適当なフロー名をつけて、フローのトリガーはチャンネルにメッセージが追加されたときを選択します。
  10. チームでは「チーム名」がドロップダウンで出てくるので、選択。続いてその中にあるチャンネルも同様に選択します。
  11. 新しいステップを追加する
  12. excelで検索し、表に行を追加を選択します。
  13. 場所はドロップダウンで出てくる、4.のドキュメントライブラリがあるGroupを選択します。sharepointも直接選択可能
  14. ドキュメントライブラリは「ドキュメント」を選択
  15. ファイルはその中にアップロードした、先程のxlsxが出てくるので、それを選択します。
  16. テーブルは、予めxlsxに設定しておいたテーブルのテーブル名が出てくるので、それを選択します(名前つけてないとテーブル1とかがデフォルト)
  17. xlsxの各カラムが出てきます。クリックするとそこにTeamsの何の項目を書き込むか?を選べるので、追加していく。結構細かくデータが取れます。
  18. 保存を押して、テストを実行。Teamsのチャンネルにメッセージを投稿して、xlsxファイルに書き込まれればOK(タイムラグがありますので注意
  19. レスをした場合が記録する手段を現在探索中です。これができれば完璧なのですが・・・(誰かがレスをしたらというアクションが追加されれば実現できるんだけれどねぇ)

※Access VBAを使ってデータをメッセージIDを元にフィルタして取得出来ないかなぁと考案中。

図:ドキュメントライブラリを追加しxlsxをアップ

図:Power Automateでフローを作成中の画面

図:xlsxファイルに書き込まれた様子

Boxのフォルダを監視する

Boxのようなクラウドストレージだと、あのファイルが急に消えたとか誰かのゴミ箱に入ってたなんて事故が頻繁に起きます。そういった場合、管理者しかファイルの在処を特定できないので、結構困った事態になることがあります。しかし、今回の機能を使う事によって、フォルダの状況を監視することが可能になります。ただし、フリーアカウントだと投稿ができません(Microsoft365かonmicrosoft.comの開発アカウントでなければならない)。その場合Azure ADでonmicrosoft.comのアカウントを作って、作成や認証はそのアカウントで行う必要があります。(Teams投稿のフローで接続できませんのエラーが出ます)

  1. Power Automateを起動する
  2. 左サイドパネルから作成をクリック
  3. 自動フローをクリック
  4. フロー名を適当に入力し、検索窓からboxで検索。「Box - ファイルが変更された時」を選びます
  5. 作成をクリック
  6. Boxへのサインインを行う
  7. Boxへのアクセス許可をクリックする
  8. 対象のフォルダを選択します。
  9. 新しいステップをクリックする
  10. アクションでは、Teamsを検索し、メッセージを投稿する(V3)を選びます。
  11. チームとチャネルを選ぶ
  12. メッセージを作りますが、動的なコンテンツからよく使うのは、LastModifiedBy, DisplayName, Idの3つを入れておけば良いかと思います。詳細オプションで件名を入れておくのも良いでしょう。
  13. 保存をクリック。onmicrosoft.comのアカウントからはサインアウトしておきましょう。
  14. アップロードなどの作業を行っても、Teamsに投稿されるようになるので、フォルダ内の監視が可能になります。

※オカシナ大企業だとBoxとOffie365の契約をしているにも関わらず、Box側⇒Microsoft365側へのアクセスを許可していないケースがあります。その場合Microsoft365側でBoxのIPレンジに対して接続許可をしなければこのテクニックは使えません。

個人的にはTeams投稿だと鬱陶しいので、添付のExcelに書き込むFlowを作ったほうが楽かと思います。

途中に条件判定のFlow挟んで、必要なBox側アクションだけ取得するのもいいですね。

図:Boxのフローを作成中

図:作成したフローはこちら

図:実際にアップロードしたらTeamsに投稿されました

Teamsからフローを実行する

Teamsのチャットからコマンド入力で、Power Automateに作成済みのフローを実行する事が出来ます。スケジュール済みクラウドフローおよびインスタントクラウドフローの2つが実行可能です。以下の手順で利用可能です。

  1. チャンネルを開き、チャンネル名のメニューにある+アイコンをクリックする
  2. Power Automateを選んで追加する
  3. チャンネルに2.が追加されたので既にもう使えるようになってる
  4. 左サイドバーの「…」をクリックして、Power Automateをクリックする
  5. チャットタブをクリックする
  6. チャット欄でList flowsと入れて実行すると、実行可能なフローの一覧が表示されます。
  7. チャット欄でRun flow リストの番号を実行すると、そのフローが手動で実行されます。

図:Teamsから命令を実行出来ます

URL Scheme

概要

ある特殊なURIをクリックすると、ブラウザが立ち上がって該当のページが表示され、ついでにテンプレートのメッセージまで表示する。または、ローカルのアプリが立ち上がり、同様の事ができる。これがURL Scheme(またはURI Handler)と呼びます。もっとも知られているものは、https://であったり、mailto:ですね。msteams:といったこれらはディープリンクと呼ばれたりもします。

Microsoft TeamsにもこのURL Schemeは存在し、以下のような形でURLを組み上げて、クリックすると作動するようになっています。

※余談ですが、デスクトップ版のTeamsはElectronで作成されてるようです

チャットを送る

以下のは個人宛のTeamsに送る場合の仕組みです。

  1. https://teams.microsoft.com/l/chat/0/0?users=ここに相手のメアド&message=ここにメッセージ
  2. msteams://l/chat/0/0?users=ここに相手のメアド&message=ここにメッセージ

ウェブ版で開きたいのであれば、https://teams.microsoft.com/_#/l/chat/0/0?users=ここに相手のメアドでいけます。

チャンネルにも投げられないか?という事であれば、以下の手順を踏んでURIを構築する事が可能です。

  1. 特定のチームのチャンネルを開く
  2. チャンネルへのリンクを取得
  3. このリンクをクリックすると、直接ウェブもしくはローカルのTeamsアプリが起動して開きます。
  4. この時、msteams://の以下に構築すれば同様の事が可能です。

参考例として

msteams:/l/channel/チャンネルのID@thread.skype/ここに該当のチームのコード?groupId=グループのID&tenantId=テナントのID

会議の予約

以下は新しい会議を作る場合の仕組みです。

  1. msteams:/l/meeting/new?attendees=user1@mail.com,user2@mail.com&subject=ここに会議タイトル&content=ここに打ち合わせ内容&startTime=2020-02-25T09:00&endTime=2020-02-25T10:00
  2. ​https://teams.microsoft.com/_#/l/meeting/new?attendees=user1@mail.com,user2@mail.com&subject=ここに会議タイトル&content=ここに打ち合わせ内容&startTime=2020-02-25T09:00&endTime=2020-02-25T10:00

複数ユーザを会議に招集する場合には、上記のようにattendeesに対してカンマ区切りでメアドを入れれば良い。startTime/endTimeの組み立て方に注意すれば、それほど難しくなく会議登録画面が立ち上がります。後は、会議室の選択をして「スケジュールを設定」をクリックすればオッケー。Outlookの会議予約が酷く使いにくい代物なので、他のアプリからGraph API等も合わせて使えばかなり利便性が向上すると思う。

なお、自分で会議を立てると自動的に自分が主催者として登録されるので、自分のメアドは不要。

図:Teamsのほうが会議予約はしやすい

Power Automate Desktopで呼び出す

Power Automate DesktopでTeamsを起動して操作したい場合、長々としたフローを作成して人を探してなんてやってたら、非常に面倒くさいのでここでもURL Schemeが活躍します。今回はデスクトップ版のTeamsを起動し、対象のアドレスの人を呼び出し、メッセージの入力までをやってみますが、非常に簡単です。

  1. Power Automate Desktopでフローを作成する
  2. フローに、VBScriptの実行を追加する。
  3. ダブルクリックして、以下のスクリプトを記述する
  4. 実行すると、ダイレクトにその人とのチャット画面が立ち上がり、メッセージが入った状態になります。

図:フローの一つとして使えます

その他の便利な機能

メンバータグ付け

2020年4月からリリースされた新機能ながら、あんまり使われていないのか話題に登っていないような気がする機能。この機能は同じチャンネル内に参加してるメンバーに対してタグ付けして、そのタグを持ってメンションを送る機能。つまり、そのタグのメンションに含まれていない人には通知は飛ばない(ただし同じチャンネル内なので、もちろん投稿を見ることは可能)

主な使い所としては、「総務」というチャンネルを作り参加しているメンバーに対して「経理」「人事」「給与計算」「IT」といった役割のタグを設けて、そのタグを持ってメンションを送ることで、どの役割の人宛の話題なのかが明確になる。Teamsはメンションで送らないと通知が行かない特性があるため、だからといって、@teamで全員にメンション送るというのも要領が悪い。そこでこのタグを使うというわけです。ただし、異動が多い・人数が多い場合にはこのタグの管理が少々面倒になるかもしれない。作り方は以下の通り

  1. チャンネルをクリックして、「…」をクリックし、チームを管理をクリック
  2. デフォルトではチャンネルオーナーだけがタグ付できますが、設定=>タグからメンバー全員が付けられるようにも可能
  3. メンバー一覧に於いて、タグの付近を触るとマークが出るので、クリックする
  4. すでにあるタグの場合は選べば良い。ない場合には「xxxを作成」を選択すれば新しいタグを付けられる
  5. タグは複数つける事が可能。また当然日本語も可能です。ただし、チーム毎に必要なので、あまり多くのチームを作ると面倒なことになる。
  6. Microsoft Teams 管理センターでもタグの管理は可能です。
  7. 実際にメンションを送る場合には、例えば@会社というタグを作った場合には、@会社 コメントという形でチャット欄で入力する事でチャンネル内の会社タグを持ってる人にだけ、メンションが送られます
  8. 企業で使う場合、IT管理者がこのタグ機能をオフにしてる場合解除しないと利用できません

図:メンションリストに出てきた

相手の画面を操縦する

Teamsは他のアプリケーション同様に画面共有をして、会議参加者に対してPowerPointの資料などを表示しながら会議が可能です。ですが、それ以外にも「画面を遠隔操作させる」事が可能になっています。会議だけでなく、研修などで何かのアプリケーションの操作を教えるようなシーンで、参加者で出来ない人がいた場合、主催者側へ画面共有した後に許可を与えることで、主催者側がその画面を遠隔から操縦ができます。画面共有は知っていても操縦できる事は知らない人が多いですね。

研修会のサポートであったり、社内ヘルプデスクなどで相手の声を聞きながらサポートなど会議ではない使い方では非常に重要な機能になると思います。

この操縦許可は以下のように与えます。

  1. 会議中に画面操縦をしてもらいたい側が、操縦する側へ画面共有を行う。
  2. 画面共有は特定ウィンドウではなく画面全体のほうが望ましい(ポップアップやドロップダウンメニューなどが表示されないので)
  3. 共有した側の上部に「制御を渡す」という項目が出るので、ドロップダウンで渡したい相手を選ぶ(逆に相手側から制御を要求することも可能)
  4. 相手はTeams上の共有画面上からマウスやキーボードで操縦が可能(相手と自分のマウスがデスクトップに表示されます)
  5. 共有した側の上部で「キャンセル」をすれば、遠隔操縦をキャンセル可能
  6. リモートデスクトップのような操作感なので、ネットワーク回線が遅いと動作は遅いですが、直接操縦できるので、操作デモをさせることが可能です。

図:画面制御の許可画面

図:遠隔操縦している様子

Teamsのタブに埋め込む

Google Apps Scriptで作ったウェブアプリケーションやスプレッドシートは、Teamsのタブに埋め込む事が可能です。作業はひどく簡単なので、こうしておくことで、実際にそのTeams関連のアプリをダイレクトにその場で作業ができるのもメリットの一つです。

  1. Google SpreadsheetやGoogle Apps Scriptで作成したウェブアプリケーションのURLを取得する
  2. Teamsのチャネル上部にある+ボタンをクリック
  3. タブの追加では「Webサイト」をクリック
  4. タブ名を入れて、1.のURLを入れて、保存ボタンをクリック
  5. これでチャネルにスプレッドシートやウェブアプリが埋め込み可能です。流れ作業でそのまま関連の仕事をできるので非常に効率アップします。

図:スプレッドシートにアプリを埋め込み

会議の様子を録画する

TeamsにはMicrosoft365のEnterprise E1, E3, E5のユーザだけ画面の録画機能が使えるようになっています。Google Hangout MeetもG Suite Enterpriseのユーザだけがこういった機能が使えます。しかし、一般ユーザにはTeamsでは録画ができません。また、Enterpriseではないようなケースでも当然使えないわけです。

しかし、Google Chromeの拡張機能を使えば録画は可能になります。タブ単位やデスクトップ録画など様々なタイプの録画可能なものがあります。但し外部にアカウントを必要とするケースが多いので、その点は注意です。主に使われてる拡張機能は、Nimbus Screenshot & Screen Video RecorderScreencastifyLoomApertureなどなど。Screencastifyはfree版は5分しか録画できないので、有償版が必要ですね。。。

また、Windows10の場合標準でXbox Game Barというスクリーンキャプチャーアプリが入っているので、Windowsキー+Gキーで録画が可能です(ゲーム実況などで使われています)。こちらはアカウント不要のローカルアプリケーションなのでオススメです。Xbox Game Barが使えない場合は定番のCamstudioのようなスクリーンキャプチャアプリも良いかもしれません。

会議の様子を録画する目的は、会議の議事録起こしを後で行う、研修などの様子を取って後で社内で教材として活用するなどビジネスシーンでも意外と利用する頻度とシーンは多いです。会議や研修に参加できなかった人のためにも、録画して配信・共有しておくと仕事が捗ると思います。ぜひ活用しましょう。

図:Screencastifyでの録画シーン

スマフォのカメラを流用する

WindowsやLinux端末の場合、AndroidやiPhoneのカメラを利用してTeamsの会議を行う事が可能です。これを行うためには、DroidCamというアプリケーションが必要になります。

スマフォのカメラの映像をTeams側で仮想カメラとして利用できるようになるため、以下のようなメリットがあります。

  1. 例えば支店間でTeamsを行うのに、別途専用のウェブカムを購入する必要なくなる
  2. PC側のウェブカメラが貧弱でも高解像度(上限720pだけれど)のスマフォのカメラで高解像度で映せる
  3. ウェブカムが無いデスクトップPCなどで、スマフォをウェブカムの代用をさせる事ができる
  4. カメラを別にできるので、PC目の前ではなく、ちょっと別の場所を写す事が可能になる(持ち運び可能ですし)
  5. 映像だけでなく音声もスマフォ側からの入力可能

といった結構地味に利便性が向上します。スマフォとPCの接続は、WiFi、USBケーブルがありますが、一番ラクなのはWiFi経由。今回WiFi経由でTeamsのカメラをDroidcamにしてみたいと思います。

  1. PC側にDroidCam Clientをインストールする。
  2. スマフォ側にも、DroidCamアプリをインストールする
  3. PCとスマフォは同じWiFiに参加させておく
  4. スマフォにIPアドレスが出てるので、これを控えておく
  5. DroidCam ClientにてIPアドレスに4.のスマフォのアドレスを入れる。Startをクリックすると映像が出てくる
  6. ChromeでTeamsを起動する(デスクトップ版でも利用可能)
  7. 会議を開き、今すぐ会議をクリックする。この時カメラとマイクをChromeに許可しましょう。
  8. ⚙マークがあるはずなので、それをクリックすると右サイドバーが開く
  9. カメラにてDroidCam Source3を選択する
  10. すると、TeamsのカメラがPCのカメラからDroidCam Clientの仮想カメラに切り替わる
  11. これでスマフォをカメラにして会議が可能になる

WiFiの速度がしょぼくなければこれで自由度の高いカメラ操作とクオリティを簡単に実現可能に。有償版のアプリの場合拡大や画面の回転などもできるようになるみたいです。

また、GoProなどのアクションカムでも同様のことが実現可能です。ウェブカムの無いデバイスでも、会議参加が可能になる良い手段です。

大解像度時代 - GoProで動画を作成する

図:スマフォ側のIPアドレスを控えておく

図:PC側クライアントにIPアドレスを入れて接続

図:カメラのソースを変更する

声だけ参加・AIで姿を生成してカメラに投影する

最近はAIが本格的に色々なエリアに進出してきていますが、ついに会議の姿をAIが生成して、本人は声だけで参加というなんとも凄いサービスが登場しました。Xpression Cameraというサービスですが実際に使ってみました。

WindowsとmacOS用にアプリが用意されており、それぞれインストールしてアカウントを作成したら以下のセットアップをします。

  1. 自身の上半身姿の写真をアップロードする
  2. ついでに好きな背景写真もアップロードして変更可能
  3. この状態で喋ると、AIが自動的に写真を変化させて、話に合わせて写真の画像が動き、またカメラが使える場合には動作も変化します。
  4. TeamsやGoogle Meet側でデバイスの設定をxpression cameraに変更するとこの映像が会議アプリ側に流れます

声だけで参加なので、Bluetoothヘッドフォンなどをしながら本人別の事をしながらといったことが可能になり、お掃除しながら会議といった良いのか悪いのか、そういったことが本当に実現可能。また極端に若い時代の自分の写真を使うのも当然ながら可能ですし、もはや本人画像でなくても可能ではないかと思います。

ただしきちんとデバイスの設定変更をしていないと素の状態が流れますのでなかなか注意が必要。逆に言えばカメラが無くてもTeamsで映像付きで参加も可能なので、デスクトップ機(Mac Miniとか)でも使える点は優れていると思います。

7日間だけ無償で試せて、月額8ドルの有償サービスです。

図:Xpression Camera側の設定

図:Teams側での設定変更

トラブルシューティング

アプリ版とウェブ版での音のトラブル

自分自身は社内では普段はメモリ消費量の少ないウェブ版を利用しています。しかし、多くの人はデスクトップ版を利用していたりします(デスクトップ版はElectronで作成されているようです)。しかし、この2つなのですが、最近気がついた事象として「お互いで違う版のTeamsを利用していると音声が届かなくなる」というケースがありました。サウンドデバイスの指定が間違ってるという事はなく、こちらもデスクトップ版を利用すると問題なく接続が出来ました。

自分の契約アカウントと会社のアカウント間でテストをした際には同様の事象はなかったのですが、こういったケースが稀に発生するので、その際は相手の版に合わせてあげるとトラブルを回避することができると思います。

プロキシ環境下で音声が定期的に切れる現象

会社では何が何でも「プロキシ経由でないと通信をさせない」という古い方針のようで、これが原因でTeamsの通信が定期的に途切れる現象に毎回遭遇しています。コロナ禍の中では「全てVPN経由でないと接続させない」といった暴挙をした結果、まともに接続もできなくなるというインフラ屋としてはかなりNGなことをされて、えらく迷惑を被りました(クラウドのサービスをVPN経由でないと使わせないという判断は、そもそもオカシナ判断です)。

大企業でもこの「プロキシ経由でなければ社内から社外へは通信させない」という手法が未だに利用されてるケースがありますが、あまり知られてない事ですが「Teams利用時はプロキシ利用は非推奨である」というドキュメントも用意されています。他にもUDP通信の許可等、情報システム側での設定不良が原因のケースがあります。

使ってる環境で、このような事象が発生している場合、プロキシ側に問題があるケースがあるので、情シス側はよくよく確認するべきでしょう。

障害発生状況を確認する

Teamsの利用に於いて自分に問題があるのか?障害が発生していて通信ができていないのか?といった切り分けは、一般のユーザにはなかなか難しいと思います。故に情シスが率先してその状況を把握してアナウンスしてあげる必要があります。

簡単に状況確認する手段としては

  • DownDetectorにて一般ユーザからの障害発生報告に基づく情報を確認する
  • TwitterのMicrosoft 365 Statusのアカウント(公式)にて確認する
  • 管理者の場合は、Microsoft365管理センターを開き、ハンバーガーメニューから正常性⇒サービス正常性を開き状況確認が可能です。

図:DownDetectorは非常に便利なサービス

図:管理センターから確認してる様子

Teamsライセンスの無い人を会議に参加させる注意点

相手がTeamsライセンスやMicrosoftアカウントを持ち合わせていない人を普通にカレンダーで招待として相手のメアドを入れて送ったケースで、最近やけに問い合わせが多いのが「アカウントを持っていないのにサインインを求められる」、「ライセンスが無いのに参加方法がわからない」といったものがあります。

これ答えを言うと、招待された側が仕組みを理解していない事が原因であることが多いです(つまり勘違い)。以下にその説明を記述します。

  1. 招待する側はTeams管理センターを開き、左サイドバーから会議設定を開く
  2. 匿名ユーザーが会議に参加できます」はオンにしておく必要があります。
  3. 招待された側は招待リンクをクリックしたら、Teamsで開くか?聞かれますがそもそもアカウントが無いのでキャンセルをクリック
  4. このブラウザーで続ける」をクリック
  5. Teams画面が出てくるので、「今すぐ参加」をクリックする
  6. あとはそのまま会議に参加できる

以前までは、Windows用のTeamsアプリはアカウントとライセンスがなければ使えませんでした。しかし、2024年3月に個人向けTeamsと企業向けTeamsを統合した新しいTeamsクライアントでテストをしてみたところ、ライセンスもログインもしていない状態でもアプリ版を使うことが出来ました。クライアントのダウンロードはこちらから。この件はコミュニティでもよく取り上げられてる問題です。

  1. ライセンスもない招待された側で会議リンクをクリックする
  2. Teamsアプリで参加するをクリックする(これまではこのブラウザーで続けるをクリックしてました)
  3. ネイティブのTeamsアプリが起動し、ログオン画面と通常の会議参加画面の2つが出てくる
  4. 会議参加画面のほうで名前を入力して参加すればそのまま会議に入ることが出来る。

かなり面倒でややこしかったものが整理されて、アカウントもないといったトラブルはこれで減るのではないかと思います。

図:これがオンになっていないと外部の人を招待しても入れない

図:会議参加画面

ゲストで招待されたのに入れずエラーになる

自身はTeamsのライセンスを持っておらず、先方からTeamsのチャットやチャンネルにゲストとして招待された場合、招待メールのOpen Teamsを開けば通常は自分自身のメアド(相手側に登録されてるはず)を入力してログインすると、7桁のPINコードが送られてきて、それを元に入る仕組みになっています。

この仕組みはおよそ1週間で再度同じ作業をして入ることになるのですが、突然として入れなくなったり(そのようなユーザがいないといった表示)、「選択したアカウントまたは組織への切り替え中に問題が発生しました」というエラー表記が出て入れなくなるなど困ったことがおきます(Teamsの会議は普通に入れたりするし、別の招待を受けてるURLだと問題なく入れたりする)

この場合の対処法は以下の手順で入れるようになります(Chromeでの設定でありデスクトップアプリの設定ではありません)

  1. Chromeの右上の「︙」をクリックする
  2. 設定をクリックする
  3. 左サイドバーの「プライバシーとセキュリティ」を開く
  4. サードパーティCookie」をクリックする
  5. すべてのサイトデータと権限を表示をクリックする
  6. 右上の検索窓からteamsで検索するとmicrosoft.comが出てくるのでクリックする
  7. teams.microsoft.comが出てくるので、ゴミ箱アイコンをクリックして削除する
  8. 同じようなのが複数あることがあるので同様に削除する
  9. あらためて招待されたURLをクリックして、自身のメアドを入力してPINコードがくれば解決です

Teamsはこのように非常に厄介な問題を抱えているので遭遇した場合にはCookie削除がもっとも手っ取り早いので頭の隅にでも置いておくと右往左往せずに済みます。

図:突如として入れなくなる

図:こんなエラーが出ることも

図:Cookie削除ですべて解決

関連リンク

Microsoft Teamsをもうちょっとだけ便利に使う方法” に対して6件のコメントがあります。

  1. イマイエイイチ より:

    とても貴重な記事、ありがとうございます。
    TeamsにPower Automate DesktopからURL Schemeを使ってチャットを送る記事を参考にして作成しました。
    メッセージに改行を含めたくを含めたり、\nを含めたりしましたが、いずれもうまくいかずそのままテキストとして表示されるだけでした。
    メッセージ内に改行を入れる場合には、どのようにすればよいのかご教授願えませんでしょうか。
    よろしくお願い致します。

    1. officeの杜 より:

      Power AutomateやGraph APIを利用して送信する場合は、改行コードやHTMLを使った送信が可能ですが、URL Schemeを使った手法では、いろいろテストしてみましたが、改行コードを入れる方法は無いようです。

      1. イマイエイイチ より:

        ご丁寧に回答くださりありがとうございました。
        これからも記事を楽しみしております。

  2. 聖ちゃん より:

    はじめまして。
    いつも参考にさせていただいています!
    URL Schemeの部分で質問があります。
    今、個人userとチームのチャネルに投稿するパターンを記載いただいているのですが、
    チャット内の既存グループを指定してチャットを送る場合はどのように指定すれば良いのでしょうか?
    ご教示いただけますと幸いです。よろしくお願いいたします。

    1. officeの杜 より:

      聖さん

      色々探してみましたが、Graph APIではできるっぽいですが、現時点でtagを利用したUrlschemeは装備されていないようです。

      https://techcommunity.microsoft.com/t5/microsoft-teams/deeplink-to-tag/m-p/2412303

      https://mofumofupower.hatenablog.com/entry/tagmention_flow

      1. 聖ちゃん より:

        ご回答いただきありがとうございました。
        引き続き参考にさせていただきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)