-
Notifications
You must be signed in to change notification settings - Fork 84
Expand file tree
/
Copy pathnotetaker_demo.py
More file actions
155 lines (131 loc) · 5.48 KB
/
Copy pathnotetaker_demo.py
File metadata and controls
155 lines (131 loc) · 5.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
import os
import sys
import json
from nylas import Client
from nylas.models.notetakers import NotetakerMeetingSettingsRequest, NotetakerState, InviteNotetakerRequest
from nylas.models.errors import NylasApiError
# Initialize the Nylas client
nylas = Client(
api_key=os.getenv("NYLAS_API_KEY"),
api_uri=os.getenv("NYLAS_API_URI", "https://api.us.nylas.com")
)
def invite_notetaker():
"""Demonstrates how to invite a Notetaker to a meeting."""
print("\n=== Inviting Notetaker to Meeting ===")
try:
meeting_link = os.getenv("MEETING_LINK")
if not meeting_link:
raise ValueError("MEETING_LINK environment variable is not set. Please set it with your meeting URL.")
request_body: InviteNotetakerRequest = {
"meeting_link": meeting_link,
"name": "Nylas Notetaker",
"meeting_settings": {
"video_recording": True,
"audio_recording": True,
"transcription": True
}
}
print(f"Request body: {json.dumps(request_body, indent=2)}")
notetaker = nylas.notetakers.invite(request_body=request_body)
print(f"Invited Notetaker with ID: {notetaker.data.id}")
print(f"Name: {notetaker.data.name}")
print(f"State: {notetaker.data.state}")
return notetaker
except NylasApiError as e:
print(f"Error inviting notetaker: {str(e)}")
print(f"Error details: {e.__dict__}")
raise
except json.JSONDecodeError as e:
print(f"JSON decode error: {str(e)}")
raise
except Exception as e:
print(f"Unexpected error in invite_notetaker: {str(e)}")
print(f"Error type: {type(e)}")
print(f"Error details: {e.__dict__}")
raise
def list_notetakers():
"""Demonstrates how to list all Notetakers."""
print("\n=== Listing All Notetakers ===")
try:
notetakers = nylas.notetakers.list()
print(f"Found {len(notetakers.data)} notetakers:")
for notetaker in notetakers.data:
print(f"- {notetaker.name} (ID: {notetaker.id}, State: {notetaker.state})")
return notetakers
except NylasApiError as e:
print(f"Error listing notetakers: {str(e)}")
raise
except Exception as e:
print(f"Unexpected error in list_notetakers: {str(e)}")
raise
def get_notetaker_media(notetaker_id):
"""Demonstrates how to get media from a Notetaker."""
print("\n=== Getting Notetaker Media ===")
try:
media = nylas.notetakers.get_media(notetaker_id)
if media.recording:
print(f"Recording URL: {media.data.recording.url}")
print(f"Recording Name: {media.data.recording.name}")
print(f"Recording Type: {media.data.recording.type}")
print(f"Recording Size: {media.data.recording.size} bytes")
print(f"Recording Created At: {media.data.recording.created_at}")
print(f"Recording Expires At: {media.data.recording.expires_at}")
print(f"Recording TTL: {media.data.recording.ttl} seconds")
if media.transcript:
print(f"Transcript URL: {media.data.transcript.url}")
print(f"Transcript Name: {media.data.transcript.name}")
print(f"Transcript Type: {media.data.transcript.type}")
print(f"Transcript Size: {media.data.transcript.size} bytes")
print(f"Transcript Created At: {media.data.transcript.created_at}")
print(f"Transcript Expires At: {media.data.transcript.expires_at}")
print(f"Transcript TTL: {media.data.transcript.ttl} seconds")
return media
except NylasApiError as e:
print(f"Error getting notetaker media: {str(e)}")
raise
except Exception as e:
print(f"Unexpected error in get_notetaker_media: {str(e)}")
raise
def leave_notetaker(notetaker_id):
"""Demonstrates how to leave a Notetaker."""
print("\n=== Leaving Notetaker ===")
try:
nylas.notetakers.leave(notetaker_id)
print(f"Left Notetaker with ID: {notetaker_id}")
except NylasApiError as e:
print(f"Error leaving notetaker: {str(e)}")
raise
except Exception as e:
print(f"Unexpected error in leave_notetaker: {str(e)}")
raise
def main():
"""Main function to run all demo examples."""
try:
# Check for required environment variables
api_key = os.getenv("NYLAS_API_KEY")
if not api_key:
raise ValueError("NYLAS_API_KEY environment variable is not set")
print(f"Using API key: {api_key[:5]}...")
# Invite a Notetaker to a meeting
notetaker = invite_notetaker()
# List all Notetakers
list_notetakers()
# Get media from the Notetaker (if available)
if notetaker.data.state == NotetakerState.MEDIA_AVAILABLE:
get_notetaker_media(notetaker.data.id)
# Leave the Notetaker
leave_notetaker(notetaker.data.id)
except NylasApiError as e:
print(f"\nNylas API Error: {str(e)}")
print(f"Error details: {e.__dict__}")
sys.exit(1)
except ValueError as e:
print(f"\nConfiguration Error: {str(e)}")
sys.exit(1)
except Exception as e:
print(f"\nUnexpected Error: {str(e)}")
print(f"Error type: {type(e)}")
print(f"Error details: {e.__dict__}")
sys.exit(1)
if __name__ == "__main__":
main()