participant

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 5, 2026 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

Package participant provides the Participant type and related types for OmniMeet.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConnectionQuality

type ConnectionQuality string

ConnectionQuality indicates the quality of a participant's connection.

const (
	ConnectionQualityUnknown   ConnectionQuality = "unknown"
	ConnectionQualityExcellent ConnectionQuality = "excellent"
	ConnectionQualityGood      ConnectionQuality = "good"
	ConnectionQualityPoor      ConnectionQuality = "poor"
	ConnectionQualityLost      ConnectionQuality = "lost"
)

type Info

type Info struct {
	// Name is the display name of the participant.
	Name string `json:"name"`

	// Kind indicates the type of participant.
	Kind Kind `json:"kind"`

	// Identity is an optional identity string (provider-specific).
	Identity string `json:"identity,omitempty"`

	// Metadata contains arbitrary key-value pairs.
	Metadata map[string]string `json:"metadata,omitempty"`

	// Permissions defines what the participant is allowed to do.
	Permissions *Permissions `json:"permissions,omitempty"`
}

Info contains information for creating or identifying a participant.

type Kind

type Kind string

Kind represents the type of participant.

const (
	// KindHuman represents a human participant.
	KindHuman Kind = "human"
	// KindAgent represents an AI agent participant.
	KindAgent Kind = "agent"
	// KindRecorder represents a recording bot.
	KindRecorder Kind = "recorder"
	// KindObserver represents an observer (can see but not be seen).
	KindObserver Kind = "observer"
	// KindSIP represents a participant connected via SIP/PSTN.
	KindSIP Kind = "sip"
)

type Participant

type Participant struct {
	// ID is the unique identifier for this participant within the meeting.
	ID string `json:"id"`

	// MeetingID is the ID of the meeting this participant belongs to.
	MeetingID string `json:"meeting_id"`

	// Kind indicates the type of participant.
	Kind Kind `json:"kind"`

	// Name is the display name of the participant.
	Name string `json:"name"`

	// Identity is the provider-specific identity string.
	Identity string `json:"identity"`

	// JoinedAt is when the participant joined the meeting.
	JoinedAt time.Time `json:"joined_at"`

	// LeftAt is when the participant left the meeting (nil if still present).
	LeftAt *time.Time `json:"left_at,omitempty"`

	// Tracks are the media tracks published by this participant.
	Tracks []track.Track `json:"tracks,omitempty"`

	// IsSpeaking indicates whether the participant is currently speaking.
	IsSpeaking bool `json:"is_speaking,omitempty"`

	// ConnectionQuality indicates the participant's connection quality.
	ConnectionQuality ConnectionQuality `json:"connection_quality,omitempty"`

	// Metadata contains arbitrary key-value pairs for application-specific data.
	Metadata map[string]string `json:"metadata,omitempty"`

	// Permissions defines what this participant is allowed to do.
	Permissions *Permissions `json:"permissions,omitempty"`
}

Participant represents an entity that joins a meeting.

Participants can be humans, AI agents, recording bots, observers, or SIP/phone callers. Each participant can publish and subscribe to tracks.

func (*Participant) Duration

func (p *Participant) Duration() time.Duration

Duration returns how long the participant has been in the meeting.

func (*Participant) HasAudio

func (p *Participant) HasAudio() bool

HasAudio returns true if the participant has published an audio track.

func (*Participant) HasVideo

func (p *Participant) HasVideo() bool

HasVideo returns true if the participant has published a video track.

func (*Participant) IsActive

func (p *Participant) IsActive() bool

IsActive returns true if the participant is still in the meeting.

type Permissions

type Permissions struct {
	// CanPublish allows the participant to publish tracks.
	CanPublish bool `json:"can_publish"`
	// CanSubscribe allows the participant to subscribe to tracks.
	CanSubscribe bool `json:"can_subscribe"`
	// CanPublishData allows the participant to send data messages.
	CanPublishData bool `json:"can_publish_data"`
	// CanUpdateMetadata allows the participant to update their own metadata.
	CanUpdateMetadata bool `json:"can_update_metadata"`
	// Hidden makes the participant invisible to others.
	Hidden bool `json:"hidden,omitempty"`
	// Recorder indicates this participant is a recorder.
	Recorder bool `json:"recorder,omitempty"`
}

Permissions defines what a participant is allowed to do in a meeting.

func DefaultAgentPermissions

func DefaultAgentPermissions() *Permissions

DefaultAgentPermissions returns the default permissions for an AI agent.

func DefaultHumanPermissions

func DefaultHumanPermissions() *Permissions

DefaultHumanPermissions returns the default permissions for a human participant.

func DefaultObserverPermissions

func DefaultObserverPermissions() *Permissions

DefaultObserverPermissions returns the default permissions for an observer.

func DefaultRecorderPermissions

func DefaultRecorderPermissions() *Permissions

DefaultRecorderPermissions returns the default permissions for a recorder.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL