はじめに
推しのあの子の投稿には一番にリアクションしたい!
上司氏の投稿にリアクションし忘れてると怒られる!
みなさんもそんなお困りごとありませんか?
今回はそんなお悩み事を解決するフローです!
この記事はネタフローです。
お休みの日やオフラインのときにも機械的にリアクションされることで、自動化してることが発覚すると、怒られるのでやめときましょう。
フローの解説
使用するトリガー
新しくチャネルのメッセージが投稿されたときに起動できるトリガーには以下の4つがあります。
No | トリガー |
---|---|
① | チャネルに新しいメッセージが追加されたとき |
② | チャネルのメッセージで自分がメンションされているとき |
③ | キーワードが言及された場合 |
④ | 自分が @mentioned である場合 |
このうち①はチャネルの親投稿のみで動作するため、スレッドの返信としての投稿には使えません。
②,④は自分がメンションされていないとトリガーされないため、すべての投稿を取得することはできません。
③は返信でもトリガーされますが、指定した特定のキーワードが含まれていないとトリガーされないため、すべての投稿を取得することはできません。
…が、キーワードを工夫することでチャネルのすべての投稿を取得することができます!
トリガーの設定
キーワードが言及された場合
を追加し、投稿を取得したいチームとチャネルを指定します。
肝心の「検索キーワード」ですが、"?"
と入力することでワイルドカードのような検索ができるのか、すべての投稿が取得できるようです!
リアクションを付ける
リアクションを付けるには、TeamsのGraph API を使用します。
詳しいやり方は、ささみさんが解説してくれているのでそちらをご参照ください!
トリガーで取得したteamId
,channelId
,messageId
を使用して、以下のように設定します。
(※動的なコンテンツを使用して設定しようとすると、Apply to each
は自動的に挿入されます)
https://graph.microsoft.com/v1.0/teams/@{items('Apply_to_each')?['teamId']}/channels/@{items('Apply_to_each')?['channelId']}/messages/@{items('Apply_to_each')?['messageId']}/setReaction
{
"reactionType": "👍"
}
これだけでフローは完成です👍
適切なリアクションにしたい
どんな投稿でも👍してると、不適切な場面が出てくると思います。
「病気で休みます」とか「この資料まるでなってないけどどうなってますか?」とかに👍してると、顰蹙を買うこと間違いなしです。
ここは、流行りの生成AI の力を借りて適切なリアクションを設定してみましょう!
感情分析を追加
投稿の本文をAIにインプットし、ポジティブな投稿なのかネガティブな投稿なのか、感情分析を行います。
先に投稿本文を取得するために、1つアクションを追加しておきます。
親投稿の場合でも返信の場合でも、メッセージの詳細が取得できるようにParent Message ID
にreplyToMessageId
を入れておくことがちょっとした注意点ですね。
取得した投稿本文をAI Builder を利用して、感情分析を行います。
Htmlタグを含むとノイズになるかな?と思い、PlainTextを使用しています。
分析結果から適切なリアクションを設定
細かい数値も出ますが、ここでは単純にテキスト全体の感情
を使用しましょう。
この結果は「positive/neutral/negative」の3種類から出力されるようです。
出力結果を使って、事前に設定しておいた変数からリアクションを設定しています。
{
"positive": "😍",
"neutral": "😐",
"negative": "😭"
}
variables('reaction')?[outputs('テキスト内の肯定的または否定的な感情を分析する')?['body/responsev2/predictionOutput/result/sentiment']]
もう少し簡単に、スイッチ分岐を使ってもいいかもしれないですね
おわりに
TeamsコネクタにGraph API が使用できるアクションが実装され、前からやりたかった(?)リアクションマシーンを実装することができました!
チャットの投稿に対してはこのアクションではchats
に対応していないため、まだできませんが、今後も研鑽を積んでいきたいです(?)
Teams コネクタにはもともと多くのアクションがあったので、「これがないとできない!」という要求はあまり少ないかもしれません。
個人的には、プライベートチャネル・共有チャネルの扱いに対して可能性を感じているので、もう少し確認ができ次第、また何か記事を書こうと思います💪