package agent import ( "time" "github.com/livekit/protocol/auth" "github.com/livekit/protocol/livekit" ) func BuildAgentToken(apiKey, secret, roomName, participantIdentity, participantName, participantMetadata string, permissions *livekit.ParticipantPermission) (string, error) { grant := &auth.VideoGrant{ RoomJoin: true, Agent: true, Room: roomName, CanSubscribe: &permissions.CanSubscribe, CanPublish: &permissions.CanPublish, CanPublishData: &permissions.CanPublishData, Hidden: permissions.Hidden, CanUpdateOwnMetadata: &permissions.CanUpdateMetadata, } at := auth.NewAccessToken(apiKey, secret). AddGrant(grant). SetIdentity(participantIdentity). SetName(participantName). SetKind(livekit.ParticipantInfo_AGENT). SetValidFor(1 * time.Hour). SetMetadata(participantMetadata) return at.ToJWT() }