@roarkanalytics/sdk 3.10.0 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/client.d.mts +7 -4
- package/client.d.mts.map +1 -1
- package/client.d.ts +7 -4
- package/client.d.ts.map +1 -1
- package/client.js +3 -0
- package/client.js.map +1 -1
- package/client.mjs +3 -0
- package/client.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/agent-prompt.d.mts +129 -0
- package/resources/agent-prompt.d.mts.map +1 -0
- package/resources/agent-prompt.d.ts +129 -0
- package/resources/agent-prompt.d.ts.map +1 -0
- package/resources/agent-prompt.js +58 -0
- package/resources/agent-prompt.js.map +1 -0
- package/resources/agent-prompt.mjs +54 -0
- package/resources/agent-prompt.mjs.map +1 -0
- package/resources/call.d.mts +1 -1
- package/resources/call.d.mts.map +1 -1
- package/resources/call.d.ts +1 -1
- package/resources/call.d.ts.map +1 -1
- package/resources/config.d.mts +166 -18
- package/resources/config.d.mts.map +1 -1
- package/resources/config.d.ts +166 -18
- package/resources/config.d.ts.map +1 -1
- package/resources/customer-flow-edge-case.d.mts +72 -9
- package/resources/customer-flow-edge-case.d.mts.map +1 -1
- package/resources/customer-flow-edge-case.d.ts +72 -9
- package/resources/customer-flow-edge-case.d.ts.map +1 -1
- package/resources/customer-flow.d.mts +2005 -78
- package/resources/customer-flow.d.mts.map +1 -1
- package/resources/customer-flow.d.ts +2005 -78
- package/resources/customer-flow.d.ts.map +1 -1
- package/resources/customer-flow.js +18 -0
- package/resources/customer-flow.js.map +1 -1
- package/resources/customer-flow.mjs +18 -0
- package/resources/customer-flow.mjs.map +1 -1
- package/resources/index.d.mts +3 -2
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +3 -2
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +3 -1
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +1 -0
- package/resources/index.mjs.map +1 -1
- package/resources/simulation-environment.d.mts +163 -1
- package/resources/simulation-environment.d.mts.map +1 -1
- package/resources/simulation-environment.d.ts +163 -1
- package/resources/simulation-environment.d.ts.map +1 -1
- package/resources/simulation-environment.js +51 -0
- package/resources/simulation-environment.js.map +1 -1
- package/resources/simulation-environment.mjs +51 -0
- package/resources/simulation-environment.mjs.map +1 -1
- package/resources/simulation-job.d.mts +62 -2
- package/resources/simulation-job.d.mts.map +1 -1
- package/resources/simulation-job.d.ts +62 -2
- package/resources/simulation-job.d.ts.map +1 -1
- package/resources/simulation-persona.d.mts +42 -6
- package/resources/simulation-persona.d.mts.map +1 -1
- package/resources/simulation-persona.d.ts +42 -6
- package/resources/simulation-persona.d.ts.map +1 -1
- package/resources/simulation-run-plan-job.d.mts +31 -1
- package/resources/simulation-run-plan-job.d.mts.map +1 -1
- package/resources/simulation-run-plan-job.d.ts +31 -1
- package/resources/simulation-run-plan-job.d.ts.map +1 -1
- package/resources/simulation-run-plan.d.mts +154 -12
- package/resources/simulation-run-plan.d.mts.map +1 -1
- package/resources/simulation-run-plan.d.ts +154 -12
- package/resources/simulation-run-plan.d.ts.map +1 -1
- package/resources/simulation-template.d.mts +10 -0
- package/resources/simulation-template.d.mts.map +1 -1
- package/resources/simulation-template.d.ts +10 -0
- package/resources/simulation-template.d.ts.map +1 -1
- package/resources/simulation.d.mts +221 -6
- package/resources/simulation.d.mts.map +1 -1
- package/resources/simulation.d.ts +221 -6
- package/resources/simulation.d.ts.map +1 -1
- package/resources/simulation.js +10 -3
- package/resources/simulation.js.map +1 -1
- package/resources/simulation.mjs +10 -3
- package/resources/simulation.mjs.map +1 -1
- package/src/client.ts +33 -0
- package/src/resources/agent-prompt.ts +183 -0
- package/src/resources/call.ts +1 -1
- package/src/resources/config.ts +310 -20
- package/src/resources/customer-flow-edge-case.ts +180 -9
- package/src/resources/customer-flow.ts +3091 -63
- package/src/resources/index.ts +15 -0
- package/src/resources/simulation-environment.ts +244 -0
- package/src/resources/simulation-job.ts +92 -2
- package/src/resources/simulation-persona.ts +108 -6
- package/src/resources/simulation-run-plan-job.ts +39 -1
- package/src/resources/simulation-run-plan.ts +176 -12
- package/src/resources/simulation-template.ts +11 -0
- package/src/resources/simulation.ts +247 -6
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -80,6 +80,29 @@ export class CustomerFlow extends APIResource {
|
|
|
80
80
|
return this._client.delete(path`/v1/customer-flow/${flowID}`, options);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
/**
|
|
84
|
+
* Deep-copies a flow into a new project-owned flow. The copy carries the source's
|
|
85
|
+
* description, branching mode, linked agents, flow-level expectations and
|
|
86
|
+
* flow-owned metrics. A scripted flow copies its whole step graph; an improv flow
|
|
87
|
+
* copies its variants (personas, briefs, expectations). Duplicating a
|
|
88
|
+
* Roark-managed flow is how you customise it. Voicemail flows are Roark-managed
|
|
89
|
+
* and cannot be duplicated.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts
|
|
93
|
+
* const response = await client.customerFlow.duplicate(
|
|
94
|
+
* '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
|
|
95
|
+
* );
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
duplicate(
|
|
99
|
+
flowID: string,
|
|
100
|
+
body: CustomerFlowDuplicateParams | null | undefined = {},
|
|
101
|
+
options?: RequestOptions,
|
|
102
|
+
): APIPromise<CustomerFlowDuplicateResponse> {
|
|
103
|
+
return this._client.post(path`/v1/customer-flow/${flowID}/duplicate`, { body, ...options });
|
|
104
|
+
}
|
|
105
|
+
|
|
83
106
|
/**
|
|
84
107
|
* Returns a customer flow with its happy path, edge cases, expectations and linked
|
|
85
108
|
* agents. Scripted flows also carry their step graph.
|
|
@@ -165,12 +188,23 @@ export class CustomerFlow extends APIResource {
|
|
|
165
188
|
* step is a root wired straight from the start of the flow, so a merge target
|
|
166
189
|
* parked there would also be reachable directly.
|
|
167
190
|
*
|
|
191
|
+
* A `CUSTOMER_TURN` describes what the simulated customer says and the persona
|
|
192
|
+
* phrases it; a `CUSTOMER_VERBATIM_TURN` is said word for word, and one placed as
|
|
193
|
+
* a top-level step opens the call the moment it connects, before the agent speaks.
|
|
194
|
+
* `CUSTOMER_FIRST_MESSAGE` is the retired name for that opening case: still
|
|
195
|
+
* accepted, stored and returned as `CUSTOMER_VERBATIM_TURN`.
|
|
196
|
+
*
|
|
168
197
|
* The two DTMF types are mirror images and both require `dtmfDigits`.
|
|
169
198
|
* `CUSTOMER_DTMF` is keys the simulated caller presses while navigating your
|
|
170
199
|
* agent. `AGENT_DTMF` is keys your agent under test is expected to press while
|
|
171
200
|
* navigating a menu the simulation is playing, so its digits are an assertion the
|
|
172
201
|
* run is graded against rather than an instruction, and it counts as an agent turn
|
|
173
202
|
* for role alternation.
|
|
203
|
+
*
|
|
204
|
+
* In a STRICT flow an `AGENT_TURN` may carry its own `offScriptPolicy`, which
|
|
205
|
+
* replaces the flow-level one at that step. Omit it (or send null) to follow the
|
|
206
|
+
* flow's policy. Use it where one missed step makes the rest of the call
|
|
207
|
+
* meaningless: an authentication menu, say, with `then: HANG_UP_INVALIDATE`.
|
|
174
208
|
*/
|
|
175
209
|
export type FlowStep =
|
|
176
210
|
| FlowStep.UnionMember0
|
|
@@ -180,7 +214,8 @@ export type FlowStep =
|
|
|
180
214
|
| FlowStep.UnionMember4
|
|
181
215
|
| FlowStep.UnionMember5
|
|
182
216
|
| FlowStep.UnionMember6
|
|
183
|
-
| FlowStep.UnionMember7
|
|
217
|
+
| FlowStep.UnionMember7
|
|
218
|
+
| FlowStep.UnionMember8;
|
|
184
219
|
|
|
185
220
|
export namespace FlowStep {
|
|
186
221
|
export interface UnionMember0 {
|
|
@@ -192,11 +227,27 @@ export namespace FlowStep {
|
|
|
192
227
|
|
|
193
228
|
nodeId?: string;
|
|
194
229
|
|
|
230
|
+
offScriptPolicy?: UnionMember0.OffScriptPolicy | null;
|
|
231
|
+
|
|
195
232
|
ref?: string;
|
|
196
233
|
|
|
197
234
|
steps?: Array<CustomerFlowAPI.FlowStep>;
|
|
198
235
|
}
|
|
199
236
|
|
|
237
|
+
export namespace UnionMember0 {
|
|
238
|
+
export interface OffScriptPolicy {
|
|
239
|
+
maxAttempts: number;
|
|
240
|
+
|
|
241
|
+
reaction: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY';
|
|
242
|
+
|
|
243
|
+
then: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE';
|
|
244
|
+
|
|
245
|
+
sayLine?: string | null;
|
|
246
|
+
|
|
247
|
+
waitSeconds?: number | null;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
200
251
|
export interface UnionMember1 {
|
|
201
252
|
type: 'CUSTOMER_TURN';
|
|
202
253
|
|
|
@@ -226,6 +277,20 @@ export namespace FlowStep {
|
|
|
226
277
|
}
|
|
227
278
|
|
|
228
279
|
export interface UnionMember3 {
|
|
280
|
+
type: 'CUSTOMER_VERBATIM_TURN';
|
|
281
|
+
|
|
282
|
+
content?: string | null;
|
|
283
|
+
|
|
284
|
+
mergeIntoNodeIds?: Array<string>;
|
|
285
|
+
|
|
286
|
+
nodeId?: string;
|
|
287
|
+
|
|
288
|
+
ref?: string;
|
|
289
|
+
|
|
290
|
+
steps?: Array<CustomerFlowAPI.FlowStep>;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export interface UnionMember4 {
|
|
229
294
|
type: 'CUSTOMER_SILENCE';
|
|
230
295
|
|
|
231
296
|
mergeIntoNodeIds?: Array<string>;
|
|
@@ -239,7 +304,7 @@ export namespace FlowStep {
|
|
|
239
304
|
steps?: Array<CustomerFlowAPI.FlowStep>;
|
|
240
305
|
}
|
|
241
306
|
|
|
242
|
-
export interface
|
|
307
|
+
export interface UnionMember5 {
|
|
243
308
|
type: 'CUSTOMER_DTMF';
|
|
244
309
|
|
|
245
310
|
dtmfDigits?: string | null;
|
|
@@ -253,7 +318,7 @@ export namespace FlowStep {
|
|
|
253
318
|
steps?: Array<CustomerFlowAPI.FlowStep>;
|
|
254
319
|
}
|
|
255
320
|
|
|
256
|
-
export interface
|
|
321
|
+
export interface UnionMember6 {
|
|
257
322
|
type: 'AGENT_DTMF';
|
|
258
323
|
|
|
259
324
|
dtmfDigits?: string | null;
|
|
@@ -267,7 +332,7 @@ export namespace FlowStep {
|
|
|
267
332
|
steps?: Array<CustomerFlowAPI.FlowStep>;
|
|
268
333
|
}
|
|
269
334
|
|
|
270
|
-
export interface
|
|
335
|
+
export interface UnionMember7 {
|
|
271
336
|
type: 'VOICEMAIL';
|
|
272
337
|
|
|
273
338
|
mergeIntoNodeIds?: Array<string>;
|
|
@@ -279,7 +344,7 @@ export namespace FlowStep {
|
|
|
279
344
|
steps?: Array<CustomerFlowAPI.FlowStep>;
|
|
280
345
|
}
|
|
281
346
|
|
|
282
|
-
export interface
|
|
347
|
+
export interface UnionMember8 {
|
|
283
348
|
type: 'SCENARIO_LINK';
|
|
284
349
|
|
|
285
350
|
linkedCustomerFlowId?: string | null;
|
|
@@ -346,6 +411,30 @@ export namespace CustomerFlowCreateResponse {
|
|
|
346
411
|
*/
|
|
347
412
|
happyPath: ScriptedCustomerFlow.HappyPath | null;
|
|
348
413
|
|
|
414
|
+
/**
|
|
415
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
416
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
417
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
418
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
419
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
420
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
421
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
422
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
423
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
424
|
+
* AGENT_TURN step can carry its own.
|
|
425
|
+
*/
|
|
426
|
+
offScriptPolicy: ScriptedCustomerFlow.OffScriptPolicy | null;
|
|
427
|
+
|
|
428
|
+
/**
|
|
429
|
+
* How closely a run follows the script. LOOSE (default) hands the whole script to
|
|
430
|
+
* the simulated customer as one prompt; it keeps the call moving whatever your
|
|
431
|
+
* agent says. STRICT runs the script as a state machine on the agent service: at
|
|
432
|
+
* every agent step the simulated customer waits, silent, until your agent has said
|
|
433
|
+
* the expected line, and only then moves on. Scripted flows only; STRICT needs the
|
|
434
|
+
* agent-service transport and is not available on realtime models.
|
|
435
|
+
*/
|
|
436
|
+
scriptAdherence: 'LOOSE' | 'STRICT';
|
|
437
|
+
|
|
349
438
|
source: 'SYSTEM' | 'CUSTOM';
|
|
350
439
|
|
|
351
440
|
title: string;
|
|
@@ -496,6 +585,8 @@ export namespace CustomerFlowCreateResponse {
|
|
|
496
585
|
| 'OFFICE'
|
|
497
586
|
| 'THUNDERSTORM';
|
|
498
587
|
|
|
588
|
+
backgroundNoiseVolume: number;
|
|
589
|
+
|
|
499
590
|
/**
|
|
500
591
|
* Creation timestamp in ISO 8601 format
|
|
501
592
|
*/
|
|
@@ -578,7 +669,10 @@ export namespace CustomerFlowCreateResponse {
|
|
|
578
669
|
| 'FRUSTRATED'
|
|
579
670
|
| 'SKEPTICAL'
|
|
580
671
|
| 'RUSHED'
|
|
581
|
-
| 'DISTRACTED'
|
|
672
|
+
| 'DISTRACTED'
|
|
673
|
+
| 'ANGRY'
|
|
674
|
+
| 'ANXIOUS'
|
|
675
|
+
| 'SAD';
|
|
582
676
|
|
|
583
677
|
/**
|
|
584
678
|
* How the persona confirms information
|
|
@@ -720,6 +814,13 @@ export namespace CustomerFlowCreateResponse {
|
|
|
720
814
|
*/
|
|
721
815
|
description?: string | null;
|
|
722
816
|
|
|
817
|
+
/**
|
|
818
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
819
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
820
|
+
* or set null to display the name itself.
|
|
821
|
+
*/
|
|
822
|
+
displayName?: string | null;
|
|
823
|
+
|
|
723
824
|
/**
|
|
724
825
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
725
826
|
*/
|
|
@@ -811,6 +912,8 @@ export namespace CustomerFlowCreateResponse {
|
|
|
811
912
|
| 'OFFICE'
|
|
812
913
|
| 'THUNDERSTORM';
|
|
813
914
|
|
|
915
|
+
backgroundNoiseVolume: number;
|
|
916
|
+
|
|
814
917
|
/**
|
|
815
918
|
* Creation timestamp in ISO 8601 format
|
|
816
919
|
*/
|
|
@@ -893,7 +996,10 @@ export namespace CustomerFlowCreateResponse {
|
|
|
893
996
|
| 'FRUSTRATED'
|
|
894
997
|
| 'SKEPTICAL'
|
|
895
998
|
| 'RUSHED'
|
|
896
|
-
| 'DISTRACTED'
|
|
999
|
+
| 'DISTRACTED'
|
|
1000
|
+
| 'ANGRY'
|
|
1001
|
+
| 'ANXIOUS'
|
|
1002
|
+
| 'SAD';
|
|
897
1003
|
|
|
898
1004
|
/**
|
|
899
1005
|
* How the persona confirms information
|
|
@@ -1035,12 +1141,43 @@ export namespace CustomerFlowCreateResponse {
|
|
|
1035
1141
|
*/
|
|
1036
1142
|
description?: string | null;
|
|
1037
1143
|
|
|
1144
|
+
/**
|
|
1145
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
1146
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
1147
|
+
* or set null to display the name itself.
|
|
1148
|
+
*/
|
|
1149
|
+
displayName?: string | null;
|
|
1150
|
+
|
|
1038
1151
|
/**
|
|
1039
1152
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
1040
1153
|
*/
|
|
1041
1154
|
secondaryLanguage?: 'EN' | null;
|
|
1042
1155
|
}
|
|
1043
1156
|
}
|
|
1157
|
+
|
|
1158
|
+
/**
|
|
1159
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
1160
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
1161
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
1162
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
1163
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
1164
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
1165
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
1166
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
1167
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
1168
|
+
* AGENT_TURN step can carry its own.
|
|
1169
|
+
*/
|
|
1170
|
+
export interface OffScriptPolicy {
|
|
1171
|
+
maxAttempts: number;
|
|
1172
|
+
|
|
1173
|
+
reaction: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY';
|
|
1174
|
+
|
|
1175
|
+
then: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE';
|
|
1176
|
+
|
|
1177
|
+
sayLine?: string | null;
|
|
1178
|
+
|
|
1179
|
+
waitSeconds?: number | null;
|
|
1180
|
+
}
|
|
1044
1181
|
}
|
|
1045
1182
|
|
|
1046
1183
|
/**
|
|
@@ -1213,6 +1350,8 @@ export namespace CustomerFlowCreateResponse {
|
|
|
1213
1350
|
| 'OFFICE'
|
|
1214
1351
|
| 'THUNDERSTORM';
|
|
1215
1352
|
|
|
1353
|
+
backgroundNoiseVolume: number;
|
|
1354
|
+
|
|
1216
1355
|
/**
|
|
1217
1356
|
* Creation timestamp in ISO 8601 format
|
|
1218
1357
|
*/
|
|
@@ -1295,7 +1434,10 @@ export namespace CustomerFlowCreateResponse {
|
|
|
1295
1434
|
| 'FRUSTRATED'
|
|
1296
1435
|
| 'SKEPTICAL'
|
|
1297
1436
|
| 'RUSHED'
|
|
1298
|
-
| 'DISTRACTED'
|
|
1437
|
+
| 'DISTRACTED'
|
|
1438
|
+
| 'ANGRY'
|
|
1439
|
+
| 'ANXIOUS'
|
|
1440
|
+
| 'SAD';
|
|
1299
1441
|
|
|
1300
1442
|
/**
|
|
1301
1443
|
* How the persona confirms information
|
|
@@ -1437,6 +1579,13 @@ export namespace CustomerFlowCreateResponse {
|
|
|
1437
1579
|
*/
|
|
1438
1580
|
description?: string | null;
|
|
1439
1581
|
|
|
1582
|
+
/**
|
|
1583
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
1584
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
1585
|
+
* or set null to display the name itself.
|
|
1586
|
+
*/
|
|
1587
|
+
displayName?: string | null;
|
|
1588
|
+
|
|
1440
1589
|
/**
|
|
1441
1590
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
1442
1591
|
*/
|
|
@@ -1526,6 +1675,8 @@ export namespace CustomerFlowCreateResponse {
|
|
|
1526
1675
|
| 'OFFICE'
|
|
1527
1676
|
| 'THUNDERSTORM';
|
|
1528
1677
|
|
|
1678
|
+
backgroundNoiseVolume: number;
|
|
1679
|
+
|
|
1529
1680
|
/**
|
|
1530
1681
|
* Creation timestamp in ISO 8601 format
|
|
1531
1682
|
*/
|
|
@@ -1608,7 +1759,10 @@ export namespace CustomerFlowCreateResponse {
|
|
|
1608
1759
|
| 'FRUSTRATED'
|
|
1609
1760
|
| 'SKEPTICAL'
|
|
1610
1761
|
| 'RUSHED'
|
|
1611
|
-
| 'DISTRACTED'
|
|
1762
|
+
| 'DISTRACTED'
|
|
1763
|
+
| 'ANGRY'
|
|
1764
|
+
| 'ANXIOUS'
|
|
1765
|
+
| 'SAD';
|
|
1612
1766
|
|
|
1613
1767
|
/**
|
|
1614
1768
|
* How the persona confirms information
|
|
@@ -1750,6 +1904,13 @@ export namespace CustomerFlowCreateResponse {
|
|
|
1750
1904
|
*/
|
|
1751
1905
|
description?: string | null;
|
|
1752
1906
|
|
|
1907
|
+
/**
|
|
1908
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
1909
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
1910
|
+
* or set null to display the name itself.
|
|
1911
|
+
*/
|
|
1912
|
+
displayName?: string | null;
|
|
1913
|
+
|
|
1753
1914
|
/**
|
|
1754
1915
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
1755
1916
|
*/
|
|
@@ -1922,6 +2083,8 @@ export namespace CustomerFlowCreateResponse {
|
|
|
1922
2083
|
| 'OFFICE'
|
|
1923
2084
|
| 'THUNDERSTORM';
|
|
1924
2085
|
|
|
2086
|
+
backgroundNoiseVolume: number;
|
|
2087
|
+
|
|
1925
2088
|
/**
|
|
1926
2089
|
* Creation timestamp in ISO 8601 format
|
|
1927
2090
|
*/
|
|
@@ -2004,7 +2167,10 @@ export namespace CustomerFlowCreateResponse {
|
|
|
2004
2167
|
| 'FRUSTRATED'
|
|
2005
2168
|
| 'SKEPTICAL'
|
|
2006
2169
|
| 'RUSHED'
|
|
2007
|
-
| 'DISTRACTED'
|
|
2170
|
+
| 'DISTRACTED'
|
|
2171
|
+
| 'ANGRY'
|
|
2172
|
+
| 'ANXIOUS'
|
|
2173
|
+
| 'SAD';
|
|
2008
2174
|
|
|
2009
2175
|
/**
|
|
2010
2176
|
* How the persona confirms information
|
|
@@ -2146,6 +2312,13 @@ export namespace CustomerFlowCreateResponse {
|
|
|
2146
2312
|
*/
|
|
2147
2313
|
description?: string | null;
|
|
2148
2314
|
|
|
2315
|
+
/**
|
|
2316
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
2317
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
2318
|
+
* or set null to display the name itself.
|
|
2319
|
+
*/
|
|
2320
|
+
displayName?: string | null;
|
|
2321
|
+
|
|
2149
2322
|
/**
|
|
2150
2323
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
2151
2324
|
*/
|
|
@@ -2230,6 +2403,8 @@ export namespace CustomerFlowCreateResponse {
|
|
|
2230
2403
|
| 'OFFICE'
|
|
2231
2404
|
| 'THUNDERSTORM';
|
|
2232
2405
|
|
|
2406
|
+
backgroundNoiseVolume: number;
|
|
2407
|
+
|
|
2233
2408
|
/**
|
|
2234
2409
|
* Creation timestamp in ISO 8601 format
|
|
2235
2410
|
*/
|
|
@@ -2312,7 +2487,10 @@ export namespace CustomerFlowCreateResponse {
|
|
|
2312
2487
|
| 'FRUSTRATED'
|
|
2313
2488
|
| 'SKEPTICAL'
|
|
2314
2489
|
| 'RUSHED'
|
|
2315
|
-
| 'DISTRACTED'
|
|
2490
|
+
| 'DISTRACTED'
|
|
2491
|
+
| 'ANGRY'
|
|
2492
|
+
| 'ANXIOUS'
|
|
2493
|
+
| 'SAD';
|
|
2316
2494
|
|
|
2317
2495
|
/**
|
|
2318
2496
|
* How the persona confirms information
|
|
@@ -2454,6 +2632,13 @@ export namespace CustomerFlowCreateResponse {
|
|
|
2454
2632
|
*/
|
|
2455
2633
|
description?: string | null;
|
|
2456
2634
|
|
|
2635
|
+
/**
|
|
2636
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
2637
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
2638
|
+
* or set null to display the name itself.
|
|
2639
|
+
*/
|
|
2640
|
+
displayName?: string | null;
|
|
2641
|
+
|
|
2457
2642
|
/**
|
|
2458
2643
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
2459
2644
|
*/
|
|
@@ -2513,6 +2698,30 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
2513
2698
|
*/
|
|
2514
2699
|
happyPath: ScriptedCustomerFlow.HappyPath | null;
|
|
2515
2700
|
|
|
2701
|
+
/**
|
|
2702
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
2703
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
2704
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
2705
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
2706
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
2707
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
2708
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
2709
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
2710
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
2711
|
+
* AGENT_TURN step can carry its own.
|
|
2712
|
+
*/
|
|
2713
|
+
offScriptPolicy: ScriptedCustomerFlow.OffScriptPolicy | null;
|
|
2714
|
+
|
|
2715
|
+
/**
|
|
2716
|
+
* How closely a run follows the script. LOOSE (default) hands the whole script to
|
|
2717
|
+
* the simulated customer as one prompt; it keeps the call moving whatever your
|
|
2718
|
+
* agent says. STRICT runs the script as a state machine on the agent service: at
|
|
2719
|
+
* every agent step the simulated customer waits, silent, until your agent has said
|
|
2720
|
+
* the expected line, and only then moves on. Scripted flows only; STRICT needs the
|
|
2721
|
+
* agent-service transport and is not available on realtime models.
|
|
2722
|
+
*/
|
|
2723
|
+
scriptAdherence: 'LOOSE' | 'STRICT';
|
|
2724
|
+
|
|
2516
2725
|
source: 'SYSTEM' | 'CUSTOM';
|
|
2517
2726
|
|
|
2518
2727
|
title: string;
|
|
@@ -2663,6 +2872,8 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
2663
2872
|
| 'OFFICE'
|
|
2664
2873
|
| 'THUNDERSTORM';
|
|
2665
2874
|
|
|
2875
|
+
backgroundNoiseVolume: number;
|
|
2876
|
+
|
|
2666
2877
|
/**
|
|
2667
2878
|
* Creation timestamp in ISO 8601 format
|
|
2668
2879
|
*/
|
|
@@ -2745,7 +2956,10 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
2745
2956
|
| 'FRUSTRATED'
|
|
2746
2957
|
| 'SKEPTICAL'
|
|
2747
2958
|
| 'RUSHED'
|
|
2748
|
-
| 'DISTRACTED'
|
|
2959
|
+
| 'DISTRACTED'
|
|
2960
|
+
| 'ANGRY'
|
|
2961
|
+
| 'ANXIOUS'
|
|
2962
|
+
| 'SAD';
|
|
2749
2963
|
|
|
2750
2964
|
/**
|
|
2751
2965
|
* How the persona confirms information
|
|
@@ -2887,6 +3101,13 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
2887
3101
|
*/
|
|
2888
3102
|
description?: string | null;
|
|
2889
3103
|
|
|
3104
|
+
/**
|
|
3105
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
3106
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
3107
|
+
* or set null to display the name itself.
|
|
3108
|
+
*/
|
|
3109
|
+
displayName?: string | null;
|
|
3110
|
+
|
|
2890
3111
|
/**
|
|
2891
3112
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
2892
3113
|
*/
|
|
@@ -2978,6 +3199,8 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
2978
3199
|
| 'OFFICE'
|
|
2979
3200
|
| 'THUNDERSTORM';
|
|
2980
3201
|
|
|
3202
|
+
backgroundNoiseVolume: number;
|
|
3203
|
+
|
|
2981
3204
|
/**
|
|
2982
3205
|
* Creation timestamp in ISO 8601 format
|
|
2983
3206
|
*/
|
|
@@ -3060,7 +3283,10 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
3060
3283
|
| 'FRUSTRATED'
|
|
3061
3284
|
| 'SKEPTICAL'
|
|
3062
3285
|
| 'RUSHED'
|
|
3063
|
-
| 'DISTRACTED'
|
|
3286
|
+
| 'DISTRACTED'
|
|
3287
|
+
| 'ANGRY'
|
|
3288
|
+
| 'ANXIOUS'
|
|
3289
|
+
| 'SAD';
|
|
3064
3290
|
|
|
3065
3291
|
/**
|
|
3066
3292
|
* How the persona confirms information
|
|
@@ -3202,12 +3428,43 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
3202
3428
|
*/
|
|
3203
3429
|
description?: string | null;
|
|
3204
3430
|
|
|
3431
|
+
/**
|
|
3432
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
3433
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
3434
|
+
* or set null to display the name itself.
|
|
3435
|
+
*/
|
|
3436
|
+
displayName?: string | null;
|
|
3437
|
+
|
|
3205
3438
|
/**
|
|
3206
3439
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
3207
3440
|
*/
|
|
3208
3441
|
secondaryLanguage?: 'EN' | null;
|
|
3209
3442
|
}
|
|
3210
3443
|
}
|
|
3444
|
+
|
|
3445
|
+
/**
|
|
3446
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
3447
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
3448
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
3449
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
3450
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
3451
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
3452
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
3453
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
3454
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
3455
|
+
* AGENT_TURN step can carry its own.
|
|
3456
|
+
*/
|
|
3457
|
+
export interface OffScriptPolicy {
|
|
3458
|
+
maxAttempts: number;
|
|
3459
|
+
|
|
3460
|
+
reaction: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY';
|
|
3461
|
+
|
|
3462
|
+
then: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE';
|
|
3463
|
+
|
|
3464
|
+
sayLine?: string | null;
|
|
3465
|
+
|
|
3466
|
+
waitSeconds?: number | null;
|
|
3467
|
+
}
|
|
3211
3468
|
}
|
|
3212
3469
|
|
|
3213
3470
|
/**
|
|
@@ -3380,6 +3637,8 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
3380
3637
|
| 'OFFICE'
|
|
3381
3638
|
| 'THUNDERSTORM';
|
|
3382
3639
|
|
|
3640
|
+
backgroundNoiseVolume: number;
|
|
3641
|
+
|
|
3383
3642
|
/**
|
|
3384
3643
|
* Creation timestamp in ISO 8601 format
|
|
3385
3644
|
*/
|
|
@@ -3462,7 +3721,10 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
3462
3721
|
| 'FRUSTRATED'
|
|
3463
3722
|
| 'SKEPTICAL'
|
|
3464
3723
|
| 'RUSHED'
|
|
3465
|
-
| 'DISTRACTED'
|
|
3724
|
+
| 'DISTRACTED'
|
|
3725
|
+
| 'ANGRY'
|
|
3726
|
+
| 'ANXIOUS'
|
|
3727
|
+
| 'SAD';
|
|
3466
3728
|
|
|
3467
3729
|
/**
|
|
3468
3730
|
* How the persona confirms information
|
|
@@ -3604,6 +3866,13 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
3604
3866
|
*/
|
|
3605
3867
|
description?: string | null;
|
|
3606
3868
|
|
|
3869
|
+
/**
|
|
3870
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
3871
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
3872
|
+
* or set null to display the name itself.
|
|
3873
|
+
*/
|
|
3874
|
+
displayName?: string | null;
|
|
3875
|
+
|
|
3607
3876
|
/**
|
|
3608
3877
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
3609
3878
|
*/
|
|
@@ -3693,6 +3962,8 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
3693
3962
|
| 'OFFICE'
|
|
3694
3963
|
| 'THUNDERSTORM';
|
|
3695
3964
|
|
|
3965
|
+
backgroundNoiseVolume: number;
|
|
3966
|
+
|
|
3696
3967
|
/**
|
|
3697
3968
|
* Creation timestamp in ISO 8601 format
|
|
3698
3969
|
*/
|
|
@@ -3775,7 +4046,10 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
3775
4046
|
| 'FRUSTRATED'
|
|
3776
4047
|
| 'SKEPTICAL'
|
|
3777
4048
|
| 'RUSHED'
|
|
3778
|
-
| 'DISTRACTED'
|
|
4049
|
+
| 'DISTRACTED'
|
|
4050
|
+
| 'ANGRY'
|
|
4051
|
+
| 'ANXIOUS'
|
|
4052
|
+
| 'SAD';
|
|
3779
4053
|
|
|
3780
4054
|
/**
|
|
3781
4055
|
* How the persona confirms information
|
|
@@ -3917,6 +4191,13 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
3917
4191
|
*/
|
|
3918
4192
|
description?: string | null;
|
|
3919
4193
|
|
|
4194
|
+
/**
|
|
4195
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
4196
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
4197
|
+
* or set null to display the name itself.
|
|
4198
|
+
*/
|
|
4199
|
+
displayName?: string | null;
|
|
4200
|
+
|
|
3920
4201
|
/**
|
|
3921
4202
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
3922
4203
|
*/
|
|
@@ -4089,6 +4370,8 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
4089
4370
|
| 'OFFICE'
|
|
4090
4371
|
| 'THUNDERSTORM';
|
|
4091
4372
|
|
|
4373
|
+
backgroundNoiseVolume: number;
|
|
4374
|
+
|
|
4092
4375
|
/**
|
|
4093
4376
|
* Creation timestamp in ISO 8601 format
|
|
4094
4377
|
*/
|
|
@@ -4171,7 +4454,10 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
4171
4454
|
| 'FRUSTRATED'
|
|
4172
4455
|
| 'SKEPTICAL'
|
|
4173
4456
|
| 'RUSHED'
|
|
4174
|
-
| 'DISTRACTED'
|
|
4457
|
+
| 'DISTRACTED'
|
|
4458
|
+
| 'ANGRY'
|
|
4459
|
+
| 'ANXIOUS'
|
|
4460
|
+
| 'SAD';
|
|
4175
4461
|
|
|
4176
4462
|
/**
|
|
4177
4463
|
* How the persona confirms information
|
|
@@ -4313,6 +4599,13 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
4313
4599
|
*/
|
|
4314
4600
|
description?: string | null;
|
|
4315
4601
|
|
|
4602
|
+
/**
|
|
4603
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
4604
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
4605
|
+
* or set null to display the name itself.
|
|
4606
|
+
*/
|
|
4607
|
+
displayName?: string | null;
|
|
4608
|
+
|
|
4316
4609
|
/**
|
|
4317
4610
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
4318
4611
|
*/
|
|
@@ -4397,6 +4690,8 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
4397
4690
|
| 'OFFICE'
|
|
4398
4691
|
| 'THUNDERSTORM';
|
|
4399
4692
|
|
|
4693
|
+
backgroundNoiseVolume: number;
|
|
4694
|
+
|
|
4400
4695
|
/**
|
|
4401
4696
|
* Creation timestamp in ISO 8601 format
|
|
4402
4697
|
*/
|
|
@@ -4479,7 +4774,10 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
4479
4774
|
| 'FRUSTRATED'
|
|
4480
4775
|
| 'SKEPTICAL'
|
|
4481
4776
|
| 'RUSHED'
|
|
4482
|
-
| 'DISTRACTED'
|
|
4777
|
+
| 'DISTRACTED'
|
|
4778
|
+
| 'ANGRY'
|
|
4779
|
+
| 'ANXIOUS'
|
|
4780
|
+
| 'SAD';
|
|
4483
4781
|
|
|
4484
4782
|
/**
|
|
4485
4783
|
* How the persona confirms information
|
|
@@ -4621,6 +4919,13 @@ export namespace CustomerFlowUpdateResponse {
|
|
|
4621
4919
|
*/
|
|
4622
4920
|
description?: string | null;
|
|
4623
4921
|
|
|
4922
|
+
/**
|
|
4923
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
4924
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
4925
|
+
* or set null to display the name itself.
|
|
4926
|
+
*/
|
|
4927
|
+
displayName?: string | null;
|
|
4928
|
+
|
|
4624
4929
|
/**
|
|
4625
4930
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
4626
4931
|
*/
|
|
@@ -4683,6 +4988,30 @@ export namespace CustomerFlowListResponse {
|
|
|
4683
4988
|
*/
|
|
4684
4989
|
happyPath: ScriptedCustomerFlow.HappyPath | null;
|
|
4685
4990
|
|
|
4991
|
+
/**
|
|
4992
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
4993
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
4994
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
4995
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
4996
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
4997
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
4998
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
4999
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
5000
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
5001
|
+
* AGENT_TURN step can carry its own.
|
|
5002
|
+
*/
|
|
5003
|
+
offScriptPolicy: ScriptedCustomerFlow.OffScriptPolicy | null;
|
|
5004
|
+
|
|
5005
|
+
/**
|
|
5006
|
+
* How closely a run follows the script. LOOSE (default) hands the whole script to
|
|
5007
|
+
* the simulated customer as one prompt; it keeps the call moving whatever your
|
|
5008
|
+
* agent says. STRICT runs the script as a state machine on the agent service: at
|
|
5009
|
+
* every agent step the simulated customer waits, silent, until your agent has said
|
|
5010
|
+
* the expected line, and only then moves on. Scripted flows only; STRICT needs the
|
|
5011
|
+
* agent-service transport and is not available on realtime models.
|
|
5012
|
+
*/
|
|
5013
|
+
scriptAdherence: 'LOOSE' | 'STRICT';
|
|
5014
|
+
|
|
4686
5015
|
source: 'SYSTEM' | 'CUSTOM';
|
|
4687
5016
|
|
|
4688
5017
|
title: string;
|
|
@@ -4833,6 +5162,8 @@ export namespace CustomerFlowListResponse {
|
|
|
4833
5162
|
| 'OFFICE'
|
|
4834
5163
|
| 'THUNDERSTORM';
|
|
4835
5164
|
|
|
5165
|
+
backgroundNoiseVolume: number;
|
|
5166
|
+
|
|
4836
5167
|
/**
|
|
4837
5168
|
* Creation timestamp in ISO 8601 format
|
|
4838
5169
|
*/
|
|
@@ -4915,7 +5246,10 @@ export namespace CustomerFlowListResponse {
|
|
|
4915
5246
|
| 'FRUSTRATED'
|
|
4916
5247
|
| 'SKEPTICAL'
|
|
4917
5248
|
| 'RUSHED'
|
|
4918
|
-
| 'DISTRACTED'
|
|
5249
|
+
| 'DISTRACTED'
|
|
5250
|
+
| 'ANGRY'
|
|
5251
|
+
| 'ANXIOUS'
|
|
5252
|
+
| 'SAD';
|
|
4919
5253
|
|
|
4920
5254
|
/**
|
|
4921
5255
|
* How the persona confirms information
|
|
@@ -5057,6 +5391,13 @@ export namespace CustomerFlowListResponse {
|
|
|
5057
5391
|
*/
|
|
5058
5392
|
description?: string | null;
|
|
5059
5393
|
|
|
5394
|
+
/**
|
|
5395
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
5396
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
5397
|
+
* or set null to display the name itself.
|
|
5398
|
+
*/
|
|
5399
|
+
displayName?: string | null;
|
|
5400
|
+
|
|
5060
5401
|
/**
|
|
5061
5402
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
5062
5403
|
*/
|
|
@@ -5148,6 +5489,8 @@ export namespace CustomerFlowListResponse {
|
|
|
5148
5489
|
| 'OFFICE'
|
|
5149
5490
|
| 'THUNDERSTORM';
|
|
5150
5491
|
|
|
5492
|
+
backgroundNoiseVolume: number;
|
|
5493
|
+
|
|
5151
5494
|
/**
|
|
5152
5495
|
* Creation timestamp in ISO 8601 format
|
|
5153
5496
|
*/
|
|
@@ -5230,7 +5573,10 @@ export namespace CustomerFlowListResponse {
|
|
|
5230
5573
|
| 'FRUSTRATED'
|
|
5231
5574
|
| 'SKEPTICAL'
|
|
5232
5575
|
| 'RUSHED'
|
|
5233
|
-
| 'DISTRACTED'
|
|
5576
|
+
| 'DISTRACTED'
|
|
5577
|
+
| 'ANGRY'
|
|
5578
|
+
| 'ANXIOUS'
|
|
5579
|
+
| 'SAD';
|
|
5234
5580
|
|
|
5235
5581
|
/**
|
|
5236
5582
|
* How the persona confirms information
|
|
@@ -5372,12 +5718,43 @@ export namespace CustomerFlowListResponse {
|
|
|
5372
5718
|
*/
|
|
5373
5719
|
description?: string | null;
|
|
5374
5720
|
|
|
5721
|
+
/**
|
|
5722
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
5723
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
5724
|
+
* or set null to display the name itself.
|
|
5725
|
+
*/
|
|
5726
|
+
displayName?: string | null;
|
|
5727
|
+
|
|
5375
5728
|
/**
|
|
5376
5729
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
5377
5730
|
*/
|
|
5378
5731
|
secondaryLanguage?: 'EN' | null;
|
|
5379
5732
|
}
|
|
5380
5733
|
}
|
|
5734
|
+
|
|
5735
|
+
/**
|
|
5736
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
5737
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
5738
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
5739
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
5740
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
5741
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
5742
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
5743
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
5744
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
5745
|
+
* AGENT_TURN step can carry its own.
|
|
5746
|
+
*/
|
|
5747
|
+
export interface OffScriptPolicy {
|
|
5748
|
+
maxAttempts: number;
|
|
5749
|
+
|
|
5750
|
+
reaction: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY';
|
|
5751
|
+
|
|
5752
|
+
then: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE';
|
|
5753
|
+
|
|
5754
|
+
sayLine?: string | null;
|
|
5755
|
+
|
|
5756
|
+
waitSeconds?: number | null;
|
|
5757
|
+
}
|
|
5381
5758
|
}
|
|
5382
5759
|
|
|
5383
5760
|
/**
|
|
@@ -5550,6 +5927,8 @@ export namespace CustomerFlowListResponse {
|
|
|
5550
5927
|
| 'OFFICE'
|
|
5551
5928
|
| 'THUNDERSTORM';
|
|
5552
5929
|
|
|
5930
|
+
backgroundNoiseVolume: number;
|
|
5931
|
+
|
|
5553
5932
|
/**
|
|
5554
5933
|
* Creation timestamp in ISO 8601 format
|
|
5555
5934
|
*/
|
|
@@ -5632,7 +6011,10 @@ export namespace CustomerFlowListResponse {
|
|
|
5632
6011
|
| 'FRUSTRATED'
|
|
5633
6012
|
| 'SKEPTICAL'
|
|
5634
6013
|
| 'RUSHED'
|
|
5635
|
-
| 'DISTRACTED'
|
|
6014
|
+
| 'DISTRACTED'
|
|
6015
|
+
| 'ANGRY'
|
|
6016
|
+
| 'ANXIOUS'
|
|
6017
|
+
| 'SAD';
|
|
5636
6018
|
|
|
5637
6019
|
/**
|
|
5638
6020
|
* How the persona confirms information
|
|
@@ -5774,6 +6156,13 @@ export namespace CustomerFlowListResponse {
|
|
|
5774
6156
|
*/
|
|
5775
6157
|
description?: string | null;
|
|
5776
6158
|
|
|
6159
|
+
/**
|
|
6160
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
6161
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
6162
|
+
* or set null to display the name itself.
|
|
6163
|
+
*/
|
|
6164
|
+
displayName?: string | null;
|
|
6165
|
+
|
|
5777
6166
|
/**
|
|
5778
6167
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
5779
6168
|
*/
|
|
@@ -5863,6 +6252,8 @@ export namespace CustomerFlowListResponse {
|
|
|
5863
6252
|
| 'OFFICE'
|
|
5864
6253
|
| 'THUNDERSTORM';
|
|
5865
6254
|
|
|
6255
|
+
backgroundNoiseVolume: number;
|
|
6256
|
+
|
|
5866
6257
|
/**
|
|
5867
6258
|
* Creation timestamp in ISO 8601 format
|
|
5868
6259
|
*/
|
|
@@ -5945,7 +6336,10 @@ export namespace CustomerFlowListResponse {
|
|
|
5945
6336
|
| 'FRUSTRATED'
|
|
5946
6337
|
| 'SKEPTICAL'
|
|
5947
6338
|
| 'RUSHED'
|
|
5948
|
-
| 'DISTRACTED'
|
|
6339
|
+
| 'DISTRACTED'
|
|
6340
|
+
| 'ANGRY'
|
|
6341
|
+
| 'ANXIOUS'
|
|
6342
|
+
| 'SAD';
|
|
5949
6343
|
|
|
5950
6344
|
/**
|
|
5951
6345
|
* How the persona confirms information
|
|
@@ -6087,6 +6481,13 @@ export namespace CustomerFlowListResponse {
|
|
|
6087
6481
|
*/
|
|
6088
6482
|
description?: string | null;
|
|
6089
6483
|
|
|
6484
|
+
/**
|
|
6485
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
6486
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
6487
|
+
* or set null to display the name itself.
|
|
6488
|
+
*/
|
|
6489
|
+
displayName?: string | null;
|
|
6490
|
+
|
|
6090
6491
|
/**
|
|
6091
6492
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
6092
6493
|
*/
|
|
@@ -6259,6 +6660,8 @@ export namespace CustomerFlowListResponse {
|
|
|
6259
6660
|
| 'OFFICE'
|
|
6260
6661
|
| 'THUNDERSTORM';
|
|
6261
6662
|
|
|
6663
|
+
backgroundNoiseVolume: number;
|
|
6664
|
+
|
|
6262
6665
|
/**
|
|
6263
6666
|
* Creation timestamp in ISO 8601 format
|
|
6264
6667
|
*/
|
|
@@ -6341,7 +6744,10 @@ export namespace CustomerFlowListResponse {
|
|
|
6341
6744
|
| 'FRUSTRATED'
|
|
6342
6745
|
| 'SKEPTICAL'
|
|
6343
6746
|
| 'RUSHED'
|
|
6344
|
-
| 'DISTRACTED'
|
|
6747
|
+
| 'DISTRACTED'
|
|
6748
|
+
| 'ANGRY'
|
|
6749
|
+
| 'ANXIOUS'
|
|
6750
|
+
| 'SAD';
|
|
6345
6751
|
|
|
6346
6752
|
/**
|
|
6347
6753
|
* How the persona confirms information
|
|
@@ -6483,6 +6889,13 @@ export namespace CustomerFlowListResponse {
|
|
|
6483
6889
|
*/
|
|
6484
6890
|
description?: string | null;
|
|
6485
6891
|
|
|
6892
|
+
/**
|
|
6893
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
6894
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
6895
|
+
* or set null to display the name itself.
|
|
6896
|
+
*/
|
|
6897
|
+
displayName?: string | null;
|
|
6898
|
+
|
|
6486
6899
|
/**
|
|
6487
6900
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
6488
6901
|
*/
|
|
@@ -6567,6 +6980,8 @@ export namespace CustomerFlowListResponse {
|
|
|
6567
6980
|
| 'OFFICE'
|
|
6568
6981
|
| 'THUNDERSTORM';
|
|
6569
6982
|
|
|
6983
|
+
backgroundNoiseVolume: number;
|
|
6984
|
+
|
|
6570
6985
|
/**
|
|
6571
6986
|
* Creation timestamp in ISO 8601 format
|
|
6572
6987
|
*/
|
|
@@ -6649,7 +7064,10 @@ export namespace CustomerFlowListResponse {
|
|
|
6649
7064
|
| 'FRUSTRATED'
|
|
6650
7065
|
| 'SKEPTICAL'
|
|
6651
7066
|
| 'RUSHED'
|
|
6652
|
-
| 'DISTRACTED'
|
|
7067
|
+
| 'DISTRACTED'
|
|
7068
|
+
| 'ANGRY'
|
|
7069
|
+
| 'ANXIOUS'
|
|
7070
|
+
| 'SAD';
|
|
6653
7071
|
|
|
6654
7072
|
/**
|
|
6655
7073
|
* How the persona confirms information
|
|
@@ -6791,6 +7209,13 @@ export namespace CustomerFlowListResponse {
|
|
|
6791
7209
|
*/
|
|
6792
7210
|
description?: string | null;
|
|
6793
7211
|
|
|
7212
|
+
/**
|
|
7213
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
7214
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
7215
|
+
* or set null to display the name itself.
|
|
7216
|
+
*/
|
|
7217
|
+
displayName?: string | null;
|
|
7218
|
+
|
|
6794
7219
|
/**
|
|
6795
7220
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
6796
7221
|
*/
|
|
@@ -6830,17 +7255,17 @@ export namespace CustomerFlowDeleteResponse {
|
|
|
6830
7255
|
}
|
|
6831
7256
|
}
|
|
6832
7257
|
|
|
6833
|
-
export interface
|
|
7258
|
+
export interface CustomerFlowDuplicateResponse {
|
|
6834
7259
|
/**
|
|
6835
7260
|
* The conversation a simulated customer has with the agent under test.
|
|
6836
7261
|
*/
|
|
6837
7262
|
data:
|
|
6838
|
-
|
|
|
6839
|
-
|
|
|
6840
|
-
|
|
|
7263
|
+
| CustomerFlowDuplicateResponse.ScriptedCustomerFlow
|
|
7264
|
+
| CustomerFlowDuplicateResponse.ImprovCustomerFlow
|
|
7265
|
+
| CustomerFlowDuplicateResponse.VoicemailCustomerFlow;
|
|
6841
7266
|
}
|
|
6842
7267
|
|
|
6843
|
-
export namespace
|
|
7268
|
+
export namespace CustomerFlowDuplicateResponse {
|
|
6844
7269
|
/**
|
|
6845
7270
|
* A flow whose conversation is written out as a graph of turns.
|
|
6846
7271
|
*/
|
|
@@ -6880,6 +7305,30 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
6880
7305
|
*/
|
|
6881
7306
|
happyPath: ScriptedCustomerFlow.HappyPath | null;
|
|
6882
7307
|
|
|
7308
|
+
/**
|
|
7309
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
7310
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
7311
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
7312
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
7313
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
7314
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
7315
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
7316
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
7317
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
7318
|
+
* AGENT_TURN step can carry its own.
|
|
7319
|
+
*/
|
|
7320
|
+
offScriptPolicy: ScriptedCustomerFlow.OffScriptPolicy | null;
|
|
7321
|
+
|
|
7322
|
+
/**
|
|
7323
|
+
* How closely a run follows the script. LOOSE (default) hands the whole script to
|
|
7324
|
+
* the simulated customer as one prompt; it keeps the call moving whatever your
|
|
7325
|
+
* agent says. STRICT runs the script as a state machine on the agent service: at
|
|
7326
|
+
* every agent step the simulated customer waits, silent, until your agent has said
|
|
7327
|
+
* the expected line, and only then moves on. Scripted flows only; STRICT needs the
|
|
7328
|
+
* agent-service transport and is not available on realtime models.
|
|
7329
|
+
*/
|
|
7330
|
+
scriptAdherence: 'LOOSE' | 'STRICT';
|
|
7331
|
+
|
|
6883
7332
|
source: 'SYSTEM' | 'CUSTOM';
|
|
6884
7333
|
|
|
6885
7334
|
title: string;
|
|
@@ -7030,6 +7479,8 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
7030
7479
|
| 'OFFICE'
|
|
7031
7480
|
| 'THUNDERSTORM';
|
|
7032
7481
|
|
|
7482
|
+
backgroundNoiseVolume: number;
|
|
7483
|
+
|
|
7033
7484
|
/**
|
|
7034
7485
|
* Creation timestamp in ISO 8601 format
|
|
7035
7486
|
*/
|
|
@@ -7112,7 +7563,10 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
7112
7563
|
| 'FRUSTRATED'
|
|
7113
7564
|
| 'SKEPTICAL'
|
|
7114
7565
|
| 'RUSHED'
|
|
7115
|
-
| 'DISTRACTED'
|
|
7566
|
+
| 'DISTRACTED'
|
|
7567
|
+
| 'ANGRY'
|
|
7568
|
+
| 'ANXIOUS'
|
|
7569
|
+
| 'SAD';
|
|
7116
7570
|
|
|
7117
7571
|
/**
|
|
7118
7572
|
* How the persona confirms information
|
|
@@ -7254,6 +7708,13 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
7254
7708
|
*/
|
|
7255
7709
|
description?: string | null;
|
|
7256
7710
|
|
|
7711
|
+
/**
|
|
7712
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
7713
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
7714
|
+
* or set null to display the name itself.
|
|
7715
|
+
*/
|
|
7716
|
+
displayName?: string | null;
|
|
7717
|
+
|
|
7257
7718
|
/**
|
|
7258
7719
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
7259
7720
|
*/
|
|
@@ -7345,6 +7806,8 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
7345
7806
|
| 'OFFICE'
|
|
7346
7807
|
| 'THUNDERSTORM';
|
|
7347
7808
|
|
|
7809
|
+
backgroundNoiseVolume: number;
|
|
7810
|
+
|
|
7348
7811
|
/**
|
|
7349
7812
|
* Creation timestamp in ISO 8601 format
|
|
7350
7813
|
*/
|
|
@@ -7427,7 +7890,10 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
7427
7890
|
| 'FRUSTRATED'
|
|
7428
7891
|
| 'SKEPTICAL'
|
|
7429
7892
|
| 'RUSHED'
|
|
7430
|
-
| 'DISTRACTED'
|
|
7893
|
+
| 'DISTRACTED'
|
|
7894
|
+
| 'ANGRY'
|
|
7895
|
+
| 'ANXIOUS'
|
|
7896
|
+
| 'SAD';
|
|
7431
7897
|
|
|
7432
7898
|
/**
|
|
7433
7899
|
* How the persona confirms information
|
|
@@ -7569,12 +8035,43 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
7569
8035
|
*/
|
|
7570
8036
|
description?: string | null;
|
|
7571
8037
|
|
|
8038
|
+
/**
|
|
8039
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
8040
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
8041
|
+
* or set null to display the name itself.
|
|
8042
|
+
*/
|
|
8043
|
+
displayName?: string | null;
|
|
8044
|
+
|
|
7572
8045
|
/**
|
|
7573
8046
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
7574
8047
|
*/
|
|
7575
8048
|
secondaryLanguage?: 'EN' | null;
|
|
7576
8049
|
}
|
|
7577
8050
|
}
|
|
8051
|
+
|
|
8052
|
+
/**
|
|
8053
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
8054
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
8055
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
8056
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
8057
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
8058
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
8059
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
8060
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
8061
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
8062
|
+
* AGENT_TURN step can carry its own.
|
|
8063
|
+
*/
|
|
8064
|
+
export interface OffScriptPolicy {
|
|
8065
|
+
maxAttempts: number;
|
|
8066
|
+
|
|
8067
|
+
reaction: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY';
|
|
8068
|
+
|
|
8069
|
+
then: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE';
|
|
8070
|
+
|
|
8071
|
+
sayLine?: string | null;
|
|
8072
|
+
|
|
8073
|
+
waitSeconds?: number | null;
|
|
8074
|
+
}
|
|
7578
8075
|
}
|
|
7579
8076
|
|
|
7580
8077
|
/**
|
|
@@ -7747,6 +8244,8 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
7747
8244
|
| 'OFFICE'
|
|
7748
8245
|
| 'THUNDERSTORM';
|
|
7749
8246
|
|
|
8247
|
+
backgroundNoiseVolume: number;
|
|
8248
|
+
|
|
7750
8249
|
/**
|
|
7751
8250
|
* Creation timestamp in ISO 8601 format
|
|
7752
8251
|
*/
|
|
@@ -7829,7 +8328,10 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
7829
8328
|
| 'FRUSTRATED'
|
|
7830
8329
|
| 'SKEPTICAL'
|
|
7831
8330
|
| 'RUSHED'
|
|
7832
|
-
| 'DISTRACTED'
|
|
8331
|
+
| 'DISTRACTED'
|
|
8332
|
+
| 'ANGRY'
|
|
8333
|
+
| 'ANXIOUS'
|
|
8334
|
+
| 'SAD';
|
|
7833
8335
|
|
|
7834
8336
|
/**
|
|
7835
8337
|
* How the persona confirms information
|
|
@@ -7971,6 +8473,13 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
7971
8473
|
*/
|
|
7972
8474
|
description?: string | null;
|
|
7973
8475
|
|
|
8476
|
+
/**
|
|
8477
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
8478
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
8479
|
+
* or set null to display the name itself.
|
|
8480
|
+
*/
|
|
8481
|
+
displayName?: string | null;
|
|
8482
|
+
|
|
7974
8483
|
/**
|
|
7975
8484
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
7976
8485
|
*/
|
|
@@ -8060,6 +8569,8 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
8060
8569
|
| 'OFFICE'
|
|
8061
8570
|
| 'THUNDERSTORM';
|
|
8062
8571
|
|
|
8572
|
+
backgroundNoiseVolume: number;
|
|
8573
|
+
|
|
8063
8574
|
/**
|
|
8064
8575
|
* Creation timestamp in ISO 8601 format
|
|
8065
8576
|
*/
|
|
@@ -8142,7 +8653,10 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
8142
8653
|
| 'FRUSTRATED'
|
|
8143
8654
|
| 'SKEPTICAL'
|
|
8144
8655
|
| 'RUSHED'
|
|
8145
|
-
| 'DISTRACTED'
|
|
8656
|
+
| 'DISTRACTED'
|
|
8657
|
+
| 'ANGRY'
|
|
8658
|
+
| 'ANXIOUS'
|
|
8659
|
+
| 'SAD';
|
|
8146
8660
|
|
|
8147
8661
|
/**
|
|
8148
8662
|
* How the persona confirms information
|
|
@@ -8284,6 +8798,13 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
8284
8798
|
*/
|
|
8285
8799
|
description?: string | null;
|
|
8286
8800
|
|
|
8801
|
+
/**
|
|
8802
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
8803
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
8804
|
+
* or set null to display the name itself.
|
|
8805
|
+
*/
|
|
8806
|
+
displayName?: string | null;
|
|
8807
|
+
|
|
8287
8808
|
/**
|
|
8288
8809
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
8289
8810
|
*/
|
|
@@ -8456,6 +8977,8 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
8456
8977
|
| 'OFFICE'
|
|
8457
8978
|
| 'THUNDERSTORM';
|
|
8458
8979
|
|
|
8980
|
+
backgroundNoiseVolume: number;
|
|
8981
|
+
|
|
8459
8982
|
/**
|
|
8460
8983
|
* Creation timestamp in ISO 8601 format
|
|
8461
8984
|
*/
|
|
@@ -8538,7 +9061,10 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
8538
9061
|
| 'FRUSTRATED'
|
|
8539
9062
|
| 'SKEPTICAL'
|
|
8540
9063
|
| 'RUSHED'
|
|
8541
|
-
| 'DISTRACTED'
|
|
9064
|
+
| 'DISTRACTED'
|
|
9065
|
+
| 'ANGRY'
|
|
9066
|
+
| 'ANXIOUS'
|
|
9067
|
+
| 'SAD';
|
|
8542
9068
|
|
|
8543
9069
|
/**
|
|
8544
9070
|
* How the persona confirms information
|
|
@@ -8680,6 +9206,13 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
8680
9206
|
*/
|
|
8681
9207
|
description?: string | null;
|
|
8682
9208
|
|
|
9209
|
+
/**
|
|
9210
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
9211
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
9212
|
+
* or set null to display the name itself.
|
|
9213
|
+
*/
|
|
9214
|
+
displayName?: string | null;
|
|
9215
|
+
|
|
8683
9216
|
/**
|
|
8684
9217
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
8685
9218
|
*/
|
|
@@ -8764,6 +9297,8 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
8764
9297
|
| 'OFFICE'
|
|
8765
9298
|
| 'THUNDERSTORM';
|
|
8766
9299
|
|
|
9300
|
+
backgroundNoiseVolume: number;
|
|
9301
|
+
|
|
8767
9302
|
/**
|
|
8768
9303
|
* Creation timestamp in ISO 8601 format
|
|
8769
9304
|
*/
|
|
@@ -8846,7 +9381,10 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
8846
9381
|
| 'FRUSTRATED'
|
|
8847
9382
|
| 'SKEPTICAL'
|
|
8848
9383
|
| 'RUSHED'
|
|
8849
|
-
| 'DISTRACTED'
|
|
9384
|
+
| 'DISTRACTED'
|
|
9385
|
+
| 'ANGRY'
|
|
9386
|
+
| 'ANXIOUS'
|
|
9387
|
+
| 'SAD';
|
|
8850
9388
|
|
|
8851
9389
|
/**
|
|
8852
9390
|
* How the persona confirms information
|
|
@@ -8988,6 +9526,13 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
8988
9526
|
*/
|
|
8989
9527
|
description?: string | null;
|
|
8990
9528
|
|
|
9529
|
+
/**
|
|
9530
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
9531
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
9532
|
+
* or set null to display the name itself.
|
|
9533
|
+
*/
|
|
9534
|
+
displayName?: string | null;
|
|
9535
|
+
|
|
8991
9536
|
/**
|
|
8992
9537
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
8993
9538
|
*/
|
|
@@ -8997,45 +9542,2332 @@ export namespace CustomerFlowGetByIDResponse {
|
|
|
8997
9542
|
}
|
|
8998
9543
|
}
|
|
8999
9544
|
|
|
9000
|
-
export interface
|
|
9001
|
-
|
|
9545
|
+
export interface CustomerFlowGetByIDResponse {
|
|
9546
|
+
/**
|
|
9547
|
+
* The conversation a simulated customer has with the agent under test.
|
|
9548
|
+
*/
|
|
9549
|
+
data:
|
|
9550
|
+
| CustomerFlowGetByIDResponse.ScriptedCustomerFlow
|
|
9551
|
+
| CustomerFlowGetByIDResponse.ImprovCustomerFlow
|
|
9552
|
+
| CustomerFlowGetByIDResponse.VoicemailCustomerFlow;
|
|
9002
9553
|
}
|
|
9003
9554
|
|
|
9004
|
-
export namespace
|
|
9005
|
-
|
|
9555
|
+
export namespace CustomerFlowGetByIDResponse {
|
|
9556
|
+
/**
|
|
9557
|
+
* A flow whose conversation is written out as a graph of turns.
|
|
9558
|
+
*/
|
|
9559
|
+
export interface ScriptedCustomerFlow {
|
|
9560
|
+
id: string;
|
|
9561
|
+
|
|
9562
|
+
agentExpectations: Array<ScriptedCustomerFlow.AgentExpectation>;
|
|
9563
|
+
|
|
9006
9564
|
/**
|
|
9007
|
-
* The
|
|
9565
|
+
* The agents this flow is run against.
|
|
9008
9566
|
*/
|
|
9009
|
-
|
|
9010
|
-
|
|
9011
|
-
graph: Array<CustomerFlowAPI.FlowStep>;
|
|
9567
|
+
agents: Array<ScriptedCustomerFlow.Agent>;
|
|
9012
9568
|
|
|
9013
9569
|
/**
|
|
9014
|
-
*
|
|
9570
|
+
* How a run walks the graph. DETERMINISTIC ("Simulate every path" in the app)
|
|
9571
|
+
* places one call per variant, each following its path exactly whatever the agent
|
|
9572
|
+
* says. ADAPTIVE ("Adapt to your agent") collapses the paths into one call PER
|
|
9573
|
+
* PERSONA, on which the simulated customer picks a branch from what the agent
|
|
9574
|
+
* actually said. Both modes speak the exact authored lines, and neither changes
|
|
9575
|
+
* how metrics or expectations grade.
|
|
9015
9576
|
*/
|
|
9016
|
-
|
|
9577
|
+
branchingMode: 'DETERMINISTIC' | 'ADAPTIVE';
|
|
9017
9578
|
|
|
9018
9579
|
/**
|
|
9019
|
-
*
|
|
9020
|
-
* re-seeded and any variant id you were holding may no longer exist.
|
|
9580
|
+
* Creation timestamp in ISO 8601 format
|
|
9021
9581
|
*/
|
|
9022
|
-
|
|
9582
|
+
createdAt: string;
|
|
9023
9583
|
|
|
9024
|
-
|
|
9025
|
-
|
|
9584
|
+
/**
|
|
9585
|
+
* Every other way of running this flow.
|
|
9586
|
+
*/
|
|
9587
|
+
edgeCases: Array<ScriptedCustomerFlow.EdgeCase>;
|
|
9026
9588
|
|
|
9027
|
-
export namespace Data {
|
|
9028
9589
|
/**
|
|
9029
9590
|
* One path through a scripted flow. The path engine owns which paths exist, so
|
|
9030
9591
|
* editing the graph is what creates and removes these.
|
|
9031
9592
|
*/
|
|
9032
|
-
|
|
9033
|
-
id: string;
|
|
9593
|
+
happyPath: ScriptedCustomerFlow.HappyPath | null;
|
|
9034
9594
|
|
|
9035
|
-
|
|
9036
|
-
|
|
9037
|
-
|
|
9038
|
-
|
|
9595
|
+
/**
|
|
9596
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
9597
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
9598
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
9599
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
9600
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
9601
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
9602
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
9603
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
9604
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
9605
|
+
* AGENT_TURN step can carry its own.
|
|
9606
|
+
*/
|
|
9607
|
+
offScriptPolicy: ScriptedCustomerFlow.OffScriptPolicy | null;
|
|
9608
|
+
|
|
9609
|
+
/**
|
|
9610
|
+
* How closely a run follows the script. LOOSE (default) hands the whole script to
|
|
9611
|
+
* the simulated customer as one prompt; it keeps the call moving whatever your
|
|
9612
|
+
* agent says. STRICT runs the script as a state machine on the agent service: at
|
|
9613
|
+
* every agent step the simulated customer waits, silent, until your agent has said
|
|
9614
|
+
* the expected line, and only then moves on. Scripted flows only; STRICT needs the
|
|
9615
|
+
* agent-service transport and is not available on realtime models.
|
|
9616
|
+
*/
|
|
9617
|
+
scriptAdherence: 'LOOSE' | 'STRICT';
|
|
9618
|
+
|
|
9619
|
+
source: 'SYSTEM' | 'CUSTOM';
|
|
9620
|
+
|
|
9621
|
+
title: string;
|
|
9622
|
+
|
|
9623
|
+
type: 'SCRIPTED';
|
|
9624
|
+
|
|
9625
|
+
/**
|
|
9626
|
+
* Last update timestamp in ISO 8601 format
|
|
9627
|
+
*/
|
|
9628
|
+
updatedAt: string;
|
|
9629
|
+
|
|
9630
|
+
description?: string | null;
|
|
9631
|
+
|
|
9632
|
+
/**
|
|
9633
|
+
* The conversation, as a graph of steps. Present on a single flow; omitted from
|
|
9634
|
+
* the list, where reading it would mean walking the project step graph once per
|
|
9635
|
+
* row.
|
|
9636
|
+
*/
|
|
9637
|
+
graph?: Array<CustomerFlowAPI.FlowStep>;
|
|
9638
|
+
}
|
|
9639
|
+
|
|
9640
|
+
export namespace ScriptedCustomerFlow {
|
|
9641
|
+
/**
|
|
9642
|
+
* One thing the agent under test is graded against.
|
|
9643
|
+
*/
|
|
9644
|
+
export interface AgentExpectation {
|
|
9645
|
+
id: string;
|
|
9646
|
+
|
|
9647
|
+
/**
|
|
9648
|
+
* What the agent under test is graded against.
|
|
9649
|
+
*/
|
|
9650
|
+
prompt: string;
|
|
9651
|
+
}
|
|
9652
|
+
|
|
9653
|
+
export interface Agent {
|
|
9654
|
+
/**
|
|
9655
|
+
* Unique identifier of the agent
|
|
9656
|
+
*/
|
|
9657
|
+
id: string;
|
|
9658
|
+
|
|
9659
|
+
/**
|
|
9660
|
+
* Creation timestamp in ISO 8601 format
|
|
9661
|
+
*/
|
|
9662
|
+
createdAt: string;
|
|
9663
|
+
|
|
9664
|
+
/**
|
|
9665
|
+
* Custom identifier for the agent
|
|
9666
|
+
*/
|
|
9667
|
+
customId: string | null;
|
|
9668
|
+
|
|
9669
|
+
/**
|
|
9670
|
+
* Description of the agent
|
|
9671
|
+
*/
|
|
9672
|
+
description: string | null;
|
|
9673
|
+
|
|
9674
|
+
/**
|
|
9675
|
+
* Name of the agent
|
|
9676
|
+
*/
|
|
9677
|
+
name: string;
|
|
9678
|
+
|
|
9679
|
+
/**
|
|
9680
|
+
* Last update timestamp in ISO 8601 format
|
|
9681
|
+
*/
|
|
9682
|
+
updatedAt: string;
|
|
9683
|
+
}
|
|
9684
|
+
|
|
9685
|
+
/**
|
|
9686
|
+
* One path through a scripted flow. The path engine owns which paths exist, so
|
|
9687
|
+
* editing the graph is what creates and removes these.
|
|
9688
|
+
*/
|
|
9689
|
+
export interface EdgeCase {
|
|
9690
|
+
id: string;
|
|
9691
|
+
|
|
9692
|
+
/**
|
|
9693
|
+
* Graded on top of the flow's own expectations, for this variant only.
|
|
9694
|
+
*/
|
|
9695
|
+
additionalExpectations: Array<EdgeCase.AdditionalExpectation>;
|
|
9696
|
+
|
|
9697
|
+
/**
|
|
9698
|
+
* Creation timestamp in ISO 8601 format
|
|
9699
|
+
*/
|
|
9700
|
+
createdAt: string;
|
|
9701
|
+
|
|
9702
|
+
/**
|
|
9703
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
9704
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
9705
|
+
* project.
|
|
9706
|
+
*/
|
|
9707
|
+
environment: EdgeCase.Environment | null;
|
|
9708
|
+
|
|
9709
|
+
isGenerated: boolean;
|
|
9710
|
+
|
|
9711
|
+
/**
|
|
9712
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
9713
|
+
*/
|
|
9714
|
+
personaOverride: EdgeCase.PersonaOverride | null;
|
|
9715
|
+
|
|
9716
|
+
precededByCustomerFlowId: string | null;
|
|
9717
|
+
|
|
9718
|
+
precededByCustomerFlowVariantId: string | null;
|
|
9719
|
+
|
|
9720
|
+
/**
|
|
9721
|
+
* The one path through the graph this variant runs, in order. Linear by
|
|
9722
|
+
* construction, so these steps never nest.
|
|
9723
|
+
*/
|
|
9724
|
+
steps: Array<CustomerFlowAPI.FlowStep>;
|
|
9725
|
+
|
|
9726
|
+
title: string;
|
|
9727
|
+
|
|
9728
|
+
type: 'SCRIPTED';
|
|
9729
|
+
|
|
9730
|
+
/**
|
|
9731
|
+
* Last update timestamp in ISO 8601 format
|
|
9732
|
+
*/
|
|
9733
|
+
updatedAt: string;
|
|
9734
|
+
|
|
9735
|
+
systemKey?: string | null;
|
|
9736
|
+
}
|
|
9737
|
+
|
|
9738
|
+
export namespace EdgeCase {
|
|
9739
|
+
/**
|
|
9740
|
+
* One thing the agent under test is graded against.
|
|
9741
|
+
*/
|
|
9742
|
+
export interface AdditionalExpectation {
|
|
9743
|
+
id: string;
|
|
9744
|
+
|
|
9745
|
+
/**
|
|
9746
|
+
* What the agent under test is graded against.
|
|
9747
|
+
*/
|
|
9748
|
+
prompt: string;
|
|
9749
|
+
}
|
|
9750
|
+
|
|
9751
|
+
/**
|
|
9752
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
9753
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
9754
|
+
* project.
|
|
9755
|
+
*/
|
|
9756
|
+
export interface Environment {
|
|
9757
|
+
id: string;
|
|
9758
|
+
|
|
9759
|
+
backgroundNoise:
|
|
9760
|
+
| 'NONE'
|
|
9761
|
+
| 'AIRPORT'
|
|
9762
|
+
| 'CHILDREN_PLAYING'
|
|
9763
|
+
| 'CITY'
|
|
9764
|
+
| 'COFFEE_SHOP'
|
|
9765
|
+
| 'DRIVING'
|
|
9766
|
+
| 'OFFICE'
|
|
9767
|
+
| 'THUNDERSTORM';
|
|
9768
|
+
|
|
9769
|
+
backgroundNoiseVolume: number;
|
|
9770
|
+
|
|
9771
|
+
/**
|
|
9772
|
+
* Creation timestamp in ISO 8601 format
|
|
9773
|
+
*/
|
|
9774
|
+
createdAt: string;
|
|
9775
|
+
|
|
9776
|
+
name: string;
|
|
9777
|
+
|
|
9778
|
+
/**
|
|
9779
|
+
* Last update timestamp in ISO 8601 format
|
|
9780
|
+
*/
|
|
9781
|
+
updatedAt: string;
|
|
9782
|
+
|
|
9783
|
+
description?: string | null;
|
|
9784
|
+
}
|
|
9785
|
+
|
|
9786
|
+
/**
|
|
9787
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
9788
|
+
*/
|
|
9789
|
+
export interface PersonaOverride {
|
|
9790
|
+
/**
|
|
9791
|
+
* Unique identifier of the persona
|
|
9792
|
+
*/
|
|
9793
|
+
id: string;
|
|
9794
|
+
|
|
9795
|
+
/**
|
|
9796
|
+
* Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
|
|
9797
|
+
* optional variants
|
|
9798
|
+
*/
|
|
9799
|
+
accent:
|
|
9800
|
+
| 'US'
|
|
9801
|
+
| 'US_X_SOUTH'
|
|
9802
|
+
| 'GB'
|
|
9803
|
+
| 'ES'
|
|
9804
|
+
| 'DE'
|
|
9805
|
+
| 'IN'
|
|
9806
|
+
| 'FR'
|
|
9807
|
+
| 'NL'
|
|
9808
|
+
| 'SA'
|
|
9809
|
+
| 'GR'
|
|
9810
|
+
| 'AU'
|
|
9811
|
+
| 'IT'
|
|
9812
|
+
| 'ID'
|
|
9813
|
+
| 'TH'
|
|
9814
|
+
| 'JP'
|
|
9815
|
+
| 'NZ'
|
|
9816
|
+
| 'PH'
|
|
9817
|
+
| 'SG'
|
|
9818
|
+
| 'MY'
|
|
9819
|
+
| 'HK'
|
|
9820
|
+
| 'TR'
|
|
9821
|
+
| 'PT'
|
|
9822
|
+
| 'IL';
|
|
9823
|
+
|
|
9824
|
+
/**
|
|
9825
|
+
* How old the caller sounds and behaves. Only ages the persona's accent has a
|
|
9826
|
+
* voice for are accepted; defaults to ADULT, which every accent supports.
|
|
9827
|
+
*/
|
|
9828
|
+
age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY';
|
|
9829
|
+
|
|
9830
|
+
/**
|
|
9831
|
+
* Background noise setting
|
|
9832
|
+
*/
|
|
9833
|
+
backgroundNoise:
|
|
9834
|
+
| 'NONE'
|
|
9835
|
+
| 'AIRPORT'
|
|
9836
|
+
| 'CHILDREN_PLAYING'
|
|
9837
|
+
| 'CITY'
|
|
9838
|
+
| 'COFFEE_SHOP'
|
|
9839
|
+
| 'DRIVING'
|
|
9840
|
+
| 'OFFICE'
|
|
9841
|
+
| 'THUNDERSTORM';
|
|
9842
|
+
|
|
9843
|
+
/**
|
|
9844
|
+
* Base emotional state of the persona
|
|
9845
|
+
*/
|
|
9846
|
+
baseEmotion:
|
|
9847
|
+
| 'NEUTRAL'
|
|
9848
|
+
| 'CHEERFUL'
|
|
9849
|
+
| 'CONFUSED'
|
|
9850
|
+
| 'FRUSTRATED'
|
|
9851
|
+
| 'SKEPTICAL'
|
|
9852
|
+
| 'RUSHED'
|
|
9853
|
+
| 'DISTRACTED'
|
|
9854
|
+
| 'ANGRY'
|
|
9855
|
+
| 'ANXIOUS'
|
|
9856
|
+
| 'SAD';
|
|
9857
|
+
|
|
9858
|
+
/**
|
|
9859
|
+
* How the persona confirms information
|
|
9860
|
+
*/
|
|
9861
|
+
confirmationStyle: 'EXPLICIT' | 'VAGUE';
|
|
9862
|
+
|
|
9863
|
+
/**
|
|
9864
|
+
* Creation timestamp
|
|
9865
|
+
*/
|
|
9866
|
+
createdAt: string;
|
|
9867
|
+
|
|
9868
|
+
/**
|
|
9869
|
+
* Gender of the persona
|
|
9870
|
+
*/
|
|
9871
|
+
gender: 'MALE' | 'FEMALE';
|
|
9872
|
+
|
|
9873
|
+
/**
|
|
9874
|
+
* Whether the persona uses filler words like "um" and "uh"
|
|
9875
|
+
*/
|
|
9876
|
+
hasDisfluencies: boolean;
|
|
9877
|
+
|
|
9878
|
+
/**
|
|
9879
|
+
* Maximum number of idle messages the persona will send before giving up
|
|
9880
|
+
*/
|
|
9881
|
+
idleMessageMaxSpokenCount: number;
|
|
9882
|
+
|
|
9883
|
+
/**
|
|
9884
|
+
* Whether the idle message counter resets when the agent speaks
|
|
9885
|
+
*/
|
|
9886
|
+
idleMessageResetCountOnUserSpeechEnabled: boolean;
|
|
9887
|
+
|
|
9888
|
+
/**
|
|
9889
|
+
* Messages the persona will say when the agent goes silent during a call. null =
|
|
9890
|
+
* "Automatic": language-appropriate defaults are used at call time.
|
|
9891
|
+
*/
|
|
9892
|
+
idleMessages: Array<string> | null;
|
|
9893
|
+
|
|
9894
|
+
/**
|
|
9895
|
+
* Seconds of silence before the persona sends an idle message
|
|
9896
|
+
*/
|
|
9897
|
+
idleTimeoutSeconds: number;
|
|
9898
|
+
|
|
9899
|
+
/**
|
|
9900
|
+
* How clearly the persona expresses their intentions
|
|
9901
|
+
*/
|
|
9902
|
+
intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
|
|
9903
|
+
|
|
9904
|
+
/**
|
|
9905
|
+
* Primary language ISO 639-1 code for the persona
|
|
9906
|
+
*/
|
|
9907
|
+
language:
|
|
9908
|
+
| 'EN'
|
|
9909
|
+
| 'ES'
|
|
9910
|
+
| 'DE'
|
|
9911
|
+
| 'HI'
|
|
9912
|
+
| 'FR'
|
|
9913
|
+
| 'NL'
|
|
9914
|
+
| 'AR'
|
|
9915
|
+
| 'EL'
|
|
9916
|
+
| 'IT'
|
|
9917
|
+
| 'ID'
|
|
9918
|
+
| 'TH'
|
|
9919
|
+
| 'JA'
|
|
9920
|
+
| 'TL'
|
|
9921
|
+
| 'MS'
|
|
9922
|
+
| 'ZH'
|
|
9923
|
+
| 'TR'
|
|
9924
|
+
| 'PT'
|
|
9925
|
+
| 'HE';
|
|
9926
|
+
|
|
9927
|
+
/**
|
|
9928
|
+
* How reliable the persona's memory is
|
|
9929
|
+
*/
|
|
9930
|
+
memoryReliability: 'HIGH' | 'LOW';
|
|
9931
|
+
|
|
9932
|
+
/**
|
|
9933
|
+
* The name the agent will identify as during conversations
|
|
9934
|
+
*/
|
|
9935
|
+
name: string;
|
|
9936
|
+
|
|
9937
|
+
/**
|
|
9938
|
+
* Additional custom properties about the persona
|
|
9939
|
+
*/
|
|
9940
|
+
properties: { [key: string]: unknown };
|
|
9941
|
+
|
|
9942
|
+
/**
|
|
9943
|
+
* Controls how quickly the persona responds to pauses in conversation (QUICK,
|
|
9944
|
+
* NORMAL, RELAXED)
|
|
9945
|
+
*/
|
|
9946
|
+
responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
|
|
9947
|
+
|
|
9948
|
+
/**
|
|
9949
|
+
* Speech clarity of the persona
|
|
9950
|
+
*/
|
|
9951
|
+
speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
|
|
9952
|
+
|
|
9953
|
+
/**
|
|
9954
|
+
* Speech pace of the persona
|
|
9955
|
+
*/
|
|
9956
|
+
speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
|
|
9957
|
+
|
|
9958
|
+
/**
|
|
9959
|
+
* Languages the persona can understand. Multilingual combinations are limited by
|
|
9960
|
+
* multilingual speech recognition support.
|
|
9961
|
+
*/
|
|
9962
|
+
understoodLanguages: Array<
|
|
9963
|
+
| 'EN'
|
|
9964
|
+
| 'ES'
|
|
9965
|
+
| 'DE'
|
|
9966
|
+
| 'HI'
|
|
9967
|
+
| 'FR'
|
|
9968
|
+
| 'NL'
|
|
9969
|
+
| 'AR'
|
|
9970
|
+
| 'EL'
|
|
9971
|
+
| 'IT'
|
|
9972
|
+
| 'ID'
|
|
9973
|
+
| 'TH'
|
|
9974
|
+
| 'JA'
|
|
9975
|
+
| 'TL'
|
|
9976
|
+
| 'MS'
|
|
9977
|
+
| 'ZH'
|
|
9978
|
+
| 'TR'
|
|
9979
|
+
| 'PT'
|
|
9980
|
+
| 'HE'
|
|
9981
|
+
>;
|
|
9982
|
+
|
|
9983
|
+
/**
|
|
9984
|
+
* Last update timestamp
|
|
9985
|
+
*/
|
|
9986
|
+
updatedAt: string;
|
|
9987
|
+
|
|
9988
|
+
/**
|
|
9989
|
+
* Background story and behavioral patterns for the persona
|
|
9990
|
+
*/
|
|
9991
|
+
backstoryPrompt?: string | null;
|
|
9992
|
+
|
|
9993
|
+
/**
|
|
9994
|
+
* Human-readable description of the persona
|
|
9995
|
+
*/
|
|
9996
|
+
description?: string | null;
|
|
9997
|
+
|
|
9998
|
+
/**
|
|
9999
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
10000
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
10001
|
+
* or set null to display the name itself.
|
|
10002
|
+
*/
|
|
10003
|
+
displayName?: string | null;
|
|
10004
|
+
|
|
10005
|
+
/**
|
|
10006
|
+
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
10007
|
+
*/
|
|
10008
|
+
secondaryLanguage?: 'EN' | null;
|
|
10009
|
+
}
|
|
10010
|
+
}
|
|
10011
|
+
|
|
10012
|
+
/**
|
|
10013
|
+
* One path through a scripted flow. The path engine owns which paths exist, so
|
|
10014
|
+
* editing the graph is what creates and removes these.
|
|
10015
|
+
*/
|
|
10016
|
+
export interface HappyPath {
|
|
10017
|
+
id: string;
|
|
10018
|
+
|
|
10019
|
+
/**
|
|
10020
|
+
* Graded on top of the flow's own expectations, for this variant only.
|
|
10021
|
+
*/
|
|
10022
|
+
additionalExpectations: Array<HappyPath.AdditionalExpectation>;
|
|
10023
|
+
|
|
10024
|
+
/**
|
|
10025
|
+
* Creation timestamp in ISO 8601 format
|
|
10026
|
+
*/
|
|
10027
|
+
createdAt: string;
|
|
10028
|
+
|
|
10029
|
+
/**
|
|
10030
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
10031
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
10032
|
+
* project.
|
|
10033
|
+
*/
|
|
10034
|
+
environment: HappyPath.Environment | null;
|
|
10035
|
+
|
|
10036
|
+
isGenerated: boolean;
|
|
10037
|
+
|
|
10038
|
+
/**
|
|
10039
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
10040
|
+
*/
|
|
10041
|
+
personaOverride: HappyPath.PersonaOverride | null;
|
|
10042
|
+
|
|
10043
|
+
precededByCustomerFlowId: string | null;
|
|
10044
|
+
|
|
10045
|
+
precededByCustomerFlowVariantId: string | null;
|
|
10046
|
+
|
|
10047
|
+
/**
|
|
10048
|
+
* The one path through the graph this variant runs, in order. Linear by
|
|
10049
|
+
* construction, so these steps never nest.
|
|
10050
|
+
*/
|
|
10051
|
+
steps: Array<CustomerFlowAPI.FlowStep>;
|
|
10052
|
+
|
|
10053
|
+
title: string;
|
|
10054
|
+
|
|
10055
|
+
type: 'SCRIPTED';
|
|
10056
|
+
|
|
10057
|
+
/**
|
|
10058
|
+
* Last update timestamp in ISO 8601 format
|
|
10059
|
+
*/
|
|
10060
|
+
updatedAt: string;
|
|
10061
|
+
|
|
10062
|
+
systemKey?: string | null;
|
|
10063
|
+
}
|
|
10064
|
+
|
|
10065
|
+
export namespace HappyPath {
|
|
10066
|
+
/**
|
|
10067
|
+
* One thing the agent under test is graded against.
|
|
10068
|
+
*/
|
|
10069
|
+
export interface AdditionalExpectation {
|
|
10070
|
+
id: string;
|
|
10071
|
+
|
|
10072
|
+
/**
|
|
10073
|
+
* What the agent under test is graded against.
|
|
10074
|
+
*/
|
|
10075
|
+
prompt: string;
|
|
10076
|
+
}
|
|
10077
|
+
|
|
10078
|
+
/**
|
|
10079
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
10080
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
10081
|
+
* project.
|
|
10082
|
+
*/
|
|
10083
|
+
export interface Environment {
|
|
10084
|
+
id: string;
|
|
10085
|
+
|
|
10086
|
+
backgroundNoise:
|
|
10087
|
+
| 'NONE'
|
|
10088
|
+
| 'AIRPORT'
|
|
10089
|
+
| 'CHILDREN_PLAYING'
|
|
10090
|
+
| 'CITY'
|
|
10091
|
+
| 'COFFEE_SHOP'
|
|
10092
|
+
| 'DRIVING'
|
|
10093
|
+
| 'OFFICE'
|
|
10094
|
+
| 'THUNDERSTORM';
|
|
10095
|
+
|
|
10096
|
+
backgroundNoiseVolume: number;
|
|
10097
|
+
|
|
10098
|
+
/**
|
|
10099
|
+
* Creation timestamp in ISO 8601 format
|
|
10100
|
+
*/
|
|
10101
|
+
createdAt: string;
|
|
10102
|
+
|
|
10103
|
+
name: string;
|
|
10104
|
+
|
|
10105
|
+
/**
|
|
10106
|
+
* Last update timestamp in ISO 8601 format
|
|
10107
|
+
*/
|
|
10108
|
+
updatedAt: string;
|
|
10109
|
+
|
|
10110
|
+
description?: string | null;
|
|
10111
|
+
}
|
|
10112
|
+
|
|
10113
|
+
/**
|
|
10114
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
10115
|
+
*/
|
|
10116
|
+
export interface PersonaOverride {
|
|
10117
|
+
/**
|
|
10118
|
+
* Unique identifier of the persona
|
|
10119
|
+
*/
|
|
10120
|
+
id: string;
|
|
10121
|
+
|
|
10122
|
+
/**
|
|
10123
|
+
* Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
|
|
10124
|
+
* optional variants
|
|
10125
|
+
*/
|
|
10126
|
+
accent:
|
|
10127
|
+
| 'US'
|
|
10128
|
+
| 'US_X_SOUTH'
|
|
10129
|
+
| 'GB'
|
|
10130
|
+
| 'ES'
|
|
10131
|
+
| 'DE'
|
|
10132
|
+
| 'IN'
|
|
10133
|
+
| 'FR'
|
|
10134
|
+
| 'NL'
|
|
10135
|
+
| 'SA'
|
|
10136
|
+
| 'GR'
|
|
10137
|
+
| 'AU'
|
|
10138
|
+
| 'IT'
|
|
10139
|
+
| 'ID'
|
|
10140
|
+
| 'TH'
|
|
10141
|
+
| 'JP'
|
|
10142
|
+
| 'NZ'
|
|
10143
|
+
| 'PH'
|
|
10144
|
+
| 'SG'
|
|
10145
|
+
| 'MY'
|
|
10146
|
+
| 'HK'
|
|
10147
|
+
| 'TR'
|
|
10148
|
+
| 'PT'
|
|
10149
|
+
| 'IL';
|
|
10150
|
+
|
|
10151
|
+
/**
|
|
10152
|
+
* How old the caller sounds and behaves. Only ages the persona's accent has a
|
|
10153
|
+
* voice for are accepted; defaults to ADULT, which every accent supports.
|
|
10154
|
+
*/
|
|
10155
|
+
age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY';
|
|
10156
|
+
|
|
10157
|
+
/**
|
|
10158
|
+
* Background noise setting
|
|
10159
|
+
*/
|
|
10160
|
+
backgroundNoise:
|
|
10161
|
+
| 'NONE'
|
|
10162
|
+
| 'AIRPORT'
|
|
10163
|
+
| 'CHILDREN_PLAYING'
|
|
10164
|
+
| 'CITY'
|
|
10165
|
+
| 'COFFEE_SHOP'
|
|
10166
|
+
| 'DRIVING'
|
|
10167
|
+
| 'OFFICE'
|
|
10168
|
+
| 'THUNDERSTORM';
|
|
10169
|
+
|
|
10170
|
+
/**
|
|
10171
|
+
* Base emotional state of the persona
|
|
10172
|
+
*/
|
|
10173
|
+
baseEmotion:
|
|
10174
|
+
| 'NEUTRAL'
|
|
10175
|
+
| 'CHEERFUL'
|
|
10176
|
+
| 'CONFUSED'
|
|
10177
|
+
| 'FRUSTRATED'
|
|
10178
|
+
| 'SKEPTICAL'
|
|
10179
|
+
| 'RUSHED'
|
|
10180
|
+
| 'DISTRACTED'
|
|
10181
|
+
| 'ANGRY'
|
|
10182
|
+
| 'ANXIOUS'
|
|
10183
|
+
| 'SAD';
|
|
10184
|
+
|
|
10185
|
+
/**
|
|
10186
|
+
* How the persona confirms information
|
|
10187
|
+
*/
|
|
10188
|
+
confirmationStyle: 'EXPLICIT' | 'VAGUE';
|
|
10189
|
+
|
|
10190
|
+
/**
|
|
10191
|
+
* Creation timestamp
|
|
10192
|
+
*/
|
|
10193
|
+
createdAt: string;
|
|
10194
|
+
|
|
10195
|
+
/**
|
|
10196
|
+
* Gender of the persona
|
|
10197
|
+
*/
|
|
10198
|
+
gender: 'MALE' | 'FEMALE';
|
|
10199
|
+
|
|
10200
|
+
/**
|
|
10201
|
+
* Whether the persona uses filler words like "um" and "uh"
|
|
10202
|
+
*/
|
|
10203
|
+
hasDisfluencies: boolean;
|
|
10204
|
+
|
|
10205
|
+
/**
|
|
10206
|
+
* Maximum number of idle messages the persona will send before giving up
|
|
10207
|
+
*/
|
|
10208
|
+
idleMessageMaxSpokenCount: number;
|
|
10209
|
+
|
|
10210
|
+
/**
|
|
10211
|
+
* Whether the idle message counter resets when the agent speaks
|
|
10212
|
+
*/
|
|
10213
|
+
idleMessageResetCountOnUserSpeechEnabled: boolean;
|
|
10214
|
+
|
|
10215
|
+
/**
|
|
10216
|
+
* Messages the persona will say when the agent goes silent during a call. null =
|
|
10217
|
+
* "Automatic": language-appropriate defaults are used at call time.
|
|
10218
|
+
*/
|
|
10219
|
+
idleMessages: Array<string> | null;
|
|
10220
|
+
|
|
10221
|
+
/**
|
|
10222
|
+
* Seconds of silence before the persona sends an idle message
|
|
10223
|
+
*/
|
|
10224
|
+
idleTimeoutSeconds: number;
|
|
10225
|
+
|
|
10226
|
+
/**
|
|
10227
|
+
* How clearly the persona expresses their intentions
|
|
10228
|
+
*/
|
|
10229
|
+
intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
|
|
10230
|
+
|
|
10231
|
+
/**
|
|
10232
|
+
* Primary language ISO 639-1 code for the persona
|
|
10233
|
+
*/
|
|
10234
|
+
language:
|
|
10235
|
+
| 'EN'
|
|
10236
|
+
| 'ES'
|
|
10237
|
+
| 'DE'
|
|
10238
|
+
| 'HI'
|
|
10239
|
+
| 'FR'
|
|
10240
|
+
| 'NL'
|
|
10241
|
+
| 'AR'
|
|
10242
|
+
| 'EL'
|
|
10243
|
+
| 'IT'
|
|
10244
|
+
| 'ID'
|
|
10245
|
+
| 'TH'
|
|
10246
|
+
| 'JA'
|
|
10247
|
+
| 'TL'
|
|
10248
|
+
| 'MS'
|
|
10249
|
+
| 'ZH'
|
|
10250
|
+
| 'TR'
|
|
10251
|
+
| 'PT'
|
|
10252
|
+
| 'HE';
|
|
10253
|
+
|
|
10254
|
+
/**
|
|
10255
|
+
* How reliable the persona's memory is
|
|
10256
|
+
*/
|
|
10257
|
+
memoryReliability: 'HIGH' | 'LOW';
|
|
10258
|
+
|
|
10259
|
+
/**
|
|
10260
|
+
* The name the agent will identify as during conversations
|
|
10261
|
+
*/
|
|
10262
|
+
name: string;
|
|
10263
|
+
|
|
10264
|
+
/**
|
|
10265
|
+
* Additional custom properties about the persona
|
|
10266
|
+
*/
|
|
10267
|
+
properties: { [key: string]: unknown };
|
|
10268
|
+
|
|
10269
|
+
/**
|
|
10270
|
+
* Controls how quickly the persona responds to pauses in conversation (QUICK,
|
|
10271
|
+
* NORMAL, RELAXED)
|
|
10272
|
+
*/
|
|
10273
|
+
responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
|
|
10274
|
+
|
|
10275
|
+
/**
|
|
10276
|
+
* Speech clarity of the persona
|
|
10277
|
+
*/
|
|
10278
|
+
speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
|
|
10279
|
+
|
|
10280
|
+
/**
|
|
10281
|
+
* Speech pace of the persona
|
|
10282
|
+
*/
|
|
10283
|
+
speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
|
|
10284
|
+
|
|
10285
|
+
/**
|
|
10286
|
+
* Languages the persona can understand. Multilingual combinations are limited by
|
|
10287
|
+
* multilingual speech recognition support.
|
|
10288
|
+
*/
|
|
10289
|
+
understoodLanguages: Array<
|
|
10290
|
+
| 'EN'
|
|
10291
|
+
| 'ES'
|
|
10292
|
+
| 'DE'
|
|
10293
|
+
| 'HI'
|
|
10294
|
+
| 'FR'
|
|
10295
|
+
| 'NL'
|
|
10296
|
+
| 'AR'
|
|
10297
|
+
| 'EL'
|
|
10298
|
+
| 'IT'
|
|
10299
|
+
| 'ID'
|
|
10300
|
+
| 'TH'
|
|
10301
|
+
| 'JA'
|
|
10302
|
+
| 'TL'
|
|
10303
|
+
| 'MS'
|
|
10304
|
+
| 'ZH'
|
|
10305
|
+
| 'TR'
|
|
10306
|
+
| 'PT'
|
|
10307
|
+
| 'HE'
|
|
10308
|
+
>;
|
|
10309
|
+
|
|
10310
|
+
/**
|
|
10311
|
+
* Last update timestamp
|
|
10312
|
+
*/
|
|
10313
|
+
updatedAt: string;
|
|
10314
|
+
|
|
10315
|
+
/**
|
|
10316
|
+
* Background story and behavioral patterns for the persona
|
|
10317
|
+
*/
|
|
10318
|
+
backstoryPrompt?: string | null;
|
|
10319
|
+
|
|
10320
|
+
/**
|
|
10321
|
+
* Human-readable description of the persona
|
|
10322
|
+
*/
|
|
10323
|
+
description?: string | null;
|
|
10324
|
+
|
|
10325
|
+
/**
|
|
10326
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
10327
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
10328
|
+
* or set null to display the name itself.
|
|
10329
|
+
*/
|
|
10330
|
+
displayName?: string | null;
|
|
10331
|
+
|
|
10332
|
+
/**
|
|
10333
|
+
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
10334
|
+
*/
|
|
10335
|
+
secondaryLanguage?: 'EN' | null;
|
|
10336
|
+
}
|
|
10337
|
+
}
|
|
10338
|
+
|
|
10339
|
+
/**
|
|
10340
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
10341
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
10342
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
10343
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
10344
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
10345
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
10346
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
10347
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
10348
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
10349
|
+
* AGENT_TURN step can carry its own.
|
|
10350
|
+
*/
|
|
10351
|
+
export interface OffScriptPolicy {
|
|
10352
|
+
maxAttempts: number;
|
|
10353
|
+
|
|
10354
|
+
reaction: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY';
|
|
10355
|
+
|
|
10356
|
+
then: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE';
|
|
10357
|
+
|
|
10358
|
+
sayLine?: string | null;
|
|
10359
|
+
|
|
10360
|
+
waitSeconds?: number | null;
|
|
10361
|
+
}
|
|
10362
|
+
}
|
|
10363
|
+
|
|
10364
|
+
/**
|
|
10365
|
+
* A flow whose conversation is not written out: each variant gives the simulated
|
|
10366
|
+
* customer a brief and lets it improvise.
|
|
10367
|
+
*/
|
|
10368
|
+
export interface ImprovCustomerFlow {
|
|
10369
|
+
id: string;
|
|
10370
|
+
|
|
10371
|
+
agentExpectations: Array<ImprovCustomerFlow.AgentExpectation>;
|
|
10372
|
+
|
|
10373
|
+
/**
|
|
10374
|
+
* The agents this flow is run against.
|
|
10375
|
+
*/
|
|
10376
|
+
agents: Array<ImprovCustomerFlow.Agent>;
|
|
10377
|
+
|
|
10378
|
+
/**
|
|
10379
|
+
* Creation timestamp in ISO 8601 format
|
|
10380
|
+
*/
|
|
10381
|
+
createdAt: string;
|
|
10382
|
+
|
|
10383
|
+
/**
|
|
10384
|
+
* Every other way of running this flow.
|
|
10385
|
+
*/
|
|
10386
|
+
edgeCases: Array<ImprovCustomerFlow.EdgeCase>;
|
|
10387
|
+
|
|
10388
|
+
/**
|
|
10389
|
+
* One brief to run an improv flow with.
|
|
10390
|
+
*/
|
|
10391
|
+
happyPath: ImprovCustomerFlow.HappyPath | null;
|
|
10392
|
+
|
|
10393
|
+
source: 'SYSTEM' | 'CUSTOM';
|
|
10394
|
+
|
|
10395
|
+
title: string;
|
|
10396
|
+
|
|
10397
|
+
type: 'IMPROV';
|
|
10398
|
+
|
|
10399
|
+
/**
|
|
10400
|
+
* Last update timestamp in ISO 8601 format
|
|
10401
|
+
*/
|
|
10402
|
+
updatedAt: string;
|
|
10403
|
+
|
|
10404
|
+
description?: string | null;
|
|
10405
|
+
}
|
|
10406
|
+
|
|
10407
|
+
export namespace ImprovCustomerFlow {
|
|
10408
|
+
/**
|
|
10409
|
+
* One thing the agent under test is graded against.
|
|
10410
|
+
*/
|
|
10411
|
+
export interface AgentExpectation {
|
|
10412
|
+
id: string;
|
|
10413
|
+
|
|
10414
|
+
/**
|
|
10415
|
+
* What the agent under test is graded against.
|
|
10416
|
+
*/
|
|
10417
|
+
prompt: string;
|
|
10418
|
+
}
|
|
10419
|
+
|
|
10420
|
+
export interface Agent {
|
|
10421
|
+
/**
|
|
10422
|
+
* Unique identifier of the agent
|
|
10423
|
+
*/
|
|
10424
|
+
id: string;
|
|
10425
|
+
|
|
10426
|
+
/**
|
|
10427
|
+
* Creation timestamp in ISO 8601 format
|
|
10428
|
+
*/
|
|
10429
|
+
createdAt: string;
|
|
10430
|
+
|
|
10431
|
+
/**
|
|
10432
|
+
* Custom identifier for the agent
|
|
10433
|
+
*/
|
|
10434
|
+
customId: string | null;
|
|
10435
|
+
|
|
10436
|
+
/**
|
|
10437
|
+
* Description of the agent
|
|
10438
|
+
*/
|
|
10439
|
+
description: string | null;
|
|
10440
|
+
|
|
10441
|
+
/**
|
|
10442
|
+
* Name of the agent
|
|
10443
|
+
*/
|
|
10444
|
+
name: string;
|
|
10445
|
+
|
|
10446
|
+
/**
|
|
10447
|
+
* Last update timestamp in ISO 8601 format
|
|
10448
|
+
*/
|
|
10449
|
+
updatedAt: string;
|
|
10450
|
+
}
|
|
10451
|
+
|
|
10452
|
+
/**
|
|
10453
|
+
* One brief to run an improv flow with.
|
|
10454
|
+
*/
|
|
10455
|
+
export interface EdgeCase {
|
|
10456
|
+
id: string;
|
|
10457
|
+
|
|
10458
|
+
/**
|
|
10459
|
+
* Graded on top of the flow's own expectations, for this variant only.
|
|
10460
|
+
*/
|
|
10461
|
+
additionalExpectations: Array<EdgeCase.AdditionalExpectation>;
|
|
10462
|
+
|
|
10463
|
+
/**
|
|
10464
|
+
* Creation timestamp in ISO 8601 format
|
|
10465
|
+
*/
|
|
10466
|
+
createdAt: string;
|
|
10467
|
+
|
|
10468
|
+
/**
|
|
10469
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
10470
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
10471
|
+
* project.
|
|
10472
|
+
*/
|
|
10473
|
+
environment: EdgeCase.Environment | null;
|
|
10474
|
+
|
|
10475
|
+
isGenerated: boolean;
|
|
10476
|
+
|
|
10477
|
+
/**
|
|
10478
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
10479
|
+
*/
|
|
10480
|
+
personaOverride: EdgeCase.PersonaOverride | null;
|
|
10481
|
+
|
|
10482
|
+
precededByCustomerFlowId: string | null;
|
|
10483
|
+
|
|
10484
|
+
precededByCustomerFlowVariantId: string | null;
|
|
10485
|
+
|
|
10486
|
+
title: string;
|
|
10487
|
+
|
|
10488
|
+
type: 'IMPROV';
|
|
10489
|
+
|
|
10490
|
+
/**
|
|
10491
|
+
* Last update timestamp in ISO 8601 format
|
|
10492
|
+
*/
|
|
10493
|
+
updatedAt: string;
|
|
10494
|
+
|
|
10495
|
+
/**
|
|
10496
|
+
* The brief the simulated customer improvises from.
|
|
10497
|
+
*/
|
|
10498
|
+
prompt?: string | null;
|
|
10499
|
+
|
|
10500
|
+
systemKey?: string | null;
|
|
10501
|
+
}
|
|
10502
|
+
|
|
10503
|
+
export namespace EdgeCase {
|
|
10504
|
+
/**
|
|
10505
|
+
* One thing the agent under test is graded against.
|
|
10506
|
+
*/
|
|
10507
|
+
export interface AdditionalExpectation {
|
|
10508
|
+
id: string;
|
|
10509
|
+
|
|
10510
|
+
/**
|
|
10511
|
+
* What the agent under test is graded against.
|
|
10512
|
+
*/
|
|
10513
|
+
prompt: string;
|
|
10514
|
+
}
|
|
10515
|
+
|
|
10516
|
+
/**
|
|
10517
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
10518
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
10519
|
+
* project.
|
|
10520
|
+
*/
|
|
10521
|
+
export interface Environment {
|
|
10522
|
+
id: string;
|
|
10523
|
+
|
|
10524
|
+
backgroundNoise:
|
|
10525
|
+
| 'NONE'
|
|
10526
|
+
| 'AIRPORT'
|
|
10527
|
+
| 'CHILDREN_PLAYING'
|
|
10528
|
+
| 'CITY'
|
|
10529
|
+
| 'COFFEE_SHOP'
|
|
10530
|
+
| 'DRIVING'
|
|
10531
|
+
| 'OFFICE'
|
|
10532
|
+
| 'THUNDERSTORM';
|
|
10533
|
+
|
|
10534
|
+
backgroundNoiseVolume: number;
|
|
10535
|
+
|
|
10536
|
+
/**
|
|
10537
|
+
* Creation timestamp in ISO 8601 format
|
|
10538
|
+
*/
|
|
10539
|
+
createdAt: string;
|
|
10540
|
+
|
|
10541
|
+
name: string;
|
|
10542
|
+
|
|
10543
|
+
/**
|
|
10544
|
+
* Last update timestamp in ISO 8601 format
|
|
10545
|
+
*/
|
|
10546
|
+
updatedAt: string;
|
|
10547
|
+
|
|
10548
|
+
description?: string | null;
|
|
10549
|
+
}
|
|
10550
|
+
|
|
10551
|
+
/**
|
|
10552
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
10553
|
+
*/
|
|
10554
|
+
export interface PersonaOverride {
|
|
10555
|
+
/**
|
|
10556
|
+
* Unique identifier of the persona
|
|
10557
|
+
*/
|
|
10558
|
+
id: string;
|
|
10559
|
+
|
|
10560
|
+
/**
|
|
10561
|
+
* Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
|
|
10562
|
+
* optional variants
|
|
10563
|
+
*/
|
|
10564
|
+
accent:
|
|
10565
|
+
| 'US'
|
|
10566
|
+
| 'US_X_SOUTH'
|
|
10567
|
+
| 'GB'
|
|
10568
|
+
| 'ES'
|
|
10569
|
+
| 'DE'
|
|
10570
|
+
| 'IN'
|
|
10571
|
+
| 'FR'
|
|
10572
|
+
| 'NL'
|
|
10573
|
+
| 'SA'
|
|
10574
|
+
| 'GR'
|
|
10575
|
+
| 'AU'
|
|
10576
|
+
| 'IT'
|
|
10577
|
+
| 'ID'
|
|
10578
|
+
| 'TH'
|
|
10579
|
+
| 'JP'
|
|
10580
|
+
| 'NZ'
|
|
10581
|
+
| 'PH'
|
|
10582
|
+
| 'SG'
|
|
10583
|
+
| 'MY'
|
|
10584
|
+
| 'HK'
|
|
10585
|
+
| 'TR'
|
|
10586
|
+
| 'PT'
|
|
10587
|
+
| 'IL';
|
|
10588
|
+
|
|
10589
|
+
/**
|
|
10590
|
+
* How old the caller sounds and behaves. Only ages the persona's accent has a
|
|
10591
|
+
* voice for are accepted; defaults to ADULT, which every accent supports.
|
|
10592
|
+
*/
|
|
10593
|
+
age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY';
|
|
10594
|
+
|
|
10595
|
+
/**
|
|
10596
|
+
* Background noise setting
|
|
10597
|
+
*/
|
|
10598
|
+
backgroundNoise:
|
|
10599
|
+
| 'NONE'
|
|
10600
|
+
| 'AIRPORT'
|
|
10601
|
+
| 'CHILDREN_PLAYING'
|
|
10602
|
+
| 'CITY'
|
|
10603
|
+
| 'COFFEE_SHOP'
|
|
10604
|
+
| 'DRIVING'
|
|
10605
|
+
| 'OFFICE'
|
|
10606
|
+
| 'THUNDERSTORM';
|
|
10607
|
+
|
|
10608
|
+
/**
|
|
10609
|
+
* Base emotional state of the persona
|
|
10610
|
+
*/
|
|
10611
|
+
baseEmotion:
|
|
10612
|
+
| 'NEUTRAL'
|
|
10613
|
+
| 'CHEERFUL'
|
|
10614
|
+
| 'CONFUSED'
|
|
10615
|
+
| 'FRUSTRATED'
|
|
10616
|
+
| 'SKEPTICAL'
|
|
10617
|
+
| 'RUSHED'
|
|
10618
|
+
| 'DISTRACTED'
|
|
10619
|
+
| 'ANGRY'
|
|
10620
|
+
| 'ANXIOUS'
|
|
10621
|
+
| 'SAD';
|
|
10622
|
+
|
|
10623
|
+
/**
|
|
10624
|
+
* How the persona confirms information
|
|
10625
|
+
*/
|
|
10626
|
+
confirmationStyle: 'EXPLICIT' | 'VAGUE';
|
|
10627
|
+
|
|
10628
|
+
/**
|
|
10629
|
+
* Creation timestamp
|
|
10630
|
+
*/
|
|
10631
|
+
createdAt: string;
|
|
10632
|
+
|
|
10633
|
+
/**
|
|
10634
|
+
* Gender of the persona
|
|
10635
|
+
*/
|
|
10636
|
+
gender: 'MALE' | 'FEMALE';
|
|
10637
|
+
|
|
10638
|
+
/**
|
|
10639
|
+
* Whether the persona uses filler words like "um" and "uh"
|
|
10640
|
+
*/
|
|
10641
|
+
hasDisfluencies: boolean;
|
|
10642
|
+
|
|
10643
|
+
/**
|
|
10644
|
+
* Maximum number of idle messages the persona will send before giving up
|
|
10645
|
+
*/
|
|
10646
|
+
idleMessageMaxSpokenCount: number;
|
|
10647
|
+
|
|
10648
|
+
/**
|
|
10649
|
+
* Whether the idle message counter resets when the agent speaks
|
|
10650
|
+
*/
|
|
10651
|
+
idleMessageResetCountOnUserSpeechEnabled: boolean;
|
|
10652
|
+
|
|
10653
|
+
/**
|
|
10654
|
+
* Messages the persona will say when the agent goes silent during a call. null =
|
|
10655
|
+
* "Automatic": language-appropriate defaults are used at call time.
|
|
10656
|
+
*/
|
|
10657
|
+
idleMessages: Array<string> | null;
|
|
10658
|
+
|
|
10659
|
+
/**
|
|
10660
|
+
* Seconds of silence before the persona sends an idle message
|
|
10661
|
+
*/
|
|
10662
|
+
idleTimeoutSeconds: number;
|
|
10663
|
+
|
|
10664
|
+
/**
|
|
10665
|
+
* How clearly the persona expresses their intentions
|
|
10666
|
+
*/
|
|
10667
|
+
intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
|
|
10668
|
+
|
|
10669
|
+
/**
|
|
10670
|
+
* Primary language ISO 639-1 code for the persona
|
|
10671
|
+
*/
|
|
10672
|
+
language:
|
|
10673
|
+
| 'EN'
|
|
10674
|
+
| 'ES'
|
|
10675
|
+
| 'DE'
|
|
10676
|
+
| 'HI'
|
|
10677
|
+
| 'FR'
|
|
10678
|
+
| 'NL'
|
|
10679
|
+
| 'AR'
|
|
10680
|
+
| 'EL'
|
|
10681
|
+
| 'IT'
|
|
10682
|
+
| 'ID'
|
|
10683
|
+
| 'TH'
|
|
10684
|
+
| 'JA'
|
|
10685
|
+
| 'TL'
|
|
10686
|
+
| 'MS'
|
|
10687
|
+
| 'ZH'
|
|
10688
|
+
| 'TR'
|
|
10689
|
+
| 'PT'
|
|
10690
|
+
| 'HE';
|
|
10691
|
+
|
|
10692
|
+
/**
|
|
10693
|
+
* How reliable the persona's memory is
|
|
10694
|
+
*/
|
|
10695
|
+
memoryReliability: 'HIGH' | 'LOW';
|
|
10696
|
+
|
|
10697
|
+
/**
|
|
10698
|
+
* The name the agent will identify as during conversations
|
|
10699
|
+
*/
|
|
10700
|
+
name: string;
|
|
10701
|
+
|
|
10702
|
+
/**
|
|
10703
|
+
* Additional custom properties about the persona
|
|
10704
|
+
*/
|
|
10705
|
+
properties: { [key: string]: unknown };
|
|
10706
|
+
|
|
10707
|
+
/**
|
|
10708
|
+
* Controls how quickly the persona responds to pauses in conversation (QUICK,
|
|
10709
|
+
* NORMAL, RELAXED)
|
|
10710
|
+
*/
|
|
10711
|
+
responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
|
|
10712
|
+
|
|
10713
|
+
/**
|
|
10714
|
+
* Speech clarity of the persona
|
|
10715
|
+
*/
|
|
10716
|
+
speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
|
|
10717
|
+
|
|
10718
|
+
/**
|
|
10719
|
+
* Speech pace of the persona
|
|
10720
|
+
*/
|
|
10721
|
+
speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
|
|
10722
|
+
|
|
10723
|
+
/**
|
|
10724
|
+
* Languages the persona can understand. Multilingual combinations are limited by
|
|
10725
|
+
* multilingual speech recognition support.
|
|
10726
|
+
*/
|
|
10727
|
+
understoodLanguages: Array<
|
|
10728
|
+
| 'EN'
|
|
10729
|
+
| 'ES'
|
|
10730
|
+
| 'DE'
|
|
10731
|
+
| 'HI'
|
|
10732
|
+
| 'FR'
|
|
10733
|
+
| 'NL'
|
|
10734
|
+
| 'AR'
|
|
10735
|
+
| 'EL'
|
|
10736
|
+
| 'IT'
|
|
10737
|
+
| 'ID'
|
|
10738
|
+
| 'TH'
|
|
10739
|
+
| 'JA'
|
|
10740
|
+
| 'TL'
|
|
10741
|
+
| 'MS'
|
|
10742
|
+
| 'ZH'
|
|
10743
|
+
| 'TR'
|
|
10744
|
+
| 'PT'
|
|
10745
|
+
| 'HE'
|
|
10746
|
+
>;
|
|
10747
|
+
|
|
10748
|
+
/**
|
|
10749
|
+
* Last update timestamp
|
|
10750
|
+
*/
|
|
10751
|
+
updatedAt: string;
|
|
10752
|
+
|
|
10753
|
+
/**
|
|
10754
|
+
* Background story and behavioral patterns for the persona
|
|
10755
|
+
*/
|
|
10756
|
+
backstoryPrompt?: string | null;
|
|
10757
|
+
|
|
10758
|
+
/**
|
|
10759
|
+
* Human-readable description of the persona
|
|
10760
|
+
*/
|
|
10761
|
+
description?: string | null;
|
|
10762
|
+
|
|
10763
|
+
/**
|
|
10764
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
10765
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
10766
|
+
* or set null to display the name itself.
|
|
10767
|
+
*/
|
|
10768
|
+
displayName?: string | null;
|
|
10769
|
+
|
|
10770
|
+
/**
|
|
10771
|
+
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
10772
|
+
*/
|
|
10773
|
+
secondaryLanguage?: 'EN' | null;
|
|
10774
|
+
}
|
|
10775
|
+
}
|
|
10776
|
+
|
|
10777
|
+
/**
|
|
10778
|
+
* One brief to run an improv flow with.
|
|
10779
|
+
*/
|
|
10780
|
+
export interface HappyPath {
|
|
10781
|
+
id: string;
|
|
10782
|
+
|
|
10783
|
+
/**
|
|
10784
|
+
* Graded on top of the flow's own expectations, for this variant only.
|
|
10785
|
+
*/
|
|
10786
|
+
additionalExpectations: Array<HappyPath.AdditionalExpectation>;
|
|
10787
|
+
|
|
10788
|
+
/**
|
|
10789
|
+
* Creation timestamp in ISO 8601 format
|
|
10790
|
+
*/
|
|
10791
|
+
createdAt: string;
|
|
10792
|
+
|
|
10793
|
+
/**
|
|
10794
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
10795
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
10796
|
+
* project.
|
|
10797
|
+
*/
|
|
10798
|
+
environment: HappyPath.Environment | null;
|
|
10799
|
+
|
|
10800
|
+
isGenerated: boolean;
|
|
10801
|
+
|
|
10802
|
+
/**
|
|
10803
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
10804
|
+
*/
|
|
10805
|
+
personaOverride: HappyPath.PersonaOverride | null;
|
|
10806
|
+
|
|
10807
|
+
precededByCustomerFlowId: string | null;
|
|
10808
|
+
|
|
10809
|
+
precededByCustomerFlowVariantId: string | null;
|
|
10810
|
+
|
|
10811
|
+
title: string;
|
|
10812
|
+
|
|
10813
|
+
type: 'IMPROV';
|
|
10814
|
+
|
|
10815
|
+
/**
|
|
10816
|
+
* Last update timestamp in ISO 8601 format
|
|
10817
|
+
*/
|
|
10818
|
+
updatedAt: string;
|
|
10819
|
+
|
|
10820
|
+
/**
|
|
10821
|
+
* The brief the simulated customer improvises from.
|
|
10822
|
+
*/
|
|
10823
|
+
prompt?: string | null;
|
|
10824
|
+
|
|
10825
|
+
systemKey?: string | null;
|
|
10826
|
+
}
|
|
10827
|
+
|
|
10828
|
+
export namespace HappyPath {
|
|
10829
|
+
/**
|
|
10830
|
+
* One thing the agent under test is graded against.
|
|
10831
|
+
*/
|
|
10832
|
+
export interface AdditionalExpectation {
|
|
10833
|
+
id: string;
|
|
10834
|
+
|
|
10835
|
+
/**
|
|
10836
|
+
* What the agent under test is graded against.
|
|
10837
|
+
*/
|
|
10838
|
+
prompt: string;
|
|
10839
|
+
}
|
|
10840
|
+
|
|
10841
|
+
/**
|
|
10842
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
10843
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
10844
|
+
* project.
|
|
10845
|
+
*/
|
|
10846
|
+
export interface Environment {
|
|
10847
|
+
id: string;
|
|
10848
|
+
|
|
10849
|
+
backgroundNoise:
|
|
10850
|
+
| 'NONE'
|
|
10851
|
+
| 'AIRPORT'
|
|
10852
|
+
| 'CHILDREN_PLAYING'
|
|
10853
|
+
| 'CITY'
|
|
10854
|
+
| 'COFFEE_SHOP'
|
|
10855
|
+
| 'DRIVING'
|
|
10856
|
+
| 'OFFICE'
|
|
10857
|
+
| 'THUNDERSTORM';
|
|
10858
|
+
|
|
10859
|
+
backgroundNoiseVolume: number;
|
|
10860
|
+
|
|
10861
|
+
/**
|
|
10862
|
+
* Creation timestamp in ISO 8601 format
|
|
10863
|
+
*/
|
|
10864
|
+
createdAt: string;
|
|
10865
|
+
|
|
10866
|
+
name: string;
|
|
10867
|
+
|
|
10868
|
+
/**
|
|
10869
|
+
* Last update timestamp in ISO 8601 format
|
|
10870
|
+
*/
|
|
10871
|
+
updatedAt: string;
|
|
10872
|
+
|
|
10873
|
+
description?: string | null;
|
|
10874
|
+
}
|
|
10875
|
+
|
|
10876
|
+
/**
|
|
10877
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
10878
|
+
*/
|
|
10879
|
+
export interface PersonaOverride {
|
|
10880
|
+
/**
|
|
10881
|
+
* Unique identifier of the persona
|
|
10882
|
+
*/
|
|
10883
|
+
id: string;
|
|
10884
|
+
|
|
10885
|
+
/**
|
|
10886
|
+
* Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
|
|
10887
|
+
* optional variants
|
|
10888
|
+
*/
|
|
10889
|
+
accent:
|
|
10890
|
+
| 'US'
|
|
10891
|
+
| 'US_X_SOUTH'
|
|
10892
|
+
| 'GB'
|
|
10893
|
+
| 'ES'
|
|
10894
|
+
| 'DE'
|
|
10895
|
+
| 'IN'
|
|
10896
|
+
| 'FR'
|
|
10897
|
+
| 'NL'
|
|
10898
|
+
| 'SA'
|
|
10899
|
+
| 'GR'
|
|
10900
|
+
| 'AU'
|
|
10901
|
+
| 'IT'
|
|
10902
|
+
| 'ID'
|
|
10903
|
+
| 'TH'
|
|
10904
|
+
| 'JP'
|
|
10905
|
+
| 'NZ'
|
|
10906
|
+
| 'PH'
|
|
10907
|
+
| 'SG'
|
|
10908
|
+
| 'MY'
|
|
10909
|
+
| 'HK'
|
|
10910
|
+
| 'TR'
|
|
10911
|
+
| 'PT'
|
|
10912
|
+
| 'IL';
|
|
10913
|
+
|
|
10914
|
+
/**
|
|
10915
|
+
* How old the caller sounds and behaves. Only ages the persona's accent has a
|
|
10916
|
+
* voice for are accepted; defaults to ADULT, which every accent supports.
|
|
10917
|
+
*/
|
|
10918
|
+
age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY';
|
|
10919
|
+
|
|
10920
|
+
/**
|
|
10921
|
+
* Background noise setting
|
|
10922
|
+
*/
|
|
10923
|
+
backgroundNoise:
|
|
10924
|
+
| 'NONE'
|
|
10925
|
+
| 'AIRPORT'
|
|
10926
|
+
| 'CHILDREN_PLAYING'
|
|
10927
|
+
| 'CITY'
|
|
10928
|
+
| 'COFFEE_SHOP'
|
|
10929
|
+
| 'DRIVING'
|
|
10930
|
+
| 'OFFICE'
|
|
10931
|
+
| 'THUNDERSTORM';
|
|
10932
|
+
|
|
10933
|
+
/**
|
|
10934
|
+
* Base emotional state of the persona
|
|
10935
|
+
*/
|
|
10936
|
+
baseEmotion:
|
|
10937
|
+
| 'NEUTRAL'
|
|
10938
|
+
| 'CHEERFUL'
|
|
10939
|
+
| 'CONFUSED'
|
|
10940
|
+
| 'FRUSTRATED'
|
|
10941
|
+
| 'SKEPTICAL'
|
|
10942
|
+
| 'RUSHED'
|
|
10943
|
+
| 'DISTRACTED'
|
|
10944
|
+
| 'ANGRY'
|
|
10945
|
+
| 'ANXIOUS'
|
|
10946
|
+
| 'SAD';
|
|
10947
|
+
|
|
10948
|
+
/**
|
|
10949
|
+
* How the persona confirms information
|
|
10950
|
+
*/
|
|
10951
|
+
confirmationStyle: 'EXPLICIT' | 'VAGUE';
|
|
10952
|
+
|
|
10953
|
+
/**
|
|
10954
|
+
* Creation timestamp
|
|
10955
|
+
*/
|
|
10956
|
+
createdAt: string;
|
|
10957
|
+
|
|
10958
|
+
/**
|
|
10959
|
+
* Gender of the persona
|
|
10960
|
+
*/
|
|
10961
|
+
gender: 'MALE' | 'FEMALE';
|
|
10962
|
+
|
|
10963
|
+
/**
|
|
10964
|
+
* Whether the persona uses filler words like "um" and "uh"
|
|
10965
|
+
*/
|
|
10966
|
+
hasDisfluencies: boolean;
|
|
10967
|
+
|
|
10968
|
+
/**
|
|
10969
|
+
* Maximum number of idle messages the persona will send before giving up
|
|
10970
|
+
*/
|
|
10971
|
+
idleMessageMaxSpokenCount: number;
|
|
10972
|
+
|
|
10973
|
+
/**
|
|
10974
|
+
* Whether the idle message counter resets when the agent speaks
|
|
10975
|
+
*/
|
|
10976
|
+
idleMessageResetCountOnUserSpeechEnabled: boolean;
|
|
10977
|
+
|
|
10978
|
+
/**
|
|
10979
|
+
* Messages the persona will say when the agent goes silent during a call. null =
|
|
10980
|
+
* "Automatic": language-appropriate defaults are used at call time.
|
|
10981
|
+
*/
|
|
10982
|
+
idleMessages: Array<string> | null;
|
|
10983
|
+
|
|
10984
|
+
/**
|
|
10985
|
+
* Seconds of silence before the persona sends an idle message
|
|
10986
|
+
*/
|
|
10987
|
+
idleTimeoutSeconds: number;
|
|
10988
|
+
|
|
10989
|
+
/**
|
|
10990
|
+
* How clearly the persona expresses their intentions
|
|
10991
|
+
*/
|
|
10992
|
+
intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
|
|
10993
|
+
|
|
10994
|
+
/**
|
|
10995
|
+
* Primary language ISO 639-1 code for the persona
|
|
10996
|
+
*/
|
|
10997
|
+
language:
|
|
10998
|
+
| 'EN'
|
|
10999
|
+
| 'ES'
|
|
11000
|
+
| 'DE'
|
|
11001
|
+
| 'HI'
|
|
11002
|
+
| 'FR'
|
|
11003
|
+
| 'NL'
|
|
11004
|
+
| 'AR'
|
|
11005
|
+
| 'EL'
|
|
11006
|
+
| 'IT'
|
|
11007
|
+
| 'ID'
|
|
11008
|
+
| 'TH'
|
|
11009
|
+
| 'JA'
|
|
11010
|
+
| 'TL'
|
|
11011
|
+
| 'MS'
|
|
11012
|
+
| 'ZH'
|
|
11013
|
+
| 'TR'
|
|
11014
|
+
| 'PT'
|
|
11015
|
+
| 'HE';
|
|
11016
|
+
|
|
11017
|
+
/**
|
|
11018
|
+
* How reliable the persona's memory is
|
|
11019
|
+
*/
|
|
11020
|
+
memoryReliability: 'HIGH' | 'LOW';
|
|
11021
|
+
|
|
11022
|
+
/**
|
|
11023
|
+
* The name the agent will identify as during conversations
|
|
11024
|
+
*/
|
|
11025
|
+
name: string;
|
|
11026
|
+
|
|
11027
|
+
/**
|
|
11028
|
+
* Additional custom properties about the persona
|
|
11029
|
+
*/
|
|
11030
|
+
properties: { [key: string]: unknown };
|
|
11031
|
+
|
|
11032
|
+
/**
|
|
11033
|
+
* Controls how quickly the persona responds to pauses in conversation (QUICK,
|
|
11034
|
+
* NORMAL, RELAXED)
|
|
11035
|
+
*/
|
|
11036
|
+
responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
|
|
11037
|
+
|
|
11038
|
+
/**
|
|
11039
|
+
* Speech clarity of the persona
|
|
11040
|
+
*/
|
|
11041
|
+
speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
|
|
11042
|
+
|
|
11043
|
+
/**
|
|
11044
|
+
* Speech pace of the persona
|
|
11045
|
+
*/
|
|
11046
|
+
speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
|
|
11047
|
+
|
|
11048
|
+
/**
|
|
11049
|
+
* Languages the persona can understand. Multilingual combinations are limited by
|
|
11050
|
+
* multilingual speech recognition support.
|
|
11051
|
+
*/
|
|
11052
|
+
understoodLanguages: Array<
|
|
11053
|
+
| 'EN'
|
|
11054
|
+
| 'ES'
|
|
11055
|
+
| 'DE'
|
|
11056
|
+
| 'HI'
|
|
11057
|
+
| 'FR'
|
|
11058
|
+
| 'NL'
|
|
11059
|
+
| 'AR'
|
|
11060
|
+
| 'EL'
|
|
11061
|
+
| 'IT'
|
|
11062
|
+
| 'ID'
|
|
11063
|
+
| 'TH'
|
|
11064
|
+
| 'JA'
|
|
11065
|
+
| 'TL'
|
|
11066
|
+
| 'MS'
|
|
11067
|
+
| 'ZH'
|
|
11068
|
+
| 'TR'
|
|
11069
|
+
| 'PT'
|
|
11070
|
+
| 'HE'
|
|
11071
|
+
>;
|
|
11072
|
+
|
|
11073
|
+
/**
|
|
11074
|
+
* Last update timestamp
|
|
11075
|
+
*/
|
|
11076
|
+
updatedAt: string;
|
|
11077
|
+
|
|
11078
|
+
/**
|
|
11079
|
+
* Background story and behavioral patterns for the persona
|
|
11080
|
+
*/
|
|
11081
|
+
backstoryPrompt?: string | null;
|
|
11082
|
+
|
|
11083
|
+
/**
|
|
11084
|
+
* Human-readable description of the persona
|
|
11085
|
+
*/
|
|
11086
|
+
description?: string | null;
|
|
11087
|
+
|
|
11088
|
+
/**
|
|
11089
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
11090
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
11091
|
+
* or set null to display the name itself.
|
|
11092
|
+
*/
|
|
11093
|
+
displayName?: string | null;
|
|
11094
|
+
|
|
11095
|
+
/**
|
|
11096
|
+
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
11097
|
+
*/
|
|
11098
|
+
secondaryLanguage?: 'EN' | null;
|
|
11099
|
+
}
|
|
11100
|
+
}
|
|
11101
|
+
}
|
|
11102
|
+
|
|
11103
|
+
/**
|
|
11104
|
+
* A flow that leaves a voicemail. Curated by Roark, read-only.
|
|
11105
|
+
*/
|
|
11106
|
+
export interface VoicemailCustomerFlow {
|
|
11107
|
+
id: string;
|
|
11108
|
+
|
|
11109
|
+
agentExpectations: Array<VoicemailCustomerFlow.AgentExpectation>;
|
|
11110
|
+
|
|
11111
|
+
/**
|
|
11112
|
+
* The agents this flow is run against.
|
|
11113
|
+
*/
|
|
11114
|
+
agents: Array<VoicemailCustomerFlow.Agent>;
|
|
11115
|
+
|
|
11116
|
+
/**
|
|
11117
|
+
* Creation timestamp in ISO 8601 format
|
|
11118
|
+
*/
|
|
11119
|
+
createdAt: string;
|
|
11120
|
+
|
|
11121
|
+
/**
|
|
11122
|
+
* Every other way of running this flow.
|
|
11123
|
+
*/
|
|
11124
|
+
edgeCases: Array<VoicemailCustomerFlow.EdgeCase>;
|
|
11125
|
+
|
|
11126
|
+
/**
|
|
11127
|
+
* One voicemail greeting.
|
|
11128
|
+
*/
|
|
11129
|
+
happyPath: VoicemailCustomerFlow.HappyPath | null;
|
|
11130
|
+
|
|
11131
|
+
source: 'SYSTEM' | 'CUSTOM';
|
|
11132
|
+
|
|
11133
|
+
title: string;
|
|
11134
|
+
|
|
11135
|
+
type: 'VOICEMAIL';
|
|
11136
|
+
|
|
11137
|
+
/**
|
|
11138
|
+
* Last update timestamp in ISO 8601 format
|
|
11139
|
+
*/
|
|
11140
|
+
updatedAt: string;
|
|
11141
|
+
|
|
11142
|
+
description?: string | null;
|
|
11143
|
+
}
|
|
11144
|
+
|
|
11145
|
+
export namespace VoicemailCustomerFlow {
|
|
11146
|
+
/**
|
|
11147
|
+
* One thing the agent under test is graded against.
|
|
11148
|
+
*/
|
|
11149
|
+
export interface AgentExpectation {
|
|
11150
|
+
id: string;
|
|
11151
|
+
|
|
11152
|
+
/**
|
|
11153
|
+
* What the agent under test is graded against.
|
|
11154
|
+
*/
|
|
11155
|
+
prompt: string;
|
|
11156
|
+
}
|
|
11157
|
+
|
|
11158
|
+
export interface Agent {
|
|
11159
|
+
/**
|
|
11160
|
+
* Unique identifier of the agent
|
|
11161
|
+
*/
|
|
11162
|
+
id: string;
|
|
11163
|
+
|
|
11164
|
+
/**
|
|
11165
|
+
* Creation timestamp in ISO 8601 format
|
|
11166
|
+
*/
|
|
11167
|
+
createdAt: string;
|
|
11168
|
+
|
|
11169
|
+
/**
|
|
11170
|
+
* Custom identifier for the agent
|
|
11171
|
+
*/
|
|
11172
|
+
customId: string | null;
|
|
11173
|
+
|
|
11174
|
+
/**
|
|
11175
|
+
* Description of the agent
|
|
11176
|
+
*/
|
|
11177
|
+
description: string | null;
|
|
11178
|
+
|
|
11179
|
+
/**
|
|
11180
|
+
* Name of the agent
|
|
11181
|
+
*/
|
|
11182
|
+
name: string;
|
|
11183
|
+
|
|
11184
|
+
/**
|
|
11185
|
+
* Last update timestamp in ISO 8601 format
|
|
11186
|
+
*/
|
|
11187
|
+
updatedAt: string;
|
|
11188
|
+
}
|
|
11189
|
+
|
|
11190
|
+
/**
|
|
11191
|
+
* One voicemail greeting.
|
|
11192
|
+
*/
|
|
11193
|
+
export interface EdgeCase {
|
|
11194
|
+
id: string;
|
|
11195
|
+
|
|
11196
|
+
/**
|
|
11197
|
+
* Graded on top of the flow's own expectations, for this variant only.
|
|
11198
|
+
*/
|
|
11199
|
+
additionalExpectations: Array<EdgeCase.AdditionalExpectation>;
|
|
11200
|
+
|
|
11201
|
+
/**
|
|
11202
|
+
* Creation timestamp in ISO 8601 format
|
|
11203
|
+
*/
|
|
11204
|
+
createdAt: string;
|
|
11205
|
+
|
|
11206
|
+
/**
|
|
11207
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
11208
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
11209
|
+
* project.
|
|
11210
|
+
*/
|
|
11211
|
+
environment: EdgeCase.Environment | null;
|
|
11212
|
+
|
|
11213
|
+
isGenerated: boolean;
|
|
11214
|
+
|
|
11215
|
+
/**
|
|
11216
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
11217
|
+
*/
|
|
11218
|
+
personaOverride: EdgeCase.PersonaOverride | null;
|
|
11219
|
+
|
|
11220
|
+
precededByCustomerFlowId: string | null;
|
|
11221
|
+
|
|
11222
|
+
precededByCustomerFlowVariantId: string | null;
|
|
11223
|
+
|
|
11224
|
+
title: string;
|
|
11225
|
+
|
|
11226
|
+
type: 'VOICEMAIL';
|
|
11227
|
+
|
|
11228
|
+
/**
|
|
11229
|
+
* Last update timestamp in ISO 8601 format
|
|
11230
|
+
*/
|
|
11231
|
+
updatedAt: string;
|
|
11232
|
+
|
|
11233
|
+
systemKey?: string | null;
|
|
11234
|
+
}
|
|
11235
|
+
|
|
11236
|
+
export namespace EdgeCase {
|
|
11237
|
+
/**
|
|
11238
|
+
* One thing the agent under test is graded against.
|
|
11239
|
+
*/
|
|
11240
|
+
export interface AdditionalExpectation {
|
|
11241
|
+
id: string;
|
|
11242
|
+
|
|
11243
|
+
/**
|
|
11244
|
+
* What the agent under test is graded against.
|
|
11245
|
+
*/
|
|
11246
|
+
prompt: string;
|
|
11247
|
+
}
|
|
11248
|
+
|
|
11249
|
+
/**
|
|
11250
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
11251
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
11252
|
+
* project.
|
|
11253
|
+
*/
|
|
11254
|
+
export interface Environment {
|
|
11255
|
+
id: string;
|
|
11256
|
+
|
|
11257
|
+
backgroundNoise:
|
|
11258
|
+
| 'NONE'
|
|
11259
|
+
| 'AIRPORT'
|
|
11260
|
+
| 'CHILDREN_PLAYING'
|
|
11261
|
+
| 'CITY'
|
|
11262
|
+
| 'COFFEE_SHOP'
|
|
11263
|
+
| 'DRIVING'
|
|
11264
|
+
| 'OFFICE'
|
|
11265
|
+
| 'THUNDERSTORM';
|
|
11266
|
+
|
|
11267
|
+
backgroundNoiseVolume: number;
|
|
11268
|
+
|
|
11269
|
+
/**
|
|
11270
|
+
* Creation timestamp in ISO 8601 format
|
|
11271
|
+
*/
|
|
11272
|
+
createdAt: string;
|
|
11273
|
+
|
|
11274
|
+
name: string;
|
|
11275
|
+
|
|
11276
|
+
/**
|
|
11277
|
+
* Last update timestamp in ISO 8601 format
|
|
11278
|
+
*/
|
|
11279
|
+
updatedAt: string;
|
|
11280
|
+
|
|
11281
|
+
description?: string | null;
|
|
11282
|
+
}
|
|
11283
|
+
|
|
11284
|
+
/**
|
|
11285
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
11286
|
+
*/
|
|
11287
|
+
export interface PersonaOverride {
|
|
11288
|
+
/**
|
|
11289
|
+
* Unique identifier of the persona
|
|
11290
|
+
*/
|
|
11291
|
+
id: string;
|
|
11292
|
+
|
|
11293
|
+
/**
|
|
11294
|
+
* Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
|
|
11295
|
+
* optional variants
|
|
11296
|
+
*/
|
|
11297
|
+
accent:
|
|
11298
|
+
| 'US'
|
|
11299
|
+
| 'US_X_SOUTH'
|
|
11300
|
+
| 'GB'
|
|
11301
|
+
| 'ES'
|
|
11302
|
+
| 'DE'
|
|
11303
|
+
| 'IN'
|
|
11304
|
+
| 'FR'
|
|
11305
|
+
| 'NL'
|
|
11306
|
+
| 'SA'
|
|
11307
|
+
| 'GR'
|
|
11308
|
+
| 'AU'
|
|
11309
|
+
| 'IT'
|
|
11310
|
+
| 'ID'
|
|
11311
|
+
| 'TH'
|
|
11312
|
+
| 'JP'
|
|
11313
|
+
| 'NZ'
|
|
11314
|
+
| 'PH'
|
|
11315
|
+
| 'SG'
|
|
11316
|
+
| 'MY'
|
|
11317
|
+
| 'HK'
|
|
11318
|
+
| 'TR'
|
|
11319
|
+
| 'PT'
|
|
11320
|
+
| 'IL';
|
|
11321
|
+
|
|
11322
|
+
/**
|
|
11323
|
+
* How old the caller sounds and behaves. Only ages the persona's accent has a
|
|
11324
|
+
* voice for are accepted; defaults to ADULT, which every accent supports.
|
|
11325
|
+
*/
|
|
11326
|
+
age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY';
|
|
11327
|
+
|
|
11328
|
+
/**
|
|
11329
|
+
* Background noise setting
|
|
11330
|
+
*/
|
|
11331
|
+
backgroundNoise:
|
|
11332
|
+
| 'NONE'
|
|
11333
|
+
| 'AIRPORT'
|
|
11334
|
+
| 'CHILDREN_PLAYING'
|
|
11335
|
+
| 'CITY'
|
|
11336
|
+
| 'COFFEE_SHOP'
|
|
11337
|
+
| 'DRIVING'
|
|
11338
|
+
| 'OFFICE'
|
|
11339
|
+
| 'THUNDERSTORM';
|
|
11340
|
+
|
|
11341
|
+
/**
|
|
11342
|
+
* Base emotional state of the persona
|
|
11343
|
+
*/
|
|
11344
|
+
baseEmotion:
|
|
11345
|
+
| 'NEUTRAL'
|
|
11346
|
+
| 'CHEERFUL'
|
|
11347
|
+
| 'CONFUSED'
|
|
11348
|
+
| 'FRUSTRATED'
|
|
11349
|
+
| 'SKEPTICAL'
|
|
11350
|
+
| 'RUSHED'
|
|
11351
|
+
| 'DISTRACTED'
|
|
11352
|
+
| 'ANGRY'
|
|
11353
|
+
| 'ANXIOUS'
|
|
11354
|
+
| 'SAD';
|
|
11355
|
+
|
|
11356
|
+
/**
|
|
11357
|
+
* How the persona confirms information
|
|
11358
|
+
*/
|
|
11359
|
+
confirmationStyle: 'EXPLICIT' | 'VAGUE';
|
|
11360
|
+
|
|
11361
|
+
/**
|
|
11362
|
+
* Creation timestamp
|
|
11363
|
+
*/
|
|
11364
|
+
createdAt: string;
|
|
11365
|
+
|
|
11366
|
+
/**
|
|
11367
|
+
* Gender of the persona
|
|
11368
|
+
*/
|
|
11369
|
+
gender: 'MALE' | 'FEMALE';
|
|
11370
|
+
|
|
11371
|
+
/**
|
|
11372
|
+
* Whether the persona uses filler words like "um" and "uh"
|
|
11373
|
+
*/
|
|
11374
|
+
hasDisfluencies: boolean;
|
|
11375
|
+
|
|
11376
|
+
/**
|
|
11377
|
+
* Maximum number of idle messages the persona will send before giving up
|
|
11378
|
+
*/
|
|
11379
|
+
idleMessageMaxSpokenCount: number;
|
|
11380
|
+
|
|
11381
|
+
/**
|
|
11382
|
+
* Whether the idle message counter resets when the agent speaks
|
|
11383
|
+
*/
|
|
11384
|
+
idleMessageResetCountOnUserSpeechEnabled: boolean;
|
|
11385
|
+
|
|
11386
|
+
/**
|
|
11387
|
+
* Messages the persona will say when the agent goes silent during a call. null =
|
|
11388
|
+
* "Automatic": language-appropriate defaults are used at call time.
|
|
11389
|
+
*/
|
|
11390
|
+
idleMessages: Array<string> | null;
|
|
11391
|
+
|
|
11392
|
+
/**
|
|
11393
|
+
* Seconds of silence before the persona sends an idle message
|
|
11394
|
+
*/
|
|
11395
|
+
idleTimeoutSeconds: number;
|
|
11396
|
+
|
|
11397
|
+
/**
|
|
11398
|
+
* How clearly the persona expresses their intentions
|
|
11399
|
+
*/
|
|
11400
|
+
intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
|
|
11401
|
+
|
|
11402
|
+
/**
|
|
11403
|
+
* Primary language ISO 639-1 code for the persona
|
|
11404
|
+
*/
|
|
11405
|
+
language:
|
|
11406
|
+
| 'EN'
|
|
11407
|
+
| 'ES'
|
|
11408
|
+
| 'DE'
|
|
11409
|
+
| 'HI'
|
|
11410
|
+
| 'FR'
|
|
11411
|
+
| 'NL'
|
|
11412
|
+
| 'AR'
|
|
11413
|
+
| 'EL'
|
|
11414
|
+
| 'IT'
|
|
11415
|
+
| 'ID'
|
|
11416
|
+
| 'TH'
|
|
11417
|
+
| 'JA'
|
|
11418
|
+
| 'TL'
|
|
11419
|
+
| 'MS'
|
|
11420
|
+
| 'ZH'
|
|
11421
|
+
| 'TR'
|
|
11422
|
+
| 'PT'
|
|
11423
|
+
| 'HE';
|
|
11424
|
+
|
|
11425
|
+
/**
|
|
11426
|
+
* How reliable the persona's memory is
|
|
11427
|
+
*/
|
|
11428
|
+
memoryReliability: 'HIGH' | 'LOW';
|
|
11429
|
+
|
|
11430
|
+
/**
|
|
11431
|
+
* The name the agent will identify as during conversations
|
|
11432
|
+
*/
|
|
11433
|
+
name: string;
|
|
11434
|
+
|
|
11435
|
+
/**
|
|
11436
|
+
* Additional custom properties about the persona
|
|
11437
|
+
*/
|
|
11438
|
+
properties: { [key: string]: unknown };
|
|
11439
|
+
|
|
11440
|
+
/**
|
|
11441
|
+
* Controls how quickly the persona responds to pauses in conversation (QUICK,
|
|
11442
|
+
* NORMAL, RELAXED)
|
|
11443
|
+
*/
|
|
11444
|
+
responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
|
|
11445
|
+
|
|
11446
|
+
/**
|
|
11447
|
+
* Speech clarity of the persona
|
|
11448
|
+
*/
|
|
11449
|
+
speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
|
|
11450
|
+
|
|
11451
|
+
/**
|
|
11452
|
+
* Speech pace of the persona
|
|
11453
|
+
*/
|
|
11454
|
+
speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
|
|
11455
|
+
|
|
11456
|
+
/**
|
|
11457
|
+
* Languages the persona can understand. Multilingual combinations are limited by
|
|
11458
|
+
* multilingual speech recognition support.
|
|
11459
|
+
*/
|
|
11460
|
+
understoodLanguages: Array<
|
|
11461
|
+
| 'EN'
|
|
11462
|
+
| 'ES'
|
|
11463
|
+
| 'DE'
|
|
11464
|
+
| 'HI'
|
|
11465
|
+
| 'FR'
|
|
11466
|
+
| 'NL'
|
|
11467
|
+
| 'AR'
|
|
11468
|
+
| 'EL'
|
|
11469
|
+
| 'IT'
|
|
11470
|
+
| 'ID'
|
|
11471
|
+
| 'TH'
|
|
11472
|
+
| 'JA'
|
|
11473
|
+
| 'TL'
|
|
11474
|
+
| 'MS'
|
|
11475
|
+
| 'ZH'
|
|
11476
|
+
| 'TR'
|
|
11477
|
+
| 'PT'
|
|
11478
|
+
| 'HE'
|
|
11479
|
+
>;
|
|
11480
|
+
|
|
11481
|
+
/**
|
|
11482
|
+
* Last update timestamp
|
|
11483
|
+
*/
|
|
11484
|
+
updatedAt: string;
|
|
11485
|
+
|
|
11486
|
+
/**
|
|
11487
|
+
* Background story and behavioral patterns for the persona
|
|
11488
|
+
*/
|
|
11489
|
+
backstoryPrompt?: string | null;
|
|
11490
|
+
|
|
11491
|
+
/**
|
|
11492
|
+
* Human-readable description of the persona
|
|
11493
|
+
*/
|
|
11494
|
+
description?: string | null;
|
|
11495
|
+
|
|
11496
|
+
/**
|
|
11497
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
11498
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
11499
|
+
* or set null to display the name itself.
|
|
11500
|
+
*/
|
|
11501
|
+
displayName?: string | null;
|
|
11502
|
+
|
|
11503
|
+
/**
|
|
11504
|
+
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
11505
|
+
*/
|
|
11506
|
+
secondaryLanguage?: 'EN' | null;
|
|
11507
|
+
}
|
|
11508
|
+
}
|
|
11509
|
+
|
|
11510
|
+
/**
|
|
11511
|
+
* One voicemail greeting.
|
|
11512
|
+
*/
|
|
11513
|
+
export interface HappyPath {
|
|
11514
|
+
id: string;
|
|
11515
|
+
|
|
11516
|
+
/**
|
|
11517
|
+
* Graded on top of the flow's own expectations, for this variant only.
|
|
11518
|
+
*/
|
|
11519
|
+
additionalExpectations: Array<HappyPath.AdditionalExpectation>;
|
|
11520
|
+
|
|
11521
|
+
/**
|
|
11522
|
+
* Creation timestamp in ISO 8601 format
|
|
11523
|
+
*/
|
|
11524
|
+
createdAt: string;
|
|
11525
|
+
|
|
11526
|
+
/**
|
|
11527
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
11528
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
11529
|
+
* project.
|
|
11530
|
+
*/
|
|
11531
|
+
environment: HappyPath.Environment | null;
|
|
11532
|
+
|
|
11533
|
+
isGenerated: boolean;
|
|
11534
|
+
|
|
11535
|
+
/**
|
|
11536
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
11537
|
+
*/
|
|
11538
|
+
personaOverride: HappyPath.PersonaOverride | null;
|
|
11539
|
+
|
|
11540
|
+
precededByCustomerFlowId: string | null;
|
|
11541
|
+
|
|
11542
|
+
precededByCustomerFlowVariantId: string | null;
|
|
11543
|
+
|
|
11544
|
+
title: string;
|
|
11545
|
+
|
|
11546
|
+
type: 'VOICEMAIL';
|
|
11547
|
+
|
|
11548
|
+
/**
|
|
11549
|
+
* Last update timestamp in ISO 8601 format
|
|
11550
|
+
*/
|
|
11551
|
+
updatedAt: string;
|
|
11552
|
+
|
|
11553
|
+
systemKey?: string | null;
|
|
11554
|
+
}
|
|
11555
|
+
|
|
11556
|
+
export namespace HappyPath {
|
|
11557
|
+
/**
|
|
11558
|
+
* One thing the agent under test is graded against.
|
|
11559
|
+
*/
|
|
11560
|
+
export interface AdditionalExpectation {
|
|
11561
|
+
id: string;
|
|
11562
|
+
|
|
11563
|
+
/**
|
|
11564
|
+
* What the agent under test is graded against.
|
|
11565
|
+
*/
|
|
11566
|
+
prompt: string;
|
|
11567
|
+
}
|
|
11568
|
+
|
|
11569
|
+
/**
|
|
11570
|
+
* A simulation environment: the ambient conditions a customer flow variant runs
|
|
11571
|
+
* under. The list includes both your own and the ones Roark curates for every
|
|
11572
|
+
* project.
|
|
11573
|
+
*/
|
|
11574
|
+
export interface Environment {
|
|
11575
|
+
id: string;
|
|
11576
|
+
|
|
11577
|
+
backgroundNoise:
|
|
11578
|
+
| 'NONE'
|
|
11579
|
+
| 'AIRPORT'
|
|
11580
|
+
| 'CHILDREN_PLAYING'
|
|
11581
|
+
| 'CITY'
|
|
11582
|
+
| 'COFFEE_SHOP'
|
|
11583
|
+
| 'DRIVING'
|
|
11584
|
+
| 'OFFICE'
|
|
11585
|
+
| 'THUNDERSTORM';
|
|
11586
|
+
|
|
11587
|
+
backgroundNoiseVolume: number;
|
|
11588
|
+
|
|
11589
|
+
/**
|
|
11590
|
+
* Creation timestamp in ISO 8601 format
|
|
11591
|
+
*/
|
|
11592
|
+
createdAt: string;
|
|
11593
|
+
|
|
11594
|
+
name: string;
|
|
11595
|
+
|
|
11596
|
+
/**
|
|
11597
|
+
* Last update timestamp in ISO 8601 format
|
|
11598
|
+
*/
|
|
11599
|
+
updatedAt: string;
|
|
11600
|
+
|
|
11601
|
+
description?: string | null;
|
|
11602
|
+
}
|
|
11603
|
+
|
|
11604
|
+
/**
|
|
11605
|
+
* The persona this runs as instead of the happy path's. Null means it inherits.
|
|
11606
|
+
*/
|
|
11607
|
+
export interface PersonaOverride {
|
|
11608
|
+
/**
|
|
11609
|
+
* Unique identifier of the persona
|
|
11610
|
+
*/
|
|
11611
|
+
id: string;
|
|
11612
|
+
|
|
11613
|
+
/**
|
|
11614
|
+
* Accent of the persona, defined using ISO 3166-1 alpha-2 country codes with
|
|
11615
|
+
* optional variants
|
|
11616
|
+
*/
|
|
11617
|
+
accent:
|
|
11618
|
+
| 'US'
|
|
11619
|
+
| 'US_X_SOUTH'
|
|
11620
|
+
| 'GB'
|
|
11621
|
+
| 'ES'
|
|
11622
|
+
| 'DE'
|
|
11623
|
+
| 'IN'
|
|
11624
|
+
| 'FR'
|
|
11625
|
+
| 'NL'
|
|
11626
|
+
| 'SA'
|
|
11627
|
+
| 'GR'
|
|
11628
|
+
| 'AU'
|
|
11629
|
+
| 'IT'
|
|
11630
|
+
| 'ID'
|
|
11631
|
+
| 'TH'
|
|
11632
|
+
| 'JP'
|
|
11633
|
+
| 'NZ'
|
|
11634
|
+
| 'PH'
|
|
11635
|
+
| 'SG'
|
|
11636
|
+
| 'MY'
|
|
11637
|
+
| 'HK'
|
|
11638
|
+
| 'TR'
|
|
11639
|
+
| 'PT'
|
|
11640
|
+
| 'IL';
|
|
11641
|
+
|
|
11642
|
+
/**
|
|
11643
|
+
* How old the caller sounds and behaves. Only ages the persona's accent has a
|
|
11644
|
+
* voice for are accepted; defaults to ADULT, which every accent supports.
|
|
11645
|
+
*/
|
|
11646
|
+
age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY';
|
|
11647
|
+
|
|
11648
|
+
/**
|
|
11649
|
+
* Background noise setting
|
|
11650
|
+
*/
|
|
11651
|
+
backgroundNoise:
|
|
11652
|
+
| 'NONE'
|
|
11653
|
+
| 'AIRPORT'
|
|
11654
|
+
| 'CHILDREN_PLAYING'
|
|
11655
|
+
| 'CITY'
|
|
11656
|
+
| 'COFFEE_SHOP'
|
|
11657
|
+
| 'DRIVING'
|
|
11658
|
+
| 'OFFICE'
|
|
11659
|
+
| 'THUNDERSTORM';
|
|
11660
|
+
|
|
11661
|
+
/**
|
|
11662
|
+
* Base emotional state of the persona
|
|
11663
|
+
*/
|
|
11664
|
+
baseEmotion:
|
|
11665
|
+
| 'NEUTRAL'
|
|
11666
|
+
| 'CHEERFUL'
|
|
11667
|
+
| 'CONFUSED'
|
|
11668
|
+
| 'FRUSTRATED'
|
|
11669
|
+
| 'SKEPTICAL'
|
|
11670
|
+
| 'RUSHED'
|
|
11671
|
+
| 'DISTRACTED'
|
|
11672
|
+
| 'ANGRY'
|
|
11673
|
+
| 'ANXIOUS'
|
|
11674
|
+
| 'SAD';
|
|
11675
|
+
|
|
11676
|
+
/**
|
|
11677
|
+
* How the persona confirms information
|
|
11678
|
+
*/
|
|
11679
|
+
confirmationStyle: 'EXPLICIT' | 'VAGUE';
|
|
11680
|
+
|
|
11681
|
+
/**
|
|
11682
|
+
* Creation timestamp
|
|
11683
|
+
*/
|
|
11684
|
+
createdAt: string;
|
|
11685
|
+
|
|
11686
|
+
/**
|
|
11687
|
+
* Gender of the persona
|
|
11688
|
+
*/
|
|
11689
|
+
gender: 'MALE' | 'FEMALE';
|
|
11690
|
+
|
|
11691
|
+
/**
|
|
11692
|
+
* Whether the persona uses filler words like "um" and "uh"
|
|
11693
|
+
*/
|
|
11694
|
+
hasDisfluencies: boolean;
|
|
11695
|
+
|
|
11696
|
+
/**
|
|
11697
|
+
* Maximum number of idle messages the persona will send before giving up
|
|
11698
|
+
*/
|
|
11699
|
+
idleMessageMaxSpokenCount: number;
|
|
11700
|
+
|
|
11701
|
+
/**
|
|
11702
|
+
* Whether the idle message counter resets when the agent speaks
|
|
11703
|
+
*/
|
|
11704
|
+
idleMessageResetCountOnUserSpeechEnabled: boolean;
|
|
11705
|
+
|
|
11706
|
+
/**
|
|
11707
|
+
* Messages the persona will say when the agent goes silent during a call. null =
|
|
11708
|
+
* "Automatic": language-appropriate defaults are used at call time.
|
|
11709
|
+
*/
|
|
11710
|
+
idleMessages: Array<string> | null;
|
|
11711
|
+
|
|
11712
|
+
/**
|
|
11713
|
+
* Seconds of silence before the persona sends an idle message
|
|
11714
|
+
*/
|
|
11715
|
+
idleTimeoutSeconds: number;
|
|
11716
|
+
|
|
11717
|
+
/**
|
|
11718
|
+
* How clearly the persona expresses their intentions
|
|
11719
|
+
*/
|
|
11720
|
+
intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE';
|
|
11721
|
+
|
|
11722
|
+
/**
|
|
11723
|
+
* Primary language ISO 639-1 code for the persona
|
|
11724
|
+
*/
|
|
11725
|
+
language:
|
|
11726
|
+
| 'EN'
|
|
11727
|
+
| 'ES'
|
|
11728
|
+
| 'DE'
|
|
11729
|
+
| 'HI'
|
|
11730
|
+
| 'FR'
|
|
11731
|
+
| 'NL'
|
|
11732
|
+
| 'AR'
|
|
11733
|
+
| 'EL'
|
|
11734
|
+
| 'IT'
|
|
11735
|
+
| 'ID'
|
|
11736
|
+
| 'TH'
|
|
11737
|
+
| 'JA'
|
|
11738
|
+
| 'TL'
|
|
11739
|
+
| 'MS'
|
|
11740
|
+
| 'ZH'
|
|
11741
|
+
| 'TR'
|
|
11742
|
+
| 'PT'
|
|
11743
|
+
| 'HE';
|
|
11744
|
+
|
|
11745
|
+
/**
|
|
11746
|
+
* How reliable the persona's memory is
|
|
11747
|
+
*/
|
|
11748
|
+
memoryReliability: 'HIGH' | 'LOW';
|
|
11749
|
+
|
|
11750
|
+
/**
|
|
11751
|
+
* The name the agent will identify as during conversations
|
|
11752
|
+
*/
|
|
11753
|
+
name: string;
|
|
11754
|
+
|
|
11755
|
+
/**
|
|
11756
|
+
* Additional custom properties about the persona
|
|
11757
|
+
*/
|
|
11758
|
+
properties: { [key: string]: unknown };
|
|
11759
|
+
|
|
11760
|
+
/**
|
|
11761
|
+
* Controls how quickly the persona responds to pauses in conversation (QUICK,
|
|
11762
|
+
* NORMAL, RELAXED)
|
|
11763
|
+
*/
|
|
11764
|
+
responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK';
|
|
11765
|
+
|
|
11766
|
+
/**
|
|
11767
|
+
* Speech clarity of the persona
|
|
11768
|
+
*/
|
|
11769
|
+
speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING';
|
|
11770
|
+
|
|
11771
|
+
/**
|
|
11772
|
+
* Speech pace of the persona
|
|
11773
|
+
*/
|
|
11774
|
+
speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST';
|
|
11775
|
+
|
|
11776
|
+
/**
|
|
11777
|
+
* Languages the persona can understand. Multilingual combinations are limited by
|
|
11778
|
+
* multilingual speech recognition support.
|
|
11779
|
+
*/
|
|
11780
|
+
understoodLanguages: Array<
|
|
11781
|
+
| 'EN'
|
|
11782
|
+
| 'ES'
|
|
11783
|
+
| 'DE'
|
|
11784
|
+
| 'HI'
|
|
11785
|
+
| 'FR'
|
|
11786
|
+
| 'NL'
|
|
11787
|
+
| 'AR'
|
|
11788
|
+
| 'EL'
|
|
11789
|
+
| 'IT'
|
|
11790
|
+
| 'ID'
|
|
11791
|
+
| 'TH'
|
|
11792
|
+
| 'JA'
|
|
11793
|
+
| 'TL'
|
|
11794
|
+
| 'MS'
|
|
11795
|
+
| 'ZH'
|
|
11796
|
+
| 'TR'
|
|
11797
|
+
| 'PT'
|
|
11798
|
+
| 'HE'
|
|
11799
|
+
>;
|
|
11800
|
+
|
|
11801
|
+
/**
|
|
11802
|
+
* Last update timestamp
|
|
11803
|
+
*/
|
|
11804
|
+
updatedAt: string;
|
|
11805
|
+
|
|
11806
|
+
/**
|
|
11807
|
+
* Background story and behavioral patterns for the persona
|
|
11808
|
+
*/
|
|
11809
|
+
backstoryPrompt?: string | null;
|
|
11810
|
+
|
|
11811
|
+
/**
|
|
11812
|
+
* Human-readable description of the persona
|
|
11813
|
+
*/
|
|
11814
|
+
description?: string | null;
|
|
11815
|
+
|
|
11816
|
+
/**
|
|
11817
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
11818
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
11819
|
+
* or set null to display the name itself.
|
|
11820
|
+
*/
|
|
11821
|
+
displayName?: string | null;
|
|
11822
|
+
|
|
11823
|
+
/**
|
|
11824
|
+
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
11825
|
+
*/
|
|
11826
|
+
secondaryLanguage?: 'EN' | null;
|
|
11827
|
+
}
|
|
11828
|
+
}
|
|
11829
|
+
}
|
|
11830
|
+
}
|
|
11831
|
+
|
|
11832
|
+
export interface CustomerFlowReplaceGraphResponse {
|
|
11833
|
+
data: CustomerFlowReplaceGraphResponse.Data;
|
|
11834
|
+
}
|
|
11835
|
+
|
|
11836
|
+
export namespace CustomerFlowReplaceGraphResponse {
|
|
11837
|
+
export interface Data {
|
|
11838
|
+
/**
|
|
11839
|
+
* The edge cases after the write.
|
|
11840
|
+
*/
|
|
11841
|
+
edgeCases: Array<Data.ScriptedFlowVariant | Data.ImprovFlowVariant | Data.VoicemailFlowVariant>;
|
|
11842
|
+
|
|
11843
|
+
graph: Array<CustomerFlowAPI.FlowStep>;
|
|
11844
|
+
|
|
11845
|
+
/**
|
|
11846
|
+
* The way a customer flow is meant to go.
|
|
11847
|
+
*/
|
|
11848
|
+
happyPath: Data.ScriptedFlowVariant | Data.ImprovFlowVariant | Data.VoicemailFlowVariant | null;
|
|
11849
|
+
|
|
11850
|
+
/**
|
|
11851
|
+
* True when the write changed the set of paths, so the flow's variants were
|
|
11852
|
+
* re-seeded and any variant id you were holding may no longer exist.
|
|
11853
|
+
*/
|
|
11854
|
+
variantsReshaped: boolean;
|
|
11855
|
+
|
|
11856
|
+
warnings: Array<string>;
|
|
11857
|
+
}
|
|
11858
|
+
|
|
11859
|
+
export namespace Data {
|
|
11860
|
+
/**
|
|
11861
|
+
* One path through a scripted flow. The path engine owns which paths exist, so
|
|
11862
|
+
* editing the graph is what creates and removes these.
|
|
11863
|
+
*/
|
|
11864
|
+
export interface ScriptedFlowVariant {
|
|
11865
|
+
id: string;
|
|
11866
|
+
|
|
11867
|
+
/**
|
|
11868
|
+
* Graded on top of the flow's own expectations, for this variant only.
|
|
11869
|
+
*/
|
|
11870
|
+
additionalExpectations: Array<ScriptedFlowVariant.AdditionalExpectation>;
|
|
9039
11871
|
|
|
9040
11872
|
/**
|
|
9041
11873
|
* Creation timestamp in ISO 8601 format
|
|
@@ -9109,6 +11941,8 @@ export namespace CustomerFlowReplaceGraphResponse {
|
|
|
9109
11941
|
| 'OFFICE'
|
|
9110
11942
|
| 'THUNDERSTORM';
|
|
9111
11943
|
|
|
11944
|
+
backgroundNoiseVolume: number;
|
|
11945
|
+
|
|
9112
11946
|
/**
|
|
9113
11947
|
* Creation timestamp in ISO 8601 format
|
|
9114
11948
|
*/
|
|
@@ -9191,7 +12025,10 @@ export namespace CustomerFlowReplaceGraphResponse {
|
|
|
9191
12025
|
| 'FRUSTRATED'
|
|
9192
12026
|
| 'SKEPTICAL'
|
|
9193
12027
|
| 'RUSHED'
|
|
9194
|
-
| 'DISTRACTED'
|
|
12028
|
+
| 'DISTRACTED'
|
|
12029
|
+
| 'ANGRY'
|
|
12030
|
+
| 'ANXIOUS'
|
|
12031
|
+
| 'SAD';
|
|
9195
12032
|
|
|
9196
12033
|
/**
|
|
9197
12034
|
* How the persona confirms information
|
|
@@ -9333,6 +12170,13 @@ export namespace CustomerFlowReplaceGraphResponse {
|
|
|
9333
12170
|
*/
|
|
9334
12171
|
description?: string | null;
|
|
9335
12172
|
|
|
12173
|
+
/**
|
|
12174
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
12175
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
12176
|
+
* or set null to display the name itself.
|
|
12177
|
+
*/
|
|
12178
|
+
displayName?: string | null;
|
|
12179
|
+
|
|
9336
12180
|
/**
|
|
9337
12181
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
9338
12182
|
*/
|
|
@@ -9422,6 +12266,8 @@ export namespace CustomerFlowReplaceGraphResponse {
|
|
|
9422
12266
|
| 'OFFICE'
|
|
9423
12267
|
| 'THUNDERSTORM';
|
|
9424
12268
|
|
|
12269
|
+
backgroundNoiseVolume: number;
|
|
12270
|
+
|
|
9425
12271
|
/**
|
|
9426
12272
|
* Creation timestamp in ISO 8601 format
|
|
9427
12273
|
*/
|
|
@@ -9504,7 +12350,10 @@ export namespace CustomerFlowReplaceGraphResponse {
|
|
|
9504
12350
|
| 'FRUSTRATED'
|
|
9505
12351
|
| 'SKEPTICAL'
|
|
9506
12352
|
| 'RUSHED'
|
|
9507
|
-
| 'DISTRACTED'
|
|
12353
|
+
| 'DISTRACTED'
|
|
12354
|
+
| 'ANGRY'
|
|
12355
|
+
| 'ANXIOUS'
|
|
12356
|
+
| 'SAD';
|
|
9508
12357
|
|
|
9509
12358
|
/**
|
|
9510
12359
|
* How the persona confirms information
|
|
@@ -9646,6 +12495,13 @@ export namespace CustomerFlowReplaceGraphResponse {
|
|
|
9646
12495
|
*/
|
|
9647
12496
|
description?: string | null;
|
|
9648
12497
|
|
|
12498
|
+
/**
|
|
12499
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
12500
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
12501
|
+
* or set null to display the name itself.
|
|
12502
|
+
*/
|
|
12503
|
+
displayName?: string | null;
|
|
12504
|
+
|
|
9649
12505
|
/**
|
|
9650
12506
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
9651
12507
|
*/
|
|
@@ -9730,6 +12586,8 @@ export namespace CustomerFlowReplaceGraphResponse {
|
|
|
9730
12586
|
| 'OFFICE'
|
|
9731
12587
|
| 'THUNDERSTORM';
|
|
9732
12588
|
|
|
12589
|
+
backgroundNoiseVolume: number;
|
|
12590
|
+
|
|
9733
12591
|
/**
|
|
9734
12592
|
* Creation timestamp in ISO 8601 format
|
|
9735
12593
|
*/
|
|
@@ -9812,7 +12670,10 @@ export namespace CustomerFlowReplaceGraphResponse {
|
|
|
9812
12670
|
| 'FRUSTRATED'
|
|
9813
12671
|
| 'SKEPTICAL'
|
|
9814
12672
|
| 'RUSHED'
|
|
9815
|
-
| 'DISTRACTED'
|
|
12673
|
+
| 'DISTRACTED'
|
|
12674
|
+
| 'ANGRY'
|
|
12675
|
+
| 'ANXIOUS'
|
|
12676
|
+
| 'SAD';
|
|
9816
12677
|
|
|
9817
12678
|
/**
|
|
9818
12679
|
* How the persona confirms information
|
|
@@ -9954,6 +12815,13 @@ export namespace CustomerFlowReplaceGraphResponse {
|
|
|
9954
12815
|
*/
|
|
9955
12816
|
description?: string | null;
|
|
9956
12817
|
|
|
12818
|
+
/**
|
|
12819
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
12820
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
12821
|
+
* or set null to display the name itself.
|
|
12822
|
+
*/
|
|
12823
|
+
displayName?: string | null;
|
|
12824
|
+
|
|
9957
12825
|
/**
|
|
9958
12826
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
9959
12827
|
*/
|
|
@@ -10058,6 +12926,8 @@ export namespace CustomerFlowUpdateHappyPathResponse {
|
|
|
10058
12926
|
| 'OFFICE'
|
|
10059
12927
|
| 'THUNDERSTORM';
|
|
10060
12928
|
|
|
12929
|
+
backgroundNoiseVolume: number;
|
|
12930
|
+
|
|
10061
12931
|
/**
|
|
10062
12932
|
* Creation timestamp in ISO 8601 format
|
|
10063
12933
|
*/
|
|
@@ -10133,7 +13003,17 @@ export namespace CustomerFlowUpdateHappyPathResponse {
|
|
|
10133
13003
|
/**
|
|
10134
13004
|
* Base emotional state of the persona
|
|
10135
13005
|
*/
|
|
10136
|
-
baseEmotion:
|
|
13006
|
+
baseEmotion:
|
|
13007
|
+
| 'NEUTRAL'
|
|
13008
|
+
| 'CHEERFUL'
|
|
13009
|
+
| 'CONFUSED'
|
|
13010
|
+
| 'FRUSTRATED'
|
|
13011
|
+
| 'SKEPTICAL'
|
|
13012
|
+
| 'RUSHED'
|
|
13013
|
+
| 'DISTRACTED'
|
|
13014
|
+
| 'ANGRY'
|
|
13015
|
+
| 'ANXIOUS'
|
|
13016
|
+
| 'SAD';
|
|
10137
13017
|
|
|
10138
13018
|
/**
|
|
10139
13019
|
* How the persona confirms information
|
|
@@ -10275,6 +13155,13 @@ export namespace CustomerFlowUpdateHappyPathResponse {
|
|
|
10275
13155
|
*/
|
|
10276
13156
|
description?: string | null;
|
|
10277
13157
|
|
|
13158
|
+
/**
|
|
13159
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
13160
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
13161
|
+
* or set null to display the name itself.
|
|
13162
|
+
*/
|
|
13163
|
+
displayName?: string | null;
|
|
13164
|
+
|
|
10278
13165
|
/**
|
|
10279
13166
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
10280
13167
|
*/
|
|
@@ -10364,6 +13251,8 @@ export namespace CustomerFlowUpdateHappyPathResponse {
|
|
|
10364
13251
|
| 'OFFICE'
|
|
10365
13252
|
| 'THUNDERSTORM';
|
|
10366
13253
|
|
|
13254
|
+
backgroundNoiseVolume: number;
|
|
13255
|
+
|
|
10367
13256
|
/**
|
|
10368
13257
|
* Creation timestamp in ISO 8601 format
|
|
10369
13258
|
*/
|
|
@@ -10439,7 +13328,17 @@ export namespace CustomerFlowUpdateHappyPathResponse {
|
|
|
10439
13328
|
/**
|
|
10440
13329
|
* Base emotional state of the persona
|
|
10441
13330
|
*/
|
|
10442
|
-
baseEmotion:
|
|
13331
|
+
baseEmotion:
|
|
13332
|
+
| 'NEUTRAL'
|
|
13333
|
+
| 'CHEERFUL'
|
|
13334
|
+
| 'CONFUSED'
|
|
13335
|
+
| 'FRUSTRATED'
|
|
13336
|
+
| 'SKEPTICAL'
|
|
13337
|
+
| 'RUSHED'
|
|
13338
|
+
| 'DISTRACTED'
|
|
13339
|
+
| 'ANGRY'
|
|
13340
|
+
| 'ANXIOUS'
|
|
13341
|
+
| 'SAD';
|
|
10443
13342
|
|
|
10444
13343
|
/**
|
|
10445
13344
|
* How the persona confirms information
|
|
@@ -10581,6 +13480,13 @@ export namespace CustomerFlowUpdateHappyPathResponse {
|
|
|
10581
13480
|
*/
|
|
10582
13481
|
description?: string | null;
|
|
10583
13482
|
|
|
13483
|
+
/**
|
|
13484
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
13485
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
13486
|
+
* or set null to display the name itself.
|
|
13487
|
+
*/
|
|
13488
|
+
displayName?: string | null;
|
|
13489
|
+
|
|
10584
13490
|
/**
|
|
10585
13491
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
10586
13492
|
*/
|
|
@@ -10665,6 +13571,8 @@ export namespace CustomerFlowUpdateHappyPathResponse {
|
|
|
10665
13571
|
| 'OFFICE'
|
|
10666
13572
|
| 'THUNDERSTORM';
|
|
10667
13573
|
|
|
13574
|
+
backgroundNoiseVolume: number;
|
|
13575
|
+
|
|
10668
13576
|
/**
|
|
10669
13577
|
* Creation timestamp in ISO 8601 format
|
|
10670
13578
|
*/
|
|
@@ -10740,7 +13648,17 @@ export namespace CustomerFlowUpdateHappyPathResponse {
|
|
|
10740
13648
|
/**
|
|
10741
13649
|
* Base emotional state of the persona
|
|
10742
13650
|
*/
|
|
10743
|
-
baseEmotion:
|
|
13651
|
+
baseEmotion:
|
|
13652
|
+
| 'NEUTRAL'
|
|
13653
|
+
| 'CHEERFUL'
|
|
13654
|
+
| 'CONFUSED'
|
|
13655
|
+
| 'FRUSTRATED'
|
|
13656
|
+
| 'SKEPTICAL'
|
|
13657
|
+
| 'RUSHED'
|
|
13658
|
+
| 'DISTRACTED'
|
|
13659
|
+
| 'ANGRY'
|
|
13660
|
+
| 'ANXIOUS'
|
|
13661
|
+
| 'SAD';
|
|
10744
13662
|
|
|
10745
13663
|
/**
|
|
10746
13664
|
* How the persona confirms information
|
|
@@ -10882,6 +13800,13 @@ export namespace CustomerFlowUpdateHappyPathResponse {
|
|
|
10882
13800
|
*/
|
|
10883
13801
|
description?: string | null;
|
|
10884
13802
|
|
|
13803
|
+
/**
|
|
13804
|
+
* Label shown in place of the name across the dashboard (e.g. a short descriptor
|
|
13805
|
+
* like "Irate Escalator"). The persona still identifies as `name` on calls. Omit
|
|
13806
|
+
* or set null to display the name itself.
|
|
13807
|
+
*/
|
|
13808
|
+
displayName?: string | null;
|
|
13809
|
+
|
|
10885
13810
|
/**
|
|
10886
13811
|
* Secondary language ISO 639-1 code for code-switching (e.g., Hinglish, Spanglish)
|
|
10887
13812
|
*/
|
|
@@ -10899,7 +13824,8 @@ export declare namespace CustomerFlowCreateParams {
|
|
|
10899
13824
|
/**
|
|
10900
13825
|
* The conversation, as a graph of steps. At most 100 steps across at most 25
|
|
10901
13826
|
* paths. The variants come from the graph: one per path, so they are not sent
|
|
10902
|
-
* here.
|
|
13827
|
+
* here. A CUSTOMER_TURN describes what the simulated customer says and the persona
|
|
13828
|
+
* phrases it; a CUSTOMER_VERBATIM_TURN is said word for word.
|
|
10903
13829
|
*/
|
|
10904
13830
|
graph: Array<FlowStep>;
|
|
10905
13831
|
|
|
@@ -10925,6 +13851,31 @@ export declare namespace CustomerFlowCreateParams {
|
|
|
10925
13851
|
branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE';
|
|
10926
13852
|
|
|
10927
13853
|
description?: string | null;
|
|
13854
|
+
|
|
13855
|
+
/**
|
|
13856
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
13857
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
13858
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
13859
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
13860
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
13861
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
13862
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
13863
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
13864
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
13865
|
+
* AGENT_TURN step can carry its own.
|
|
13866
|
+
*/
|
|
13867
|
+
offScriptPolicy?: CreateScriptedCustomerFlowInput.OffScriptPolicy | null;
|
|
13868
|
+
|
|
13869
|
+
/**
|
|
13870
|
+
* How closely a run follows the script. LOOSE (default) hands the whole script to
|
|
13871
|
+
* the simulated customer as one prompt; it keeps the call moving whatever your
|
|
13872
|
+
* agent says. STRICT runs the script as a state machine on the agent service: at
|
|
13873
|
+
* every agent step the simulated customer waits, silent, until your agent has said
|
|
13874
|
+
* the expected line, and only then moves on. Scripted flows only; STRICT needs the
|
|
13875
|
+
* agent-service transport and is not available on realtime models. (LOOSE is the
|
|
13876
|
+
* default.)
|
|
13877
|
+
*/
|
|
13878
|
+
scriptAdherence?: 'LOOSE' | 'STRICT';
|
|
10928
13879
|
}
|
|
10929
13880
|
|
|
10930
13881
|
export namespace CreateScriptedCustomerFlowInput {
|
|
@@ -10934,6 +13885,30 @@ export declare namespace CustomerFlowCreateParams {
|
|
|
10934
13885
|
*/
|
|
10935
13886
|
prompt: string;
|
|
10936
13887
|
}
|
|
13888
|
+
|
|
13889
|
+
/**
|
|
13890
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
13891
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
13892
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
13893
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
13894
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
13895
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
13896
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
13897
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
13898
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
13899
|
+
* AGENT_TURN step can carry its own.
|
|
13900
|
+
*/
|
|
13901
|
+
export interface OffScriptPolicy {
|
|
13902
|
+
maxAttempts: number;
|
|
13903
|
+
|
|
13904
|
+
reaction: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY';
|
|
13905
|
+
|
|
13906
|
+
then: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE';
|
|
13907
|
+
|
|
13908
|
+
sayLine?: string | null;
|
|
13909
|
+
|
|
13910
|
+
waitSeconds?: number | null;
|
|
13911
|
+
}
|
|
10937
13912
|
}
|
|
10938
13913
|
|
|
10939
13914
|
export interface CreateImprovCustomerFlowInput {
|
|
@@ -11037,6 +14012,31 @@ export interface CustomerFlowUpdateParams {
|
|
|
11037
14012
|
|
|
11038
14013
|
description?: string | null;
|
|
11039
14014
|
|
|
14015
|
+
/**
|
|
14016
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
14017
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
14018
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
14019
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
14020
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
14021
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
14022
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
14023
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
14024
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
14025
|
+
* AGENT_TURN step can carry its own.
|
|
14026
|
+
*/
|
|
14027
|
+
offScriptPolicy?: CustomerFlowUpdateParams.OffScriptPolicy | null;
|
|
14028
|
+
|
|
14029
|
+
/**
|
|
14030
|
+
* Scripted flows only. How closely a run follows the script. LOOSE (default) hands
|
|
14031
|
+
* the whole script to the simulated customer as one prompt; it keeps the call
|
|
14032
|
+
* moving whatever your agent says. STRICT runs the script as a state machine on
|
|
14033
|
+
* the agent service: at every agent step the simulated customer waits, silent,
|
|
14034
|
+
* until your agent has said the expected line, and only then moves on. Scripted
|
|
14035
|
+
* flows only; STRICT needs the agent-service transport and is not available on
|
|
14036
|
+
* realtime models.
|
|
14037
|
+
*/
|
|
14038
|
+
scriptAdherence?: 'LOOSE' | 'STRICT';
|
|
14039
|
+
|
|
11040
14040
|
title?: string;
|
|
11041
14041
|
}
|
|
11042
14042
|
|
|
@@ -11047,6 +14047,30 @@ export namespace CustomerFlowUpdateParams {
|
|
|
11047
14047
|
*/
|
|
11048
14048
|
prompt: string;
|
|
11049
14049
|
}
|
|
14050
|
+
|
|
14051
|
+
/**
|
|
14052
|
+
* STRICT only. What the simulated customer does when your agent does not say the
|
|
14053
|
+
* expected line. Each unmatched agent utterance is an attempt: `reaction` runs per
|
|
14054
|
+
* attempt (STAY_SILENT, REPEAT its last scripted line, RESPOND once in character
|
|
14055
|
+
* without moving on, or SAY `sayLine`), and `then` runs when attempts reach
|
|
14056
|
+
* `maxAttempts` or your agent stays silent for `waitSeconds` (HANG_UP ends the
|
|
14057
|
+
* call with ended reason SCRIPT_DIVERGED, HANG_UP_INVALIDATE ends it the same way
|
|
14058
|
+
* and invalidates the run so it is scored by nothing and counted nowhere, MOVE_ON
|
|
14059
|
+
* advances anyway, ADAPT hands the rest of the call to loose behaviour). Null:
|
|
14060
|
+
* stay silent, 3 attempts, hang up. The default for every agent step; an
|
|
14061
|
+
* AGENT_TURN step can carry its own.
|
|
14062
|
+
*/
|
|
14063
|
+
export interface OffScriptPolicy {
|
|
14064
|
+
maxAttempts: number;
|
|
14065
|
+
|
|
14066
|
+
reaction: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY';
|
|
14067
|
+
|
|
14068
|
+
then: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE';
|
|
14069
|
+
|
|
14070
|
+
sayLine?: string | null;
|
|
14071
|
+
|
|
14072
|
+
waitSeconds?: number | null;
|
|
14073
|
+
}
|
|
11050
14074
|
}
|
|
11051
14075
|
|
|
11052
14076
|
export interface CustomerFlowListParams {
|
|
@@ -11061,6 +14085,8 @@ export interface CustomerFlowListParams {
|
|
|
11061
14085
|
type?: 'SCRIPTED' | 'IMPROV' | 'VOICEMAIL';
|
|
11062
14086
|
}
|
|
11063
14087
|
|
|
14088
|
+
export interface CustomerFlowDuplicateParams {}
|
|
14089
|
+
|
|
11064
14090
|
export interface CustomerFlowReplaceGraphParams {
|
|
11065
14091
|
/**
|
|
11066
14092
|
* The complete graph. This replaces the flow's existing steps rather than merging
|
|
@@ -11117,12 +14143,14 @@ export declare namespace CustomerFlow {
|
|
|
11117
14143
|
type CustomerFlowUpdateResponse as CustomerFlowUpdateResponse,
|
|
11118
14144
|
type CustomerFlowListResponse as CustomerFlowListResponse,
|
|
11119
14145
|
type CustomerFlowDeleteResponse as CustomerFlowDeleteResponse,
|
|
14146
|
+
type CustomerFlowDuplicateResponse as CustomerFlowDuplicateResponse,
|
|
11120
14147
|
type CustomerFlowGetByIDResponse as CustomerFlowGetByIDResponse,
|
|
11121
14148
|
type CustomerFlowReplaceGraphResponse as CustomerFlowReplaceGraphResponse,
|
|
11122
14149
|
type CustomerFlowUpdateHappyPathResponse as CustomerFlowUpdateHappyPathResponse,
|
|
11123
14150
|
type CustomerFlowCreateParams as CustomerFlowCreateParams,
|
|
11124
14151
|
type CustomerFlowUpdateParams as CustomerFlowUpdateParams,
|
|
11125
14152
|
type CustomerFlowListParams as CustomerFlowListParams,
|
|
14153
|
+
type CustomerFlowDuplicateParams as CustomerFlowDuplicateParams,
|
|
11126
14154
|
type CustomerFlowReplaceGraphParams as CustomerFlowReplaceGraphParams,
|
|
11127
14155
|
type CustomerFlowUpdateHappyPathParams as CustomerFlowUpdateHappyPathParams,
|
|
11128
14156
|
};
|