mirror of https://github.com/msgbyte/tailchat
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import dotenv from 'dotenv';
|
|
import path from 'path';
|
|
dotenv.config({ path: path.resolve(__dirname, '../../../.env') });
|
|
import { WebhookReceiver } from 'livekit-server-sdk';
|
|
import express from 'express';
|
|
import { callBrokerAction } from './broker';
|
|
const app = express();
|
|
|
|
console.log(path.resolve(__dirname, '../../../.env'));
|
|
|
|
if (!process.env.LIVEKIT_API_KEY || !process.env.LIVEKIT_API_SECRET) {
|
|
console.error(
|
|
'Required env LIVEKIT_API_KEY and LIVEKIT_API_SECRET from livekit'
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
const port = process.env.LIVEKIT_WEBHOOK_PORT || 11008;
|
|
|
|
app.use(express.raw({ type: 'application/webhook+json' }));
|
|
|
|
const receiver = new WebhookReceiver(
|
|
process.env.LIVEKIT_API_KEY,
|
|
process.env.LIVEKIT_API_SECRET
|
|
);
|
|
|
|
app.post('/livekit/webhook', (req, res) => {
|
|
// event is a WebhookEvent object
|
|
try {
|
|
const event = receiver.receive(req.body, req.get('Authorization'));
|
|
|
|
console.log(JSON.stringify(event));
|
|
|
|
callBrokerAction('plugin:com.msgbyte.livekit.webhook', event);
|
|
} finally {
|
|
res.json({ result: true });
|
|
}
|
|
});
|
|
|
|
app.listen(port, () => {
|
|
console.log(`Livekit Webhook Server is running on port ${port}`);
|
|
});
|