ゴール
Telligent (エクストラネット プラットフォーム) から抽出した HTML をプレーン テキストに変換し、Slack に送信する
設定
イベントが発生すると、Telligent Webhook がトリガーされます。Azure ロジック アプリがイベント JSON を受け取ります。JSON 値は HTML です。Azure ロジック アプリ パイプライン内の JavaScript Azure 関数は、JSON 値をプレーン テキストに変換します。パイプラインの最後のステップでは、平文を Slack に投稿します。
Azure Function への着信コードの例
"body": "<p>" '</p><div style=\"clear:both;\"></div>"
変換方法
これは、Azure 関数の基本的なコードです。この質問に無関係と思われる部分は省略しましたが、必要に応じてスクリプト全体を提供できます。
module.exports = function (context, data) {
var html = data.body;
// Change HTML to plain text
var text = JSON.stringify(html.body);
var noHtml = text.replace(/<(?:.|\n)*?>/gm, '');
var noHtmlEncodeSingleQuote = noHtml.replace(/'/g, "'");
var noHtmlEncodeDoubleQuote = noHtmlEncodeSingleQuote.replace(/"/g, "REPLACEMENT");
// Compile body for Slack
var readyString = "Slack text: " + noHtmlEncodeDoubleQuote;
// Response of the function to be used later
context.res = {
body: readyString
};
context.done();
};
結果
一重引用符は正常に置き換えられ、Slack に投稿すると正確に解決されます。
次の二重引用符の置換メソッドはStatus: 500 Internal Server Error
、Azure 関数内で a をスローします。
失敗した交換方法
"\""
'"'
"
"'"'"
"["]"
"(")"
これらの置換メソッドを独自にvar
配置すると、同じエラーがスローされます。例えば:
var replace = "\""
...
var noHtmlEncodeDoubleQuote = noHtmlEncodeSingleQuote.replace(/"/g, replace);
"
のようなものに置き換えるとabc
、置き換えが成功するため、コードは正しいようです。
ありがとうございました
私はプログラマーではなく、仕事のプロセスを合理化しようとしているので、私の JavaScript を許してください。ただし、コードまたはアプローチ全体の両方についてアドバイスをいただければ幸いです。