mirror of https://github.com/msgbyte/tailchat
feat(livekit): add livekit webhook receiver
parent
33e15a51a6
commit
3610b796ec
@ -0,0 +1 @@
|
||||
## Receive webhook from livekit and send to `livekit.service.js`;
|
@ -0,0 +1,28 @@
|
||||
import { TcBroker, SYSTEM_USERID } from 'tailchat-server-sdk';
|
||||
import brokerConfig from '../../../moleculer.config';
|
||||
|
||||
const transporter = process.env.TRANSPORTER;
|
||||
export const broker = new TcBroker({
|
||||
...brokerConfig,
|
||||
metrics: false,
|
||||
logger: false,
|
||||
transporter,
|
||||
});
|
||||
|
||||
broker.start().then(() => {
|
||||
console.log('Connnected to Tailchat network, TRANSPORTER: ', transporter);
|
||||
});
|
||||
|
||||
export function callBrokerAction<T>(
|
||||
actionName: string,
|
||||
params: any,
|
||||
opts?: Record<string, any>
|
||||
): Promise<T> {
|
||||
return broker.call(actionName, params, {
|
||||
...opts,
|
||||
meta: {
|
||||
...opts?.meta,
|
||||
userId: SYSTEM_USERID,
|
||||
},
|
||||
});
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
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'));
|
||||
|
||||
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}`);
|
||||
});
|
Loading…
Reference in New Issue