v0.2.0¶
Release Date: 2026-10-27
This release lets agents attend meetings hosted by others on Zoom, Google Meet, and Microsoft Teams by phone dial-in. It adds the attendee session interfaces that every connector implements, an invitation parser, and a dial-in joiner that works through an omnivoice-core voice gateway in audio mode.
Highlights¶
- Attend external meetings by phone from their invitation, with no platform app registration
- Attendee session interfaces shared by dial-in and future browser and SDK connectors
- Invitation parser for Zoom, Google Meet, and Teams invites and
.icsfiles - Simulated meetings for testing dial-in without a real meeting
New Features¶
Attendee Sessions (attendee)¶
- Joiner -
Join(ctx, JoinTarget) (Session, error), implemented by each connector - Session -
ID,Target,Capabilities,State,Events, andLeave - Optional interfaces -
AudioReceiver,AudioSender,Recorder, andParticipantLister, implemented as the connection allows - Capabilities - what a session supports: audio in and out, display name, speaker names, participants, recording, chat, video
- States - joining, connected, waiting, admitted, and the terminal states left, removed, ended, and failed
- JoinTarget - platform, join link, meeting ID, passcode, display name, and phone dial-in details
Invitation Parser (invite)¶
- Parse - reads invitation text into a
JoinTarget - ParseICS - reads the first event of an iCalendar file
- Recognizes Zoom one-tap lines and numeric phone passcodes, Google Meet PINs, and Teams phone conference IDs
- Assigns each dial-in number a country from the invite or its calling code, and strips the invisible direction marks calendar clients insert
Dial-in (dialin)¶
- Choose - picks a dial-in number by country, preferring toll numbers
- Sequence and DialString - keypad steps for Zoom (mirroring its one-tap sequence), Google Meet, and Teams, rendered for omnivoice-core's
callsystem.WithSendDigits - Joiner - joins a meeting through a voice gateway in audio mode: dials, enters the keypad sequence, and returns a session with the meeting's mixed audio as
AudioReceiverandAudioSender - Options -
WithCountry,WithTiming, andWithKeyDuration
jt, err := invite.Parse(invitationText)
if err != nil {
return err
}
sess, err := dialin.NewJoiner(gw, dialin.WithCountry("US")).Join(ctx, jt)
if err != nil {
return err
}
audio := sess.(attendee.AudioReceiver).ReceiveAudio()
Phone dial-in cannot see whether the meeting admitted the caller. The session reports admitted once the call is connected and the keypad sequence has had time to finish. Leave hangs up when the gateway session supports it (omni-twilio v0.12.0 and omni-telnyx v0.7.0 do) and closes the session.
Testing (dialin/dialintest)¶
- Gateway - a voice gateway in audio mode whose calls reach simulated meetings
- Meeting - runs a Zoom, Google Meet, or Teams phone menu on the keypad digits, admits the caller only for the right meeting ID and passcode, plays scripted audio, and records audio the caller sends
Example¶
- examples/dialin - joins a simulated meeting from an invite, plays a tone, records what it hears to a WAV file, and leaves
Bug Fixes¶
- Meeting skill -
MeetingSkillimplementsVersion, which omniskill'sSkillinterface requires since omniskill v0.11, so theskillpackage builds with current omniskill
Documentation¶
- ADR-009: Dial-in First for External Meetings
- External meeting attendance phases in the roadmap, tracked as initiative
INIT-OMNIMEET-001 - README section on attending external meetings
Breaking Changes¶
None.
Dependencies¶
| Module | From | To |
|---|---|---|
github.com/plexusone/omnivoice-core |
v0.15.0 | v0.18.1 |
github.com/plexusone/omniskill |
v0.10.0 | v0.12.1 |
The dial-in joiner needs a voice gateway in audio mode: omni-twilio v0.11.0 or omni-telnyx v0.6.0 or later. Use omni-twilio v0.12.0 or omni-telnyx v0.7.0 so that leaving a meeting hangs up the call; with earlier versions Leave only closes the media stream, which leaves a Telnyx call connected.
Installation¶
What's Next¶
- OmniAgent tool and CLI command for joining meetings by phone
- Browser connector for Google Meet and the Zoom web client, with display names and speaker names
Contributors¶
- PlexusOne Team