53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
const express = require('express');
|
|
const axios = require('axios');
|
|
const router = express.Router();
|
|
|
|
const FEISHU_APP_ID = process.env.FEISHU_APP_ID;
|
|
const FEISHU_APP_SECRET = process.env.FEISHU_APP_SECRET;
|
|
const BASE_URL = 'https://open.feishu.cn/open-apis';
|
|
|
|
// 获取飞书 tenant_access_token
|
|
async function getToken() {
|
|
const response = await axios.post(
|
|
BASE_URL + '/auth/v3/tenant_access_token/internal',
|
|
{
|
|
app_id: FEISHU_APP_ID,
|
|
app_secret: FEISHU_APP_SECRET
|
|
}
|
|
);
|
|
return response.data.tenant_access_token;
|
|
}
|
|
|
|
router.get('/test', (req, res) => {
|
|
res.json({
|
|
status: 'ok',
|
|
message: '飞书路由正常',
|
|
app_id_configured: !!FEISHU_APP_ID,
|
|
app_secret_configured: !!FEISHU_APP_SECRET
|
|
});
|
|
});
|
|
|
|
// 发送消息到飞书群
|
|
router.post('/broadcast', async (req, res) => {
|
|
try {
|
|
const { chat_id, title, content } = req.body;
|
|
const token = await getToken();
|
|
const response = await axios.post(
|
|
BASE_URL + '/im/v1/messages?receive_id_type=chat_id',
|
|
{
|
|
receive_id: chat_id,
|
|
msg_type: 'text',
|
|
content: JSON.stringify({ text: title + '\n\n' + content })
|
|
},
|
|
{
|
|
headers: { 'Authorization': 'Bearer ' + token }
|
|
}
|
|
);
|
|
res.json(response.data);
|
|
} catch (err) {
|
|
res.status(500).json({ error: err.message, detail: err.response ? err.response.data : null });
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|