zhizhi/index.js.bak.phase7

65 lines
2.1 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

require('dotenv').config({ path: '/opt/guanghulab-dingtalk/dingtalk-bot/.env' });
var express = require('express');
var axios = require('axios');
var app = express();
var PORT = process.env.PORT || 3007;
// 引入路由器(不用 AI 引擎)
var router = require('./message-router');
app.use(require('cors')());
app.use(require('body-parser').json());
// GET验证
app.get('/dingtalk/callback', (req, res) => {
console.log('[DingTalk] GET验证请求');
res.status(200).json({ success: true });
});
// POST接收消息并按分类回复
app.post('/dingtalk/callback', async (req, res) => {
console.log('[DingTalk] POST收到消息');
res.status(200).json({ success: true });
const sessionWebhook = req.body.sessionWebhook;
const senderNick = req.body.senderNick || '未知用户';
const text = req.body.text || {};
const content = text.content || '';
if (!sessionWebhook) {
console.log('[DingTalk] 没有 sessionWebhook无法回复');
return;
}
// 调用路由器分类
const classification = router.classifyMessage(content);
console.log('[DingTalk] 分类:', classification);
// 根据分类生成不同回复
let replyContent = '';
if (classification.type === 'syslog') {
replyContent = `📡 收到 SYSLOG${classification.broadcastId || '未知编号'}`;
} else if (classification.type === 'question') {
replyContent = `❓ 收到问题,秋秋正在思考中...\n\n问题${content}`;
} else {
replyContent = `@${senderNick} 收到你的消息:${content}`;
}
try {
await axios.post(sessionWebhook, {
msgtype: 'text',
text: { content: replyContent }
});
console.log('[DingTalk] 回复成功');
} catch (err) {
console.error('[DingTalk] 回复失败:', err.message);
}
});
app.listen(PORT, '0.0.0.0', () => {
console.log('🚀 服务启动 http://localhost:' + PORT);
});
process.stdin.resume();
process.on('uncaughtException', (err) => { console.error('❌', err.message); });