github.com/livekit/protocol@v1.39.3/agent/token.go (about) 1 package agent 2 3 import ( 4 "time" 5 6 "github.com/livekit/protocol/auth" 7 "github.com/livekit/protocol/livekit" 8 ) 9 10 func BuildAgentToken( 11 apiKey, secret, roomName, participantIdentity, participantName, participantMetadata string, 12 participantAttributes map[string]string, 13 permissions *livekit.ParticipantPermission, 14 ) (string, error) { 15 grant := &auth.VideoGrant{ 16 RoomJoin: true, 17 Agent: true, 18 Room: roomName, 19 CanSubscribe: &permissions.CanSubscribe, 20 CanPublish: &permissions.CanPublish, 21 CanPublishData: &permissions.CanPublishData, 22 Hidden: permissions.Hidden, 23 CanUpdateOwnMetadata: &permissions.CanUpdateMetadata, 24 CanSubscribeMetrics: &permissions.CanSubscribeMetrics, 25 } 26 27 at := auth.NewAccessToken(apiKey, secret). 28 SetVideoGrant(grant). 29 SetIdentity(participantIdentity). 30 SetName(participantName). 31 SetKind(livekit.ParticipantInfo_AGENT). 32 SetValidFor(1 * time.Hour). 33 SetMetadata(participantMetadata). 34 SetAttributes(participantAttributes) 35 36 return at.ToJWT() 37 }