ささみ学習帳 - sasami's study book

ささみ学習帳

Microsoft365 や Power Platform について学んだこと・アイデアのメモ

Vivaエンゲージ(Yammer)のプライベートメッセージを送信する Power Automate クラウドフロー

Vivaエンゲージ(Yammer)のプライベートメッセージを使うシーンは?

Twitter等のSNSにDM(ダイレクトメッセージ)機能があるように、Vivaエンゲージ(Yammer) にもプライベートメッセージ機能があります。 Microsoft365の一部として組み込まれた現状ではTeamsが使えますから敢えてYammerのプライベートメッセージを使うケースは非常に少ないかもしれません。
(2023年1月にTeamsで大規模障害が起きた際にはYammerは問題なく利用できたためプライベートメッセージが代替の連絡手段として少しだけ役立ったことがありました。)
もはや第一線で活躍するシーンは少ないかもしれませんが、プライベートメッセージをPower Auotmateから送信できるか? 好奇心から調べてみましたので記事にまとめました。
プライベートメッセージを活用しているという方いらいっしゃったら、どんな使い方をされてるのかぜひコメントいただけると嬉しいです。

Yammer REST API を使えば送信できる

基本的にはこちらと同じアプローチでSharePoint コネクタの「SharePoint に HTTP 要求を送信します」アクションを使って、Yammer REST APIでメッセージを投稿すれば実現できそうです。
SharePoint コネクタ「SharePoint に HTTP 要求を送信します」アクションでYammer REST APIを使う事はアクションの想定外の使い方と思われます。ある日突然使えなくなる可能性がありますのでその点は注意です。

前回と違い、プライベートメッセージについてはドキュメントに記載がありました。
learn.microsoft.com

一応今回もchatGPTに聞いてみました。

chatGPTに聞いてみる

パラメーター 説明
body メッセージ本文
direct_to_user_ids 送信先ユーザーID

パラメーター2つがあればで送信できることがわかりました。 この情報をもとにPower Automate フローを作成してみました。

フロー全体

ポイント解説

Yammer REST API でユーザーIDを取得する

メッセージを送るユーザーのIDが必要です。ここでのIDはYammer独自の内部的なIDになります。 その為、Yammer REST API をつかってメールアドレスからユーザーIDを検索します。

パラメーター 説明
サイトのアドレス https://www.yammer.com/
方法 GET
URL /api/v1/users/by_email.json?email=ここにメールアドレス
ヘッダー 未設定
ボディ 未設定

アクションの出力はアレイになっているのでfirst関数で1つめのidを取得します。

first(body('SharePoint_に_HTTP_要求を送信します-userId検索'))?['id']

テナント内に存在しないメールアドレスを指定した場合はAPI実行でエラーが発生しますので、実行条件の構成で分岐させています。

JSONの改行を適切に処理する

メッセージに改行が含まれる場合、そのまま渡してしまうと正常にメッセージ送信されません。 JSONの解析アクションを通すことで、適切に改行が処理されます。 こちらのページを参考にさせていただきました。

cloud.config Tech Blog 「Power Automateで改行を含むJSONデータを扱う #PowerPlatformリレー」
tech-blog.cloud-config.jp

プライベートメッセージを送信する

パラメーター 説明
サイトのアドレス https://www.yammer.com/
方法 POST
URL /api/v1/messages.json
ヘッダー 未設定でOK
ボディ 上記のjson

こちらのjsonで送信できます。

{
    "body": "メッセージ",
    "direct_to_user_ids":"宛先ユーザーid"
}

実行結果

問題なく送信できました。