# START MEET / JOIN MEET Keywords The `START MEET` and `JOIN MEET` keywords enable bots to create and participate in video meetings, bringing AI capabilities directly into video conferencing. ## Keywords | Keyword | Purpose | |---------|---------| | `START MEET` | Create a new meeting room and get join link | | `JOIN MEET` | Add the bot to an existing meeting | | `LEAVE MEET` | Remove the bot from a meeting | | `INVITE TO MEET` | Send meeting invitations to participants | --- ## START MEET Creates a new video meeting room and optionally adds the bot as a participant. ### Syntax ```basic room = START MEET "room-name" room = START MEET "room-name" WITH BOT room = START MEET "room-name" WITH OPTIONS options ``` ### Parameters | Parameter | Type | Description | |-----------|------|-------------| | `room-name` | String | Display name for the meeting room | | `WITH BOT` | Flag | Automatically add the bot to the meeting | | `options` | JSON | Meeting configuration options | ### Options Object ```basic ' Options can be set as a JSON string options = '{"recording": true, "transcription": true, "max_participants": 50}' ``` ### Example ```basic ' Create a simple meeting room = START MEET "Team Sync" TALK "Meeting created! Join here: " + room.url ' Create meeting with bot participant room = START MEET "AI-Assisted Workshop" WITH BOT TALK "I've joined the meeting and I'm ready to help!" TALK "Join link: " + room.url ' Create meeting with full options options = '{"recording": true, "transcription": true, "bot_persona": "note-taker"}' room = START MEET "Project Review" WITH OPTIONS options ``` ### Return Value Returns a room object with: | Property | Description | |----------|-------------| | `room.id` | Unique room identifier | | `room.url` | Join URL for participants | | `room.name` | Room display name | | `room.created` | Creation timestamp | | `room.host_token` | Host access token | --- ## JOIN MEET Adds the bot to an existing meeting room. ### Syntax ```basic JOIN MEET room_id JOIN MEET room_id AS "persona" JOIN MEET room_url ``` ### Parameters | Parameter | Type | Description | |-----------|------|-------------| | `room_id` | String | Meeting room ID | | `room_url` | String | Meeting join URL | | `persona` | String | Bot's display name in the meeting | ### Example ```basic ' Join by room ID JOIN MEET "room-abc123" ' Join with custom persona JOIN MEET "room-abc123" AS "Meeting Assistant" ' Join by URL JOIN MEET "https://meet.gb/abc-123" ' Join and announce JOIN MEET meeting_room AS "AI Note Taker" TALK TO MEET "Hello everyone! I'm here to take notes. Just say 'note that' followed by anything important." ``` --- ## LEAVE MEET Removes the bot from the current meeting. ### Syntax ```basic LEAVE MEET LEAVE MEET room_id ``` ### Example ```basic ' Leave current meeting LEAVE MEET ' Leave specific meeting (when bot is in multiple) LEAVE MEET "room-abc123" ' Graceful exit TALK TO MEET "Thanks everyone! I'll send the meeting notes shortly." WAIT 2 LEAVE MEET ``` --- ## INVITE TO MEET Sends meeting invitations to participants. ### Syntax ```basic INVITE TO MEET room, participants INVITE TO MEET room, participants, message ``` ### Parameters | Parameter | Type | Description | |-----------|------|-------------| | `room` | Object/String | Room object or room ID | | `participants` | Array | List of email addresses | | `message` | String | Optional custom invitation message | ### Example ```basic ' Create room and invite team room = START MEET "Sprint Planning" WITH BOT participants = ["alice@company.com", "bob@company.com", "carol@company.com"] INVITE TO MEET room, participants TALK "Invitations sent to " + LEN(participants) + " participants" ' With custom message INVITE TO MEET room, participants, "Join us for sprint planning! The AI assistant will be taking notes." ``` --- ## TALK TO MEET Sends a message to all meeting participants (text-to-speech or chat). ### Syntax ```basic TALK TO MEET "message" TALK TO MEET "message" AS CHAT TALK TO MEET "message" AS VOICE ``` ### Example ```basic ' Send as both chat and voice (default) TALK TO MEET "Let's start with the agenda review." ' Chat only (no voice) TALK TO MEET "Here's the link to the document: https://..." AS CHAT ' Voice only (no chat message) TALK TO MEET "I've noted that action item." AS VOICE ``` --- ## HEAR FROM MEET Listens for speech or chat messages from meeting participants. ### Syntax ```basic HEAR FROM MEET INTO variable HEAR FROM MEET INTO variable TIMEOUT seconds ``` ### Example ```basic ' Listen for meeting input HEAR FROM MEET INTO participant_message IF INSTR(participant_message, "note that") > 0 THEN note = REPLACE(participant_message, "note that", "") notes = notes + "\n- " + note TALK TO MEET "Got it! I've noted: " + note END IF ``` --- ## Complete Example: AI Meeting Assistant ```basic ' AI Meeting Assistant Bot ' Joins meetings, takes notes, and provides summaries TALK "Would you like me to join your meeting? Share the room ID or say 'create new'." HEAR user_input IF user_input = "create new" THEN TALK "What should we call this meeting?" HEAR meeting_name room = START MEET meeting_name WITH BOT TALK "Meeting created! Share this link: " + room.url TALK "Who should I invite? (comma-separated emails, or 'skip')" HEAR invites IF invites <> "skip" THEN participants = SPLIT(invites, ",") INVITE TO MEET room, participants TALK "Invitations sent!" END IF ELSE room_id = user_input JOIN MEET room_id AS "AI Assistant" TALK "I've joined the meeting!" END IF ' Initialize notes notes = "# Meeting Notes\n\n" notes = notes + "**Date:** " + FORMAT(NOW(), "YYYY-MM-DD HH:mm") + "\n\n" notes = notes + "## Key Points\n\n" TALK TO MEET "Hello! I'm your AI assistant. Say 'note that' to capture important points, or 'summarize' when you're done." ' Meeting loop meeting_active = true WHILE meeting_active HEAR FROM MEET INTO message TIMEOUT 300 IF message = "" THEN ' Timeout - check if meeting still active CONTINUE END IF ' Process commands IF INSTR(LOWER(message), "note that") > 0 THEN note_content = REPLACE(LOWER(message), "note that", "") notes = notes + "- " + TRIM(note_content) + "\n" TALK TO MEET "Noted!" AS VOICE ELSE IF INSTR(LOWER(message), "action item") > 0 THEN action = REPLACE(LOWER(message), "action item", "") notes = notes + "- **ACTION:** " + TRIM(action) + "\n" TALK TO MEET "Action item recorded!" AS VOICE ELSE IF INSTR(LOWER(message), "summarize") > 0 THEN ' Generate AI summary summary = LLM "Summarize these meeting notes concisely:\n\n" + notes TALK TO MEET "Here's the summary: " + summary ELSE IF INSTR(LOWER(message), "end meeting") > 0 THEN meeting_active = false END IF WEND ' Save and share notes filename = "meeting-notes-" + FORMAT(NOW(), "YYYYMMDD-HHmm") + ".md" SAVE notes TO filename TALK TO MEET "Meeting ended. I'll send the notes to all participants." LEAVE MEET ' Email notes to participants SEND MAIL participants, "Meeting Notes: " + meeting_name, notes TALK "Notes saved and sent to all participants!" ``` --- ## Example: Quick Standup Bot ```basic ' Daily Standup Bot room = START MEET "Daily Standup" WITH BOT team = ["dev1@company.com", "dev2@company.com", "dev3@company.com"] INVITE TO MEET room, team, "Time for standup! Join now." TALK TO MEET "Good morning team! Let's do a quick round. I'll call on each person." updates = "" FOR EACH member IN team TALK TO MEET member + ", what did you work on yesterday and what's planned for today?" HEAR FROM MEET INTO update TIMEOUT 120 updates = updates + "**" + member + ":** " + update + "\n\n" NEXT TALK TO MEET "Great standup everyone! I'll post the summary to Slack." ' Post to Slack POST "https://slack.com/api/chat.postMessage" WITH channel = "#dev-standup", text = "📋 **Standup Summary**\n\n" + updates LEAVE MEET ``` --- ## Configuration Configure Meet integration in `config.csv`: ```csv name,value meet-provider,livekit meet-server-url,wss://localhost:7880 meet-api-key,vault:gbo/meet/api_key meet-api-secret,vault:gbo/meet/api_secret meet-bot-default-persona,AI Assistant meet-recording-enabled,true meet-transcription-enabled,true meet-max-participants,50 ``` --- ## Bot Capabilities in Meetings When a bot joins a meeting, it can: | Capability | Description | |------------|-------------| | **Listen** | Transcribe speech from participants | | **Speak** | Text-to-speech announcements | | **Chat** | Send text messages to meeting chat | | **Record** | Capture meeting recording | | **Screen Share** | Display content (dashboards, docs) | | **React** | Send emoji reactions | --- ## See Also - [Meet App](../07-user-interface/apps/meet.md) - User interface for Meet - [BOOK_MEETING](./keyword-book.md) - Schedule meetings with calendar integration - [Calls API](../08-rest-api-tools/calls-api.md) - API reference for video calls - [Multi-Agent Keywords](./keywords-multi-agent.md) - Bot collaboration features