7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

チャネルのすべての投稿にイイネするフロー

Last updated at Posted at 2024-03-17

はじめに

推しのあの子の投稿には一番にリアクションしたい!
上司氏の投稿にリアクションし忘れてると怒られる!

みなさんもそんなお困りごとありませんか?
今回はそんなお悩み事を解決するフローです!

この記事はネタフローです。
お休みの日やオフラインのときにも機械的にリアクションされることで、自動化してることが発覚すると、怒られるのでやめときましょう。

フローの解説

先にフローの全体像を貼っておきます。(今回は短いです)
image.png

使用するトリガー

新しくチャネルのメッセージが投稿されたときに起動できるトリガーには以下の4つがあります。
image.png

No トリガー
チャネルに新しいメッセージが追加されたとき
チャネルのメッセージで自分がメンションされているとき
キーワードが言及された場合
自分が @mentioned である場合

このうち①はチャネルの親投稿のみで動作するため、スレッドの返信としての投稿には使えません。

②,④は自分がメンションされていないとトリガーされないため、すべての投稿を取得することはできません。

③は返信でもトリガーされますが、指定した特定のキーワードが含まれていないとトリガーされないため、すべての投稿を取得することはできません。

…が、キーワードを工夫することでチャネルのすべての投稿を取得することができます!

トリガーの設定

キーワードが言及された場合を追加し、投稿を取得したいチームとチャネルを指定します。
肝心の「検索キーワード」ですが、"?"と入力することでワイルドカードのような検索ができるのか、すべての投稿が取得できるようです!
image.png

image.png

リアクションを付ける

リアクションを付けるには、TeamsのGraph API を使用します。
image.png

詳しいやり方は、ささみさんが解説してくれているのでそちらをご参照ください!

トリガーで取得したteamId,channelId,messageIdを使用して、以下のように設定します。
(※動的なコンテンツを使用して設定しようとすると、Apply to each は自動的に挿入されます)

URI
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 の力を借りて適切なリアクションを設定してみましょう!

少しフローが複雑になり、全体像はこのようになりました。
image.png

感情分析を追加

投稿の本文をAIにインプットし、ポジティブな投稿なのかネガティブな投稿なのか、感情分析を行います。

先に投稿本文を取得するために、1つアクションを追加しておきます。
image.png

親投稿の場合でも返信の場合でも、メッセージの詳細が取得できるようにParent Message IDreplyToMessageIdを入れておくことがちょっとした注意点ですね。

取得した投稿本文をAI Builder を利用して、感情分析を行います。
Htmlタグを含むとノイズになるかな?と思い、PlainTextを使用しています。
image.png

分析結果から適切なリアクションを設定

感情分析結果はこのようになります。
image.png

細かい数値も出ますが、ここでは単純にテキスト全体の感情を使用しましょう。
この結果は「positive/neutral/negative」の3種類から出力されるようです。

出力結果を使って、事前に設定しておいた変数からリアクションを設定しています。

image.png

変数を初期化する
{
  "positive": "😍",
  "neutral": "😐",
  "negative": "😭"
}

image.png

リアクション
variables('reaction')?[outputs('テキスト内の肯定的または否定的な感情を分析する')?['body/responsev2/predictionOutput/result/sentiment']]

もう少し簡単に、スイッチ分岐を使ってもいいかもしれないですね
image.png

おわりに

TeamsコネクタにGraph API が使用できるアクションが実装され、前からやりたかった(?)リアクションマシーンを実装することができました!
image.png

チャットの投稿に対してはこのアクションではchatsに対応していないため、まだできませんが、今後も研鑽を積んでいきたいです(?)

Teams コネクタにはもともと多くのアクションがあったので、「これがないとできない!」という要求はあまり少ないかもしれません。

個人的には、プライベートチャネル・共有チャネルの扱いに対して可能性を感じているので、もう少し確認ができ次第、また何か記事を書こうと思います💪

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?