@c78/node-red-contrib-wecom-group-chat-bot
Version:
Enterprise WeChat group chat WebHook robot
104 lines (93 loc) • 4.97 kB
HTML
<script type="text/html" data-template-name="wecom-text">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> 名称</label>
<input type="text" id="node-input-name" placeholder="节点名称">
</div>
<div class="form-row">
<label for="node-input-server"><i class="fa fa-cog"></i> 机器人配置</label>
<input type="text" id="node-input-server">
</div>
<div class="form-row">
<label for="node-input-msgType"><i class="fa fa-comment"></i> 消息类型</label>
<select id="node-input-msgType">
<option value="text">文本消息</option>
<option value="markdown">Markdown</option>
<option value="markdown_v2">Markdown V2</option>
</select>
</div>
<div class="form-row">
<label for="node-input-mentionedList"><i class="fa fa-at"></i> 提醒userid</label>
<input type="text" id="node-input-mentionedList" placeholder="提醒的成员userid,多个用逗号分隔, 留空由mentioned_list输入">
</div>
<div class="form-row">
<label for="node-input-mentionedMobileList"><i class="fa fa-mobile"></i> 提醒手机</label>
<input type="text" id="node-input-mentionedMobileList" placeholder="提醒的成员手机号,多个用逗号分隔,留空由mentioned_mobile_list输入">
</div>
</script>
<script type="text/markdown" data-help-name="wecom-text">
企业微信文本消息节点
### 配置项
- **名称**:节点名称
- **机器人配置**:选择企业微信机器人配置节点
- **消息类型**:选择要发送的消息类型
- 文本消息:支持发送普通文本,可以@群成员
- Markdown:支持发送 Markdown 格式的消息,支持在 content 中使用 `<@userid>` 扩展语法来@群成员
- Markdown V2:支持发送 Markdown V2 格式的消息,提供更丰富的格式选项(不支持@群成员功能)
- **提醒userid**:要提醒的用户ID列表,用逗号分隔(仅文本消息类型可用)
- **提醒手机**:要提醒的手机号列表,用逗号分隔(仅文本消息类型可用)
### 输入
: msg.payload (string) : 要发送的消息内容(必需)
: *msg.msgType* (string) : 动态覆盖配置的消息类型(可选,支持:text、markdown、markdown_v2)
: *msg.mentioned_list* (array) : 动态提醒的用户ID列表(可选,仅文本消息类型有效)
: *msg.mentioned_mobile_list* (array) : 动态提醒的手机号列表(可选,仅文本消息类型有效)
### 输出
: msg.payload (object) : 成功时输出原始消息,失败时包含错误信息
: msg.payload.error (boolean) : true 表示发生错误
: msg.payload.message (string) : 错误信息
: msg.payload.originalPayload (string) : 原始消息内容
### 注意事项
- 提醒功能(@群成员)在文本消息类型下通过配置的提醒列表实现
- Markdown 类型支持在 content 中使用 `<@userid>` 扩展语法来@群成员
- Markdown V2 类型不支持@群成员功能
- 可以通过 `msg.msgType` 动态覆盖配置的消息类型
- 如果提醒列表留空,将使用前一个节点的 `msg.mentioned_list` 和 `msg.mentioned_mobile_list`
- 即使发送失败,节点也会继续输出消息流,错误信息会包含在 payload 中
</script>
<script type="text/javascript">
RED.nodes.registerType('wecom-text', {
category: '企业微信',
color: '#27B4F1',
defaults: {
name: { value: "" },
server: { value: "", type: "wecom-config", required: true },
msgType: { value: "text" },
mentionedList: { value: "" },
mentionedMobileList: { value: "" }
},
inputs: 1,
outputs: 1,
icon: "font-awesome/fa-commenting-o",
label: function() {
return this.name || "企业微信文本";
},
oneditprepare: function() {
// 初始化时检查消息类型
var msgType = $("#node-input-msgType").val();
if (msgType !== 'text') {
$("#node-input-mentionedList").closest('.form-row').hide();
$("#node-input-mentionedMobileList").closest('.form-row').hide();
}
// 监听消息类型变化
$("#node-input-msgType").change(function() {
var selectedType = $(this).val();
if (selectedType === 'text') {
$("#node-input-mentionedList").closest('.form-row').show();
$("#node-input-mentionedMobileList").closest('.form-row').show();
} else {
$("#node-input-mentionedList").closest('.form-row').hide();
$("#node-input-mentionedMobileList").closest('.form-row').hide();
}
});
}
});
</script>