目标
将从 Telligent(一个外联网平台)提取的 HTML 转换为纯文本并发送到 Slack
设置
发生事件时会触发 Telligent Webhook。Azure 逻辑应用接收事件 JSON。JSON 值采用 HTML 格式。Azure 逻辑应用管道内的 JavaScript Azure 函数将 JSON 值转换为纯文本。管道的最后一步在 Slack 中发布纯文本。
Azure 函数的传入代码示例
"body": "<p>" '</p><div style=\"clear:both;\"></div>"
变换方法
这是 Azure Function 中的基本代码。我省略了似乎与这个问题无关的部分,但如果有必要,我可以提供整个脚本。
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,因为我不是程序员,并且正在寻求简化我的工作流程。但是,我很感谢有关代码或我的整个方法的任何建议。