spark / cbh /api /calls /services /daily.py
brestok's picture
update
ed39658
import httpx
from cbh.api.calls.models import CallModel
from cbh.api.events.models import EventModel, EventShorten
from cbh.core.config import settings
async def create_meeting_room(event: EventModel | EventShorten) -> str:
# return ''
payload = {
"properties": {
"exp": int(event.endDate.timestamp()) + 3600,
"enable_screenshare": True,
"enable_chat": True,
"nbf": int(event.startDate.timestamp()) - 3600 * 24,
},
"privacy": "private",
}
async with httpx.AsyncClient() as client:
response = await client.post(
"https://api.daily.co/v1/rooms",
json=payload,
headers=settings.get_headers(settings.DAILY_API_KEY),
)
response.raise_for_status()
return response.json()["url"]
async def create_daily_token(call: CallModel, account_id: str) -> str:
is_coach = call.coach.id == account_id
room_name = call.roomUrl.split("/")[-1] if call.roomUrl else None
if not room_name:
raise ValueError("Room URL is required to create a meeting token")
payload = {
"properties": {
"room_name": room_name,
"is_owner": is_coach,
"user_name": call.coach.name if is_coach else call.customer.name,
"user_id": account_id,
"exp": int(call.event.endDate.timestamp()) + 3600,
"nbf": int(call.event.startDate.timestamp()) - 3600 * 24,
"eject_at_token_exp": True,
}
}
async with httpx.AsyncClient() as client:
response = await client.post(
"https://api.daily.co/v1/meeting-tokens",
json=payload,
headers=settings.get_headers(settings.DAILY_API_KEY),
)
response.raise_for_status()
return response.json()["token"]