背景
Teams の Trigger を使って自動化をする際、元の投稿内容が壊れて表示されることがあったのでその対処法
対象アクション
現状は、以下で再現。
チャットまたはチャネルでメッセージを投稿する
チャネル内のメッセージで応答します
現象
HTML の解析に失敗しているのか? タグが表示されてしまう。
本来は、リンク
マイページ << こんな感じ
チャットでの異常時
チャネルでの異常時
VS-Code での正常な表示
出力内容自体が壊れているのか?と思い、Outlook に送信してみたり、VS-Code で表示してみたが特に問題無さそう。
ってことで、Teams の Action に問題があるとの認識で、原因と対処を検討してみたのが今回
原因・・と思われるもの
とりあえず、以下のように改行コードが入っていて、こいつを置換して削ってやると上手くいったので原因の一つとして考えて良さそう
ただ・・
- bulletins の時だけ発生
- Outlook の Send a email の HTML では特に問題なし
- \t はあっても問題無し
という条件があるので、\n が、というよりは、エスケープコードとしての "\" が悪さをしてそうな気がする
詳細
Teams の Trigger コネクターを利用し、取得した内容を元に処理をしようとすると、ContentType:HTML で Content に HTML ベースの投稿内容が取得出来る。
例えば、新しいチャネル メッセージが追加されたとき を使った場合の例が以下
対処法
上であげた、原因を排除してしまえばいいので、改行を Replace() してやる
@{replace(outputs('Compose'),decodeUriComponent('%0A'),'')}
置換後の比較
チャットでの改善
チャネルでの改善
あとがき
HTML の Advanced Mode 編集ではよく HTML が壊れてしまうんですが、同じような原因なのかも?
ただ、Outlook では再現しなかった・・
HTML が壊れてしまう件については、以下に対処法が公開されてます。
keyword
how to fix when html message is broken in post or reply message