Call log

Call history the way a phone shows it: direction icons, outcomes, durations — and each row expands into the call's AI summary, keypad interactions, and transcript.

Expand the completed call to read its transcript — and the Brightside Dental call to see a gather result.

Installation

npx shadcn@latest add @handset/call-log

Installs call-transcript and call-keypad as dependencies for the expandable rows.

Keypad interactions

When a call used the keypad — a POST /v1/calls/{id}/gather asked “press 1 to confirm”, the caller pressed digits mid-call, or your app sent DTMF to navigate a phone tree — the expansion shows the whole exchange: the spoken prompt, the digits collected (or why none were: timeout / hangup), loose keypresses by party, and digits sent to the far end. Calls without keypad activity show nothing extra. The detail comes from the call's event timeline (GET /v1/calls/{id}), fetched once when a row expands.

Usage

import { CallLog } from "@/components/handset/call-log";

<CallLog />                              // everything
<CallLog phoneNumberId={number.id} />    // one line's history

Props

Props
PropTypeDefaultDescription
tenantIdstring—Scope to one tenant (usually handled server-side).
phoneNumberIdstring—Only calls on one number.
formatNumber(e164: string) => stringUS formatterDisplay formatting for numbers.
pollMsnumber10000Refresh interval. 0 disables polling.
limitnumber25Page size.
classNamestring—Merged onto the list wrapper.