Skip to content

Add Zoom support for Vexa transcription bots - #224

Merged
camerontarget14 merged 4 commits into
mainfrom
support-zoom-calls
Oct 20, 2026
Merged

camerontarget14 merged 4 commits into
mainfrom
support-zoom-calls

Conversation

@camerontarget14

Copy link
Copy Markdown
Collaborator

Summary

Vexa can now be dispatched to Zoom meetings from the DNA Transcription panel.

Backend

  • Add ZOOM to the Platform enum and an optional meeting_url field to DispatchBotRequest, threaded through the provider interface.
  • Vexa provider builds the Zoom join link via _zoom_join_url():
    • a link that already has ?pwd= is forwarded untouched
    • a link without pwd plus a typed passcode gets ?pwd=
    • a bare meeting ID becomes https://zoom.us/j/[?pwd=] Vexa Cloud rejects Zoom without a meeting_url (422), and its web bot ignores the separate passcode field, stalling in "joining" unless the passcode is in the link. Zoom accepts the plain or encoded passcode as pwd.
  • Include Vexa's response body when it rejects a dispatch, instead of httpx's bodyless error message.

Frontend

  • Add 'zoom' to the Platform type.
  • Move meeting URL parsing into a per-platform registry (transcription/meetingPlatforms.ts), keyed by Platform so a missing platform fails to compile.
  • Parse Zoom /j/, /wc/join/ and /wc//join links on any zoom.us or zoomgov.com host, plus bare 9-11 digit IDs. Pull the passcode from ?pwd= and send the pasted link as meeting_url.
  • Reject personal (/my/), host start (/s/) and Zoom Events links with specific messages.
  • Show the passcode field for Teams, and for Zoom when the link has no pwd.
  • Show the error when a meeting URL is invalid (previously the dispatch failed silently).

Docs

  • Regenerate the OpenAPI spec (backend and dna-docs copies).
  • Document Zoom in the transcription pipeline doc and the user guide.
  • Correct ADR-005: sg_platform is a text field, not a list.

Testing

  • I have tested these changes locally
  • I have run all relevant automated tests
  • I have verified this does not break existing workflows
  • For changes that can be tested in UI, I have included screenshots or gif animations of the changes.

How I Tested

Ran DNA and added vexa to a Zoom call.

Screenshot 2026-10-10 at 9 57 48 PM

Vexa can now be dispatched to Zoom meetings from the Transcription menu.

Backend
- Add ZOOM to the Platform enum and an optional meeting_url field to
  DispatchBotRequest, threaded through the provider interface.
- Vexa provider builds the Zoom join link via _zoom_join_url():
  - a link that already has ?pwd= is forwarded untouched
  - a link without pwd plus a typed passcode gets ?pwd=<passcode>
  - a bare meeting ID becomes https://zoom.us/j/<id>[?pwd=<passcode>]
    Vexa Cloud rejects Zoom without a meeting_url (422), and its web bot
    ignores the separate passcode field, stalling in "joining" unless
    the
    passcode is in the link. Zoom accepts the plain or encoded passcode
    as pwd.
- Include Vexa's response body when it rejects a dispatch, instead of
  httpx's bodyless error message.

Frontend
- Add 'zoom' to the Platform type.
- Move meeting URL parsing into a per-platform registry
  (transcription/meetingPlatforms.ts), keyed by Platform so a missing
  platform fails to compile.
- Parse Zoom /j/, /wc/join/ and /wc/<id>/join links on any zoom.us or
  zoomgov.com host, plus bare 9-11 digit IDs. Pull the passcode from
  ?pwd= and send the pasted link as meeting_url.
- Reject personal (/my/), host start (/s/) and Zoom Events links with
  specific messages.
- Show the passcode field for Teams, and for Zoom when the link has no
  pwd.
- Show the error when a meeting URL is invalid (previously the dispatch
  failed silently).

Docs
- Regenerate the OpenAPI spec (backend and dna-docs copies).
- Document Zoom in the transcription pipeline doc and the user guide.
- Correct ADR-005: sg_platform is a text field, not a list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Cameron Target <camerontarget@gmail.com>
@camerontarget14 camerontarget14 added this to the V1 milestone Oct 11, 2026
@camerontarget14 camerontarget14 linked an issue Oct 11, 2026 that may be closed by this pull request
6 tasks
Comment thread backend/docs/TRANSCRIPTION_PIPELINE.md Outdated
Comment thread frontend/packages/app/src/hooks/useTranscription.ts Outdated
- Move Zoom join-link details from the Platform data-model docs into
  the _zoom_join_url docstring; keep a short note under Layer 4
- Import parseMeetingUrl from meetingPlatforms directly and drop the
  re-exports from useTranscription and the hooks barrel

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Cameron Target <camerontarget@gmail.com>
@camerontarget14

Copy link
Copy Markdown
Collaborator Author

@jspada200 just wondering if this guy is good to go?

@camerontarget14
camerontarget14 merged commit 28f628c into main Oct 20, 2026
4 checks passed
@camerontarget14
camerontarget14 deleted the support-zoom-calls branch October 20, 2026 17:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Set up Zoom support

2 participants