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
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
' Options can be set as a JSON string
options = '{"recording": true, "transcription": true, "max_participants": 50}'
Example
' 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
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
' 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
LEAVE MEET
LEAVE MEET room_id
Example
' 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
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
' 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
TALK TO MEET "message"
TALK TO MEET "message" AS CHAT
TALK TO MEET "message" AS VOICE
Example
' 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
HEAR FROM MEET INTO variable
HEAR FROM MEET INTO variable TIMEOUT seconds
Example
' 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
' 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
' 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:
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 - User interface for Meet
- BOOK_MEETING - Schedule meetings with calendar integration
- Calls API - API reference for video calls
- Multi-Agent Keywords - Bot collaboration features