Microsoft Teams を使用した Bot を作成する上での注意点

この記事は、2018 年 5 月 15 日 に Data Platform Tech Sales Team Blog にて公開された内容です。

 

Microsoft Japan Data Platform Tech Sales Team

大塚

Microsoft Teams(以下Teams) は企業やその他組織内外のコラボレーションを行う上で非常に強力なツールです。また、最近では AI 領域の市場活性化や「働き方改革」により、人とシステムのやりとりを自動化する ”ボット” の活用も進んできております。

Microsoft Teams 製品ページ

今回はこの Teams 上でボット(以下 Bot in Teams)を活用する方法と、その際の注意点をお伝えしたいと思います。

1、ボットを Teams で利用するには

Bot を Teams で利用するには、作成した Bot Service 内の「チャネル」で「Teams」を選択する必要があります(以下図を参照)。

imageimage

上記図で保存後、先ほどの図で「ボットの埋め込みコードを取得」をクリックします。

image

このリンクを自社の Web ページ上に配置して展開することも可能ですし、a タグ内のアドレスを周知することも可能です。「Microsoft Teams」と書かれたテキストをクリックすると Teams に切り替えるメッセージが表示されるので、「OK 」をクリックします。

Teams が表示されて、チャットページに対象のボットが表示されるようになります。

image

 

2、Bot in Teams が出力するログ

ボットを Web Chat だけで運用している場合にも該当する内容ですが、Bot Service と App Service / Functions 間のエラーは以下の「チャネル」画面内の「メッセージ」をクリックすることで表示可能です(正常時にはクリックできませんのでご注意ください)。

imageimage

Bot in Teams の場合、このログにこの後ご紹介するカードのエラーも表示されますので、ちょっと動きがおかしいな?と思った時にはこのログをご確認頂くことをお勧めいたします。

 

3、コード内でクライアントが「Teams」かどうかを判断するには

この後に記載する Tips のいくつかは、Bot クライアントが「Teams」かどうかの判断が必要になります。そういった場合には以下のようなコードで判別を行うことが可能です(ここでは C# の例です)。

<Activity Object>.ChannelId == "msteams"

この ChannelId は「Microsoft.Bot.Connector.Activity Class」に属する Property です。詳細は以下の URL をご覧ください。

Microsoft.Bot.Connector.Activity Class Reference

 

4、Bot in Teamsでカードを利用する際の注意

Bot in Teams でカード(クレジットカードではありません!)を使用すると、複数の結果や選択肢をユーザーに提示する際に UX を向上させることが可能です。

利用するカードによっても使用できる手法や、記述方法が変わるため、詳細や最新の情報は以下の URL をご参照ください。

Cards Reference

 

a, 利用可能なカード

カードにもいくつか種類がありますが、いくつかのカードについては Teams 上でサポートされていないため注意が必要です。例えば OSS で広く利用されている「Adaptive Card」については、現時点ではサポートされておりません。

 

b, カードに記載可能なデータ量

カードは情報のエンリッチメントという観点からも色々と記載したくなると思いますが、Teams では1枚のカードに記載可能なデータ量に制限があります(具体的な数値は公開されておりませんので、エラー発生時には上記 Teams のログをご確認ください)。記載する予定のデータ量が変動する場合や増加する可能性がある際には、事前の調査が必要です。

また Carousel カード(Card Collection)に表示可能なカードは10枚までとなっています。カード枚数が10枚を超えることが想定される場合には、10枚ずつ発行するように調整が必要です。

 

c, カード上のテキストの整形について

カードのテキストはいくつかの方法で整形可能ですが、Teams で使用可能な一般的なカードでの整形は、現時点では「XML」形式のみがサポートされています。また Web Chat などでは「Markdown」形式のみがサポートされているため、上述のクライアントの判別方法を組み込み、処理を分ける必要があります。

 

d, Bot in TeamsでのCard Actionについて

カードではカード上のコンテンツに対して特定のアクションが実行可能なのですが、Teams では一部挙動が異なることがあるため、予めテストを重ねて挙動の確認を行うことをお勧めいたします。例えば postBack を割り当てたボタンが返す属性が、Teams では Title で、それ以外では Valueの値を返すことがあります。

カードのアクションについては、外部のリンクではありますが、MVP の方が書かれている以下の URL をご覧ください。

Action types of Adaptive Cards (in Microsoft Bot Framework WebChat)

 

5、Bot in Teamsにおける認証

Bot in Teams 上で認証?と思われるかもしれませんが、Teams そのものは Office 365(Azure AD) で認証を受けておりますが、Teams 内の Bot の画面までには認証範囲は及んでいないため、Bot は Bot でしっかりとセキュアな環境にする必要があります(外部公開用の Bot はもちろん不要です)。

このテーマはちゃんとお伝えしようとするとそれだけで1記事になってしまうので、かいつまんでご説明すると、

  • App Service 内での認証設定
  • Teams のコード変更

が必要になります。詳細は次回の投稿でお伝えしたいと思いますが、気になる方は、Teams についてのドキュメントと、外部サイトとなりますが以下の URL を参考に実装して頂ければと思います。

Microsoft Teams authentication flow for bots Bot に Azure AD 認証/認可を組み込む