ringgroups: ring-all and hunt groups, API, page, golden case
/api/ring-groups CRUD with members as ordered memberIds (unique, must
exist), number from the ring-group range, a no-answer destination
(never itself), and delete refused while something points at it. The
generator renders sp-rg-{id} (Dial through sp-rg-member: all at once with
the total ring time, or one at a time with the per-member time, music
instead of ringing on request), adds the number to sp-local-numbers, and
destApp sends ring_group destinations there. Golden case ringgroups.
The DestinationPicker is now generic over targets picked by id and gains
"Voicemail of a user" and "Ring group" (M6-T6 completes it). Caller-name
prefixes (DIDs and ring groups) get a space before the caller's name.
Ring groups page with an ordered member list.
e2e m6-t2 found the new-group form failing on an unset no-answer
destination (fixed: defaults to hang up). It checks ring-all (both ring,
191 answers) and hunt (190 alone for 5 s, then 191) with real calls. The
generator debounce test now waits for the apply instead of a fixed 150 ms.
Task: M6-T2
This commit is contained in:
1 parent
17db68a8c5
commit
f87d4d47dd
35 files changed
+1604
-29
No files matched your search
@@ -17,6 +17,7 @@ export function loadCase(name: string): Snapshot {
|
||||
dids?: Partial<Snapshot['dids'][number]>[];
|
||||
trunks?: Partial<Snapshot['trunks'][number]>[];
|
||||
routes?: Partial<Snapshot['routes'][number]>[];
|
||||
ringGroups?: Partial<Snapshot['ringGroups'][number]>[];
|
||||
};
|
||||
const settings = Object.fromEntries(
|
||||
(Object.keys(SettingsSchemas) as SettingKey[])
|
||||
@@ -35,6 +36,18 @@ export function loadCase(name: string): Snapshot {
|
||||
id: d.id!,
|
||||
number: d.number!,
|
||||
})),
|
||||
ringGroups: (raw.ringGroups ?? []).map((g, i) => ({
|
||||
name: `Group ${i + 1}`,
|
||||
strategy: 'ringall',
|
||||
ringSeconds: 25,
|
||||
callerIdNamePrefix: null,
|
||||
musicInsteadOfRing: false,
|
||||
members: [],
|
||||
noAnswerDestination: { type: 'hangup' as const },
|
||||
...g,
|
||||
id: g.id!,
|
||||
number: g.number!,
|
||||
})),
|
||||
routes: (raw.routes ?? []).map((r, i) => ({
|
||||
name: `Route ${i + 1}`,
|
||||
position: i,
|
||||
|
||||
Reference in new issue
Block a user