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  }