package agent import ( "time" "github.com/livekit/protocol/auth" "github.com/livekit/protocol/livekit" ) func BuildAgentToken( apiKey, secret, roomName, participantIdentity, participantName, participantMetadata string, participantAttributes map[string]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, CanSubscribeMetrics: &permissions.CanSubscribeMetrics, } at := auth.NewAccessToken(apiKey, secret). SetVideoGrant(grant). SetIdentity(participantIdentity). SetName(participantName). SetKind(livekit.ParticipantInfo_AGENT). SetValidFor(1 * time.Hour). SetMetadata(participantMetadata). SetAttributes(participantAttributes) return at.ToJWT() }