KW Knowledge base

Meetings & calls

Two real-time communication tools live in the portal:

Mitch Wigham
Updated 24 June 2026 · 6 views

11 · Meetings & calls

Two real-time communication tools live in the portal:

  • Meetings (/meetings) — scheduled video/voice meetings.
  • Calls — softphone access via SIP, used through the phone icon in the top bar.

Meetings

Schedule, host, and review meetings without leaving the portal.

Layout

+-----------------------------------------------------------+
|  Meetings.                                  [+ New meeting]|
|-----------------------------------------------------------|
| [My meetings] [All org meetings]      Status — all ▾      |
|-----------------------------------------------------------|
| Live now                                                  |
|   Acme weekly      SCHEDULED · JITSI    Join →            |
| Upcoming                                                  |
|   Internal sync    SCHEDULED · INTERNAL                   |
| Past                                                      |
|   Beta kickoff     ENDED · JITSI                          |
+-----------------------------------------------------------+

📷 Screenshot placeholder: screenshots/meetings.png

Meetings are grouped into Live now, Upcoming, and Past. The My meetings / All org meetings toggle switches scope, and there's a status filter (Scheduled / In progress / Ended / Cancelled).

Scheduling

+ New meeting (/meetings/new):

  1. Title and optional description.
  2. When (date + time) and duration in minutes (defaults 30).
  3. Provider — choose one:
    • Internal (browser) — a built-in room (see note below)
    • Jitsi — a Jitsi room; the platform generates the URL
    • External (link) — paste any meeting URL (Teams, Zoom, etc.)
  4. Optionally tick Enable recording.
  5. Pick participants from the list of portal users.
  6. Schedule meeting.

Participants are portal users only. The meeting creator becomes the host. There is no calendar-invite email and no field for external email attendees — invited users see the meeting in their list and can Accept or Decline.

Joining

Open a meeting and click Join now (a meeting auto-starts when its first participant joins). What happens next depends on the provider:

  • Jitsi / External — a button opens the room in a new tab.
  • Internal — shows an in-portal room placeholder with a room key; live audio/video transport for the internal provider is not yet wired up.

The host can Start, End, or Cancel a meeting; the host can also Delete it.

In-meeting chat

Every meeting page has a Chat panel — a simple text chat for people in the meeting, alongside a Participants list showing each person's status (Invited / Accepted / Declined / Joined / Left).

There is no real-time collaborative notes tab and no automatic action-item-to-task conversion.

Recording

If recording was enabled on the meeting:

  • Recording is uploaded as chunks server-side (to object storage), with an optional manifest key.
  • The meeting page shows a Recording card with chunk count, total size, and duration once chunks exist.

Recording is a per-meeting flag and a server-side upload mechanism; it does not start automatically based on attendee count, and there is no in-page recording playback yet.

Calls (softphone)

The phone icon (📞) in the top bar opens the softphone — a SIP client (SIP.js) embedded in the browser. There is also a full-screen softphone at /softphone, designed to be installed as a PWA with Keypad / Recents / Contacts tabs.

+----------------------------+
| ● Ready                    |
|----------------------------|
| [ Enter number          ]  |
|  1   2   3                 |
|  4   5   6                 |
|  7   8   9                 |
|  *   0   #                 |
|  [ Call ]   [ Disconnect ] |
+----------------------------+

📷 Screenshot placeholder: screenshots/softphone.png

Setup

A SIP trunk must be configured before the softphone works:

  • Org-level SIP settings (enabled, WebSocket URL, realm) are set by an admin under Admin → SIP settings (/admin/settings/sip).
  • Per-user credentials (extension + password) are set by an admin for each user via the SIP service — they are not auto-provisioned.

Until SIP is configured the phone icon is greyed out and clicking it explains how an admin can set it up.

Making a call

  1. Click 📞 → the panel opens.
  2. Click Connect to register with the SIP server (the full-screen /softphone app auto-connects on load).
  3. Enter a number on the keypad → Call.
  4. The call is logged automatically.

Inbound calls

When a call comes in:

  • The phone button pulses and the panel shows the incoming number.
  • A browser notification fires (if you've granted permission).
  • Click Answer to take the call, or Decline to reject it.

Inbound calls show the raw caller number. There is no automatic match against CRM contacts and no customer-card pop-up.

During a call

The active-call view shows the call duration and a Hang up button.

Mid-call controls such as mute, hold, transfer, and call recording are not currently available in the softphone.

Call history

/calls (titled "Call log") lists calls for the organisation — direction, number, the user who handled it, status, duration, and start time, with KPI tiles (total / answered / missed / average duration) and an In / Out / Missed filter. Non-admins see only their own calls; admins see the whole org.

Call-log rows are not clickable and there is no recording playback from this page.

Permissions

Action Required
See / join meetings any user (their meetings)
Schedule meetings any user
Use softphone any user with a SIP extension provisioned
Configure org SIP settings admin
Set a user's SIP extension admin
View the call log full org log = admin; own calls = any user

Common workflows

Internal sync

  1. + New meeting → pick the Internal or Jitsi provider.
  2. Add the team as participants.
  3. At meeting time, open it and Join now.

Outbound call

  1. Click 📞 → Connect if not already registered.
  2. Enter the number → Call.
  3. The call appears in /calls afterwards.

Review call history

  • /calls → filter by In / Out / Missed.

See also

Still need help?

Log a support ticket and the team will pick it up from this page.