🎏

PowerAutomateを使ってYammerで特定の語を含む投稿があったときにTeamsに通知&投稿に自動リプしてもらう

2023/05/08に公開

ボードゲームクラブの幹事をしていて、Yammer(今はViva Engage?)で「ボードゲームに興味があります!」みたいな投稿をした人にクラブへの勧誘をしよう、となったのですが、yammerをパトロールして該当する投稿を見つけて、、、という作業を毎日やるのもアレだなあ、と思ったのでPowerAutomateでどうにかしよう、となりました。

やること

  1. Yammerの特定のコミュニティに投稿があったとき、投稿のテキスト内に「ボードゲーム」という語が含まれているかチェック

  2. 含まれていたらbot以下のようなフォーマットでTeamsに自分宛てに通知してもらう

ボードゲームに興味がある人がいました!
{該当の投稿内容}
{投稿へのYammerのリンク}

  1. 該当の投稿に以下のような感じで自動リプ
    ボードゲームに興味がおありですか?ボードゲームクラブにjoinしませんか?

作り方

トリガーの選択

最初にフローに名前をつけてトリガーを選択します。
ここで設定したイベントをトリガーにしてPowerAutomateのフローが実行されます。

PowerAutomateのフロー作成の画面で「自動化したクラウドフロー」を選択

フロー名を適当につけて、「フローのトリガーを選択してください」のテキストボックスでyammerを入力すると、yammer関連のトリガーが候補で表示されます。
今回は「グループに新しいメッセージがある場合」を選択して、「作成」ボタンをクリック

※このトリガーを選択するところでYammerへの認証が求められると思うので、認証を求められたらログインして下さい。
そうすると自分が使用しているYammerの情報が以降のフロー設定の際に表示されるようになります。

フローの設定

投稿の取得対象のYammerグループを設定

グループIDの箇所で投稿を取得したいYammerグループを、ネットワークIDで使用中のYammerのネットワークIDを選択します(テキストボックス内をクリックすると候補がでてくるので、その中から選んでください。初期表示ではDefaultとなっています。)

「特定の語が含まれていたら」の条件を追加

設定が完了したら、上の画像の「新しいステップ」をクリックして、「条件」を選択します。

そうすると、条件、条件を満たした場合のアクション、条件を満たさなかった場合のアクションを設定できるようになります。

条件を設定します。
ここでは、投稿のテキスト内に「ボードゲーム」という語が含まれているかチェックしたいので、下記のように条件を設定します。

「値の選択」のテキストボックスorその下の「動的なコンテンツの追加」をクリックすると、
こんな感じで前の処理で設定したYammerのコンテンツを取得することができます。
今回は投稿テキストがチェック対象になるので、「メッセージテキスト」を選択します。

続いて、こんな感じで「投稿テキストの中に'ボードゲーム'という語が含まれているか」という風に条件を設定します。

ここまででやりたいことの以下はクリアです。

  1. Yammerの特定のコミュニティに投稿があったとき、投稿のテキスト内に「ボードゲーム」という語が含まれているかチェック

Teamsに通知してもらう

これで条件ができたので、この条件を満たした時のアクションを追加します。
「はいの場合」の中の「アクションの追加」をクリック

  1. 含まれていたらbot以下のようなフォーマットでTeamsに自分宛てに通知してもらう
    ボードゲームに興味がある人がいました!
    {該当の投稿内容}
    {投稿へのYammerのリンク}

Teamsで自分宛てに通知してもらうための設定をしていきます。
Microsoft Teamsを選択

(ここでTeamsへの認証が求められるかもしれないので、求められたらログインして認証)

「チャットまたはチャネルでメッセージを投稿する」を選択

今回はbotに自分宛てに通知してもらうので、
「投稿者」は「フローボット」を、
「投稿先」は「Chat with Flow bot」を、
「Recipient」はテキストボックスで自分がTeamsで使っている名前を入力したら候補に出てくるので、それを選択して下さい。

通知してもらうメッセージ内容を設定します。今回はこんな感じにしたいので、

ボードゲームに興味がある人がいました!
{該当の投稿内容}
{投稿へのYammerのリンク}

Messageで投稿内容とリンクを挿入したい箇所に「動的なコンテンツ」から
「メッセージテキスト」と「メッセージWeb URL」(←URLって検索すると出てきます)を選択して挿入します。

メッセージの設定が完了

該当の投稿に自動リプしてもらう

通知してもらうまではできたので、最後にこれを設定していきます

  1. 該当の投稿に以下のような感じで自動リプ
    ボードゲームに興味がおありですか?ボードゲームクラブにjoinしませんか?

「はいの場合」の中で「アクションの追加」を選択

「投稿メッセージ」を選択

アクションが追加されたら、「詳細オプションを表示する」をクリック

設定するのは

  • グループID : 投稿先のYammerのグループID。テキストボックスをクリックしたら候補が表示されるのでそこから選択
  • メッセージテキスト:自動リプしたい内容
  • ネットワークID: 投稿先のYammerのネットワークID。テキストボックスをクリックしたら候補が表示されるのでそこから選択
  • 返信先ID:最初の処理の「グループに新しいメッセージがある場合」で取得したメッセージのID。(これで「グループに投稿された新しいメッセージで'ボードゲーム'を含む投稿のメッセージID」がここに設定されます)

これで完了です。フローの構築が終わったらここで保存します。

ちなみに、最初はここに書いてるように勧誘の自動リプまでするようにしましたが、それだとウザいかもしれないので結局最後のアクションは消して1つ前の通知だけしてもらうようにしました

おまけ

特定の投稿以降or以前のメッセージを取得したい、みたいなときはこのアクションで「削除までの期間」「より新しい」の箇所に特定の投稿のIDを設定しますが、

動的にメッセージIDを設定するのではなく「特定の投稿」を静的に設定する場合はここにメッセージIDを設定しないといけません。
YammerのメッセージIDってどうやってgetするんだっけ?となったのでChatGPTちゃんに聞いたらThreads/の後だよ、と教えてもらったのですが、

実際のThreads/以降のメッセージIDはBase64でエンコードされているので、こういうツールを使って一旦デコードした数値を使って下さい。
https://www.en-pc.jp/tech/base64.php

Discussion