※「Teams チャネルのスレッドの内容を3行程度に要約する Power Automate クラウドフロー💎 - ささみ学習帳」の改良版です。
改良ポイントは、チャットメッセージの要約への対応です。備忘録として以前より手順を詳しくまとめてみました。
実現できること
- Teams チャネルの特定のスレッドでこれまで会話された内容をざっくり3行程度に要約する
- Teams 特定チャットの最大50メッセージで会話された内容をざっくり3行に要約する(New)
実行イメージ
チャネルのメッセージを選択してフローを実行すると、スレッドの要約が表示されます。
夏休みの自由研究(1) pic.twitter.com/kC7jK2T0gf
— Sasami (ささみ) (@sasami_axis) 2023年8月15日
チャットの場合もメッセージの要約が表示されます。
— Sasami (ささみ) (@sasami_axis) 2023年8月27日
必要なもの
- Microsoft Teams, Power Automate
- 職場または学校アカウントでの利用です
- Azure OpenAI Serviceが利用可能であること
- 今回はgpt 3.5 turbo 16kを使っています
- ごくごく初歩的な使い方なのでOpenAI APIでもほぼ同じ事が実装可能です。
- Entra ID (Azure AD)にアプリケーション登録ができること
- Graph API利用の為にアプリ登録が必要です
- Power Automate プレミアムコネクタが利用可能であること
- 有償ライセンスもしくは検証用途であればPowerApps開発者プラン
- HTTPコネクタおよびカスタムコネクタを利用するため必要になります
- AzureAD(Entra ID)のグローバル管理者
- Azure AD (Entra ID)へのアプリケーションの登録に管理者の承認が必要です。
1.カスタムコネクタの作成
今回の目的を実現する為にはチャネルのスレッド・チャットの全メッセージを取得し、それをAOAIに渡す必要があります。しかしTeamsコネクタには取得できるアクションはありません。そのため、Graph APIを利用して取得します。
- チャネルスレッドのメッセージ取得
- スレッドの親メッセージを取得→Teams コネクタで取得可能
- スレッドの返信メッセージを取得→Graph APIで取得可能
- チャットのメッセージ取得
- チャット内のメッセージを取得→GraphAPIで取得可能
今回は、チャネルの返信メッセージを取得するカスタムコネクタの例がこちらのページで紹介されていましたので、こちらを元にチャネル関係は一部修正し、チャットの機能を追加して使用します。
基本的にはページの内容通りに作りますが、具体的な手順をまとめています。(変更箇所は赤字で記載します)
1-1.アプリケーションの登録
Entra 管理センター → ID → アプリケーション → アプリの登録 にアクセスします。
「新規登録」をクリックします。
名前:任意の名前
サポートされているアカウントの種類:この組織ディレクトリのみに含まれるアカウント
リダイレクトURI:Web / https://global.consent.azure-apim.net/redirect
と設定し「登録」します。
「概要」→基本に表示されている2つの値をどこかにコピーしておきます。
- アプリケーション(クライアントID)
- ディレクトリ(テナントID)
「認証とシークレット」→クライアントシークレット→新しいクライアントシークレットをクリック
説明と有効期限に認知の値を設定し「追加」します。
値をどこかにコピーしておきます。
「APIのアクセス許可」→ アクセス許可の追加 をクリック
Microsoft Graph をクリック
下記のようにアクセス許可を追加します
- 委任されたアクセス許可
- ChannelMessage.Read.All
- Directory.Read.All
- Team.ReadBasic.All
- TeamSettings.Read.All
- Chat.Read
- アプリケーションの許可
- ChannelMessage.Read.All
グローバル管理者で「{テナント名}に管理者の同意を与えます」をクリックし同意します。
1-2.カスタムコネクタを作成する
Power Automateにアクセス→データ→カスタムコネクタ→「カスタムコネクタの新規作成」→「一から作成」
コネクタ名:「GetTeamsMessages」※チャットの取得も追加するので変更しました
1.全般
説明:(このカスタムコネクタの機能の説明を書く)
ホスト: graph.microsoft.com
2.セキュリティ
認証タイプ:OAuth 2.0
認証プロバイダー:Azure Active Directory
ClientID:1-1.アプリケーションの登録でコピーしておいたアプリケーション (クライアント) ID
Client secret:1-1.アプリケーションの登録でコピーしておいたクライアントシークレット
Resource URL:https://graph.microsoft.com
リダイレクトURL:設定しない(できない?)
3.定義
●チャネルメッセージの返信を取得するアクションを定義
こちらのGraph APIを定義してゆきます。
アクション→新しいアクションで作成していきます。
「全般」
概要:Get channel message replies
説明:Get channel message replies
操作ID:Get-channel-message-replies
表示:Important
「要求」
要求→サンプルからインポート
動詞:GET
URL:https://graph.microsoft.com/v1.0/teams/{team-id}/channels/{channel-id}/messages/{message-id}/replies?$top={$top}
「インポート」すると要求に下記のように追加されます。
クエリ→「$top」→「編集」
名前:$top
説明:応答ごとのアイテム数を制御します。 $top の最大許容値は 50 です。
概要:応答ごとのアイテム数
既定値:50
必須?:いいえ
表示:Important
種類:Integer
ドロップダウンの種類:無効
「応答」
応答→既定の応答を追加する
本文:↓のjson
{ "@odata.context": "https://graph.microsoft.com/beta/$metadata#teams('eb825a11-3b12-4c5f-8258-fd405b1395c8')/channels('19%3Aq0-BRQ6TDgcZczl9O7V2Ye078k1eOIzgghUkpRzTlW41%40thread.tacv2')/messages('1677699468267')/replies", "@odata.count": 0, "value": [] }
●チャットのメッセージを取得するアクションを定義
続いてこちらのGraph APIを定義してゆきます。
再びアクション→新しいアクションで作成していきます。
※こちらについては上記ページには記載がありません。
「全般」
概要:Get chat messages
説明:Get chat messages
操作ID:Get-chat-messages
表示:Important
「要求」
要求→サンプルからインポート
動詞:GET
URL:https://graph.microsoft.com/v1.0/me/chats/{ConversationId}/messages?$top={$top}
「インポート」すると要求に下記のように追加されます。
クエリ→「$top」→「編集」
名前:$top
説明:応答ごとのアイテム数を制御します。 $top の最大許容値は 50 です。
概要:応答ごとのアイテム数
既定値:50
必須?:いいえ
表示:Important
種類:Integer
ドロップダウンの種類:無効
4.コード
何も設定しません。
5.テスト
定義した2つのアクションが正常に動作するかテストを行います。
まずカスタムコネクタを保存します。
次にテストに使用する接続を作成します。「+新しい接続」をクリックしてしばらく待つと接続が作成されます。
まずGet-channel-message-repliesのテストを行います。
Teamsでチャネルのメッセージのリンクをコピーします。
https://teams.microsoft.com/l/message/19:faa837de938f473eac0a1d279e8051cb@thread.tacv2/1691972876866?tenantId=xxxxxxxx-xxxx-xxxxx-xxxx-83b1ed90bdbd&groupId=dae7d868-eafc-426d-be4f-5bbbe94813c0&parentMessageId=1691972876866&teamName=gp_%E3%83%86%E3%82%B9%E3%83%88%E3%83%81%E3%83%BC%E3%83%A0A&channelName=%E3%83%86%E3%82%B9%E3%83%883&createdTime=1691972876866
team-id:オレンジ色の箇所の=より後ろ
channel-id:赤色の箇所
message-id:緑色の箇所の=より後ろ
をコピーて、カスタムコネクタのテストに貼り付けて「実行」します。
正しく設定できていれば、状態200で応答が返されます。
同様にGet-ChatMessagesをクリックしテストを行います。
Teamsでチャットのメッセージのリンクをコピーします。
https://teams.microsoft.com/l/message/19:35975ed9-608b-408a-a362-19c1f3e1e844_448060bd-fe71-424f-b70b-3456084c7ffd@unq.gbl.spaces/1692349790453?context=%7B%22contextType%22%3A%22chat%22%7D
ConversationId:赤色の箇所
正しく設定できていれば、状態200で応答が返されます。
カスタムコネクタの作成が完了しました。
新規フローを作成し、新しいステップをクリックすると作成したカスタムコネクタが表示されることが確認できます。
「Azure OpenAI 〜 Power Automate フロー編」に続きます。