44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
require('dotenv').config();
|
|
const { DWClient, TOPIC_ROBOT, EventAck } = require('dingtalk-stream');
|
|
const { handleMessage } = require('./message-router');
|
|
|
|
const client = new DWClient({
|
|
clientId: process.env.DINGTALK_APP_KEY,
|
|
clientSecret: process.env.DINGTALK_APP_SECRET,
|
|
});
|
|
|
|
client.registerCallbackListener(TOPIC_ROBOT, async (res) => {
|
|
console.log("[DEBUG] raw:", JSON.stringify(res).substring(0,300));
|
|
const { messageType, text, senderNick, conversationId, sessionWebhook } = res.data;
|
|
console.log(`[Stream] 收到消息 from ${senderNick}: ${text?.content}`);
|
|
|
|
try {
|
|
const replyText = await handleMessage({
|
|
msgtype: messageType,
|
|
text: { content: text?.content || '' },
|
|
senderNick,
|
|
conversationId,
|
|
sessionWebhook,
|
|
});
|
|
|
|
if (replyText && sessionWebhook) {
|
|
const axios = require('axios');
|
|
await axios.post(sessionWebhook, {
|
|
msgtype: 'text',
|
|
text: { content: replyText },
|
|
});
|
|
}
|
|
} catch (err) {
|
|
console.error('[Stream] 处理消息出错:', err);
|
|
}
|
|
|
|
return EventAck.SUCCESS;
|
|
});
|
|
|
|
client.connect().then(() => {
|
|
console.log('🚀 M-DINGTALK Phase 8 Stream 模式已启动');
|
|
}).catch(err => {
|
|
console.error('[Stream] 启动失败:', err);
|
|
process.exit(1);
|
|
});
|