Designed by vectorjuice / Freepik
スタッフの五十島です!
前回の記事では、Power AutomateのTeams用の標準アクションにはない機能を、Microsoft Graphを活用して拡張する方法についてご紹介しました。
どうやら、標準アクション自体もMicrosoft Graphベースで動作しているようで、一部のアクションでは、APIから返されるJSON形式の結果を実行履歴から確認することができます。
トリガーはWebhookがベースになっているようで、アクションと同じく実行履歴からJSON形式の結果を確認できます。
今回は、このことを前提にPower Automateについてわかったことを書きたいと思います!
キーワードを含むTeamsのメッセージをトリガーにする
Power AutomateのTeams用トリガーである「キーワードが言及された場合(When keywords are mentioned)」は、指定したキーワードを使って簡単にフローを開始できる便利な機能です。
しかし、英語や数字では引っかかるのに、日本語などのマルチバイト文字ではトリガーが発火しません・・・とても不便な仕様・・・
また、調べても情報がない上に、なぜトリガーが動作しないか調べる方法もない状態でした😭
日本語をエンコードしてキーワードとして指定する
そこで、このトリガーがJSONでやり取りをする時に、英語はそのままで日本語は何かしらエンコードされた状態で受け取っていると予測して色々試してみました。
結果として、日本語をUnicodeエスケープシーケンスに変換し、さらにバックスラッシュをエスケープすることで、日本語でもトリガーの対象として指定できることがわかりました!
JSONではUnicodeエスケープシーケンスに変換された状態になっていて、Power Automateから検索する際にバックスラッシュが解釈されるためにこのような形になるのだと思います👍
例:テスト→”\\u30c6\\u30b9\\u30c8″
また、絵文字や韓国語・中国語など、他のマルチバイト文字も問題なく対象に指定できます。
ちなみに同じような考え方で、HTMLとJSONを組み合わせた形で「<br>\\n」と指定すると、改行を含んでいてもトリガーとして動作しました!
(このトリガーを動的コンテンツで指定すると、自動的にApply to eachで処理されてしまいますが、triggerOutputs()?[‘body/value’][0][‘messageId’]のように書くことで回避できます。)
※このトリガーは、実行結果においてトリガーとなったメッセージの本文を取得できませんので、個人的な推測と検証に基づいた情報です。動作は確認しましたが、公式から情報は公開されていないため、あくまでも非公式な手法としてご利用ください。
キーワードとして扱える文字列に変換するためのツール
マルチバイト文字を「キーワードが言及された場合」の検索キーワードに適した文字列に変換するためのツールを用意しました!
入力欄に入力してから【エンコード】ボタンを押すことで、変換された文字列が出力されます。
※ダブルクォーテーションで囲まないと上手くトリガーが動作しないため、「””」も含めて検索キーワードに入力してください。
ちなみに、こちらのツールはChatGPTに作成してもらいました!
特にJavaScriptやHTMLのようなメジャーでこなれている言語であれば、要望を伝えるだけでエラーなく動くプログラムを作ってくれました・・・恐るべしChatGPT!
今回は、Power AutomateのTeams用トリガーにおける日本語の扱い方についてご紹介しました!
このトリガーは、メッセージが部分一致でも問題なく動作する上に、カンマ区切りで複数の単語をキーワードにすることも可能です。
柔軟な条件指定ができるため、日本語が扱えることで、Teamsを起点にしたフローの自動実行が格段に便利になりました!
(キーワードの可読性は考え物ですが・・・)
日本語だけでなく、さまざまな言語や文字にも対応しているため、これらの情報がお役に立つことを願っています!