Webhooks
plugNmeet will notify different events to the provided URL. This URL can be added in server configuration or during create room.
Receiving webhooks
Webhook requests are HTTP POST requests sent to URLs that you had configured either in server config.yml
file or during create room. A WebhookEvent is encoded as JSON and sent in the body of the request.
The Content-Type
header of the request is set to application/webhook+json
. Please ensure your webserver is configured to receive payloads with this content type.
plugNmeet will use same security pattern that livekit is following. In order to ensure webhook requests are coming from plugNmeet, these requests has Authorization
and Hash-Token
headers containing a signed JWT token. The token includes a sha256
hash of the payload. You can quickly have a look example in PHP from webhook.php.
Events
You can review the code from here. In addition to the fields below, all webhook events will include the following fields:
id
- a UUID identifying the eventcreatedAt
- UNIX timestamp in seconds
Room created
interface CommonNotifyEvent {
event: 'room_created'
room: Room
}
Room started
interface CommonNotifyEvent {
event: 'room_started'
room: Room
}
Room finished
interface CommonNotifyEvent {
event: 'room_finished'
room: Room
}
Participant joined
interface CommonNotifyEvent {
event: 'participant_joined'
room: Room
participant: ParticipantInfo
}
Participant left
interface CommonNotifyEvent {
event: 'participant_left'
room: Room
participant: ParticipantInfo
}
Track Published
In the Room and Participant objects, only sid, identity, and name are sent.
interface CommonNotifyEvent {
event: 'track_published'
room: Room
participant: ParticipantInfo
track: TrackInfo
}
Track Unpublished
In the Room and Participant objects, only sid, identity, and name are sent.
interface CommonNotifyEvent {
event: 'track_unpublished'
room: Room
participant: ParticipantInfo
track: TrackInfo
}
Recording started
interface CommonNotifyEvent {
event: 'start_recording'
room: Room
recording_info: RecordingInfoEvent
}
Recording ended
interface CommonNotifyEvent {
event: 'end_recording'
room: Room
recording_info: RecordingInfoEvent
}
Recording proceeded
interface CommonNotifyEvent {
event: 'recording_proceeded'
room: Room
recording_info: RecordingInfoEvent
}
RTMP started
interface CommonNotifyEvent {
event: 'start_rtmp'
room: Room
recording_info: RecordingInfoEvent
}
RTMP ended
interface CommonNotifyEvent {
event: 'end_rtmp'
room: Room
recording_info: RecordingInfoEvent
}
Speech to text session started
interface CommonNotifyEvent {
event: 'speech_to_text_session_started'
room: Room
speech_service: SpeechServiceEvent
}
Speech to text session ended
interface CommonNotifyEvent {
event: 'speech_to_text_session_ended'
room: Room
speech_service: SpeechServiceEvent
}
Speech to text total usage
interface CommonNotifyEvent {
event: 'speech_to_text_total_usage'
room: Room
speech_service: SpeechServiceEvent
}
Analytics proceeded
interface CommonNotifyEvent {
event: 'analytics_proceeded'
room: Room
analytics: AnalyticsEvent
}