@babelforce/babelconnect-sdk 0.10.0 → 0.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/README.md +5 -0
- package/dist/client.d.ts +51 -1
- package/dist/client.js +109 -3
- package/dist/embed/iife-entry.d.ts +32 -0
- package/dist/embed/iife-entry.js +28 -0
- package/dist/embed/index.d.ts +44 -4
- package/dist/embed/index.js +68 -16
- package/dist/gen/babelconnect/v1/babelconnect_connect.d.ts +49 -1
- package/dist/gen/babelconnect/v1/babelconnect_connect.js +49 -1
- package/dist/gen/babelconnect/v1/babelconnect_pb.d.ts +711 -1
- package/dist/gen/babelconnect/v1/babelconnect_pb.js +934 -1
- package/dist/version.d.ts +1 -0
- package/dist/version.js +3 -0
- package/dist/web/babelconnect-embed.iife.js +1 -0
- package/package.json +5 -2
- package/CHANGELOG.md +0 -18
|
@@ -52,6 +52,93 @@ proto3.util.setEnumType(AgentState, "babelconnect.v1.AgentState", [
|
|
|
52
52
|
{ no: 6, name: "AGENT_STATE_RINGING" },
|
|
53
53
|
{ no: 7, name: "AGENT_STATE_BUSY" },
|
|
54
54
|
]);
|
|
55
|
+
/**
|
|
56
|
+
* CampaignMemberState mirrors the backend's AgentStatus.Status enum exactly
|
|
57
|
+
* (sbf/services AgentStatus.groovy) — the predictive-dialer campaign
|
|
58
|
+
* membership lifecycle: offline -> logging_in -> waiting -> in_progress ->
|
|
59
|
+
* disposition (-> waiting for the next lead), with idle as the paused branch
|
|
60
|
+
* (waiting/logging_in <-> idle via pause/resume) and leave returning to
|
|
61
|
+
* offline from any state.
|
|
62
|
+
*
|
|
63
|
+
* @generated from enum babelconnect.v1.CampaignMemberState
|
|
64
|
+
*/
|
|
65
|
+
export var CampaignMemberState;
|
|
66
|
+
(function (CampaignMemberState) {
|
|
67
|
+
/**
|
|
68
|
+
* @generated from enum value: CAMPAIGN_MEMBER_STATE_UNSPECIFIED = 0;
|
|
69
|
+
*/
|
|
70
|
+
CampaignMemberState[CampaignMemberState["UNSPECIFIED"] = 0] = "UNSPECIFIED";
|
|
71
|
+
/**
|
|
72
|
+
* @generated from enum value: CAMPAIGN_MEMBER_STATE_OFFLINE = 1;
|
|
73
|
+
*/
|
|
74
|
+
CampaignMemberState[CampaignMemberState["OFFLINE"] = 1] = "OFFLINE";
|
|
75
|
+
/**
|
|
76
|
+
* @generated from enum value: CAMPAIGN_MEMBER_STATE_LOGGING_IN = 2;
|
|
77
|
+
*/
|
|
78
|
+
CampaignMemberState[CampaignMemberState["LOGGING_IN"] = 2] = "LOGGING_IN";
|
|
79
|
+
/**
|
|
80
|
+
* @generated from enum value: CAMPAIGN_MEMBER_STATE_WAITING = 3;
|
|
81
|
+
*/
|
|
82
|
+
CampaignMemberState[CampaignMemberState["WAITING"] = 3] = "WAITING";
|
|
83
|
+
/**
|
|
84
|
+
* paused
|
|
85
|
+
*
|
|
86
|
+
* @generated from enum value: CAMPAIGN_MEMBER_STATE_IDLE = 4;
|
|
87
|
+
*/
|
|
88
|
+
CampaignMemberState[CampaignMemberState["IDLE"] = 4] = "IDLE";
|
|
89
|
+
/**
|
|
90
|
+
* @generated from enum value: CAMPAIGN_MEMBER_STATE_IN_PROGRESS = 5;
|
|
91
|
+
*/
|
|
92
|
+
CampaignMemberState[CampaignMemberState["IN_PROGRESS"] = 5] = "IN_PROGRESS";
|
|
93
|
+
/**
|
|
94
|
+
* @generated from enum value: CAMPAIGN_MEMBER_STATE_DISPOSITION = 6;
|
|
95
|
+
*/
|
|
96
|
+
CampaignMemberState[CampaignMemberState["DISPOSITION"] = 6] = "DISPOSITION";
|
|
97
|
+
})(CampaignMemberState || (CampaignMemberState = {}));
|
|
98
|
+
// Retrieve enum metadata with: proto3.getEnumType(CampaignMemberState)
|
|
99
|
+
proto3.util.setEnumType(CampaignMemberState, "babelconnect.v1.CampaignMemberState", [
|
|
100
|
+
{ no: 0, name: "CAMPAIGN_MEMBER_STATE_UNSPECIFIED" },
|
|
101
|
+
{ no: 1, name: "CAMPAIGN_MEMBER_STATE_OFFLINE" },
|
|
102
|
+
{ no: 2, name: "CAMPAIGN_MEMBER_STATE_LOGGING_IN" },
|
|
103
|
+
{ no: 3, name: "CAMPAIGN_MEMBER_STATE_WAITING" },
|
|
104
|
+
{ no: 4, name: "CAMPAIGN_MEMBER_STATE_IDLE" },
|
|
105
|
+
{ no: 5, name: "CAMPAIGN_MEMBER_STATE_IN_PROGRESS" },
|
|
106
|
+
{ no: 6, name: "CAMPAIGN_MEMBER_STATE_DISPOSITION" },
|
|
107
|
+
]);
|
|
108
|
+
/**
|
|
109
|
+
* TransferTargetKind discriminates a TransferTarget. Mirrors the backend's
|
|
110
|
+
* TransferTargetItem.Type enum exactly (agent/number/application — there is no
|
|
111
|
+
* "phonebook" kind on the backend; bc-v2's UI groups results that way, but the
|
|
112
|
+
* wire type only ever carries these three).
|
|
113
|
+
*
|
|
114
|
+
* @generated from enum babelconnect.v1.TransferTargetKind
|
|
115
|
+
*/
|
|
116
|
+
export var TransferTargetKind;
|
|
117
|
+
(function (TransferTargetKind) {
|
|
118
|
+
/**
|
|
119
|
+
* @generated from enum value: TRANSFER_TARGET_KIND_UNSPECIFIED = 0;
|
|
120
|
+
*/
|
|
121
|
+
TransferTargetKind[TransferTargetKind["UNSPECIFIED"] = 0] = "UNSPECIFIED";
|
|
122
|
+
/**
|
|
123
|
+
* @generated from enum value: TRANSFER_TARGET_KIND_AGENT = 1;
|
|
124
|
+
*/
|
|
125
|
+
TransferTargetKind[TransferTargetKind["AGENT"] = 1] = "AGENT";
|
|
126
|
+
/**
|
|
127
|
+
* @generated from enum value: TRANSFER_TARGET_KIND_NUMBER = 2;
|
|
128
|
+
*/
|
|
129
|
+
TransferTargetKind[TransferTargetKind["NUMBER"] = 2] = "NUMBER";
|
|
130
|
+
/**
|
|
131
|
+
* @generated from enum value: TRANSFER_TARGET_KIND_APPLICATION = 3;
|
|
132
|
+
*/
|
|
133
|
+
TransferTargetKind[TransferTargetKind["APPLICATION"] = 3] = "APPLICATION";
|
|
134
|
+
})(TransferTargetKind || (TransferTargetKind = {}));
|
|
135
|
+
// Retrieve enum metadata with: proto3.getEnumType(TransferTargetKind)
|
|
136
|
+
proto3.util.setEnumType(TransferTargetKind, "babelconnect.v1.TransferTargetKind", [
|
|
137
|
+
{ no: 0, name: "TRANSFER_TARGET_KIND_UNSPECIFIED" },
|
|
138
|
+
{ no: 1, name: "TRANSFER_TARGET_KIND_AGENT" },
|
|
139
|
+
{ no: 2, name: "TRANSFER_TARGET_KIND_NUMBER" },
|
|
140
|
+
{ no: 3, name: "TRANSFER_TARGET_KIND_APPLICATION" },
|
|
141
|
+
]);
|
|
55
142
|
/**
|
|
56
143
|
* @generated from enum babelconnect.v1.CallDirection
|
|
57
144
|
*/
|
|
@@ -1086,6 +1173,35 @@ export class AgentInfo extends Message {
|
|
|
1086
1173
|
* @generated from field: repeated babelconnect.v1.Account accounts = 19;
|
|
1087
1174
|
*/
|
|
1088
1175
|
accounts = [];
|
|
1176
|
+
/**
|
|
1177
|
+
* The agent's own email (GET /agent/me item.email — distinct from `username`,
|
|
1178
|
+
* which is the *login* identity from user/me/introspection and may differ).
|
|
1179
|
+
* Populated for the embedding bridge's legacy-shaped `agent.loaded` payload
|
|
1180
|
+
* (EMB20, bc-connect parity) — bc-connect hosts match/route on it.
|
|
1181
|
+
*
|
|
1182
|
+
* @generated from field: string email = 20;
|
|
1183
|
+
*/
|
|
1184
|
+
email = "";
|
|
1185
|
+
/**
|
|
1186
|
+
* Subset of `available_numbers` the backend marks SMS-capable (GET
|
|
1187
|
+
* /api/v2/agent/numbers item `sms`, sourced from core_number.sms_enabled;
|
|
1188
|
+
* mirrors bc-v2's AgentNumberFreeText.vue `smsOnly` filter). Drives the SMS
|
|
1189
|
+
* composer's From picker (SMSC4); empty/unknown ⇒ client falls back to
|
|
1190
|
+
* `available_numbers` (see docs/designs/messaging.md).
|
|
1191
|
+
*
|
|
1192
|
+
* @generated from field: repeated string sms_capable_numbers = 21;
|
|
1193
|
+
*/
|
|
1194
|
+
smsCapableNumbers = [];
|
|
1195
|
+
/**
|
|
1196
|
+
* Outbound-dialer (predictive campaign) membership state — folded from the
|
|
1197
|
+
* `/agent/{id}/obd` Faye push plus a GET /agent/outbound/status enrichment
|
|
1198
|
+
* read (OBDA1–4). Unset/UNSPECIFIED means the agent has never touched a
|
|
1199
|
+
* campaign this session; explicit OFFLINE means they left/aren't in one.
|
|
1200
|
+
* See docs/designs/obd.md.
|
|
1201
|
+
*
|
|
1202
|
+
* @generated from field: babelconnect.v1.CampaignStatus campaign_status = 22;
|
|
1203
|
+
*/
|
|
1204
|
+
campaignStatus;
|
|
1089
1205
|
constructor(data) {
|
|
1090
1206
|
super();
|
|
1091
1207
|
proto3.util.initPartial(data, this);
|
|
@@ -1112,6 +1228,9 @@ export class AgentInfo extends Message {
|
|
|
1112
1228
|
{ no: 17, name: "account_name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1113
1229
|
{ no: 18, name: "line_blocked", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
1114
1230
|
{ no: 19, name: "accounts", kind: "message", T: Account, repeated: true },
|
|
1231
|
+
{ no: 20, name: "email", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1232
|
+
{ no: 21, name: "sms_capable_numbers", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
|
|
1233
|
+
{ no: 22, name: "campaign_status", kind: "message", T: CampaignStatus },
|
|
1115
1234
|
]);
|
|
1116
1235
|
static fromBinary(bytes, options) {
|
|
1117
1236
|
return new AgentInfo().fromBinary(bytes, options);
|
|
@@ -1126,6 +1245,236 @@ export class AgentInfo extends Message {
|
|
|
1126
1245
|
return proto3.util.equals(AgentInfo, a, b);
|
|
1127
1246
|
}
|
|
1128
1247
|
}
|
|
1248
|
+
/**
|
|
1249
|
+
* CampaignStatus is the agent's outbound-dialer campaign membership envelope
|
|
1250
|
+
* (OBDA1–4 CORE). `campaign_id`/`campaign_name` and `state` come from a GET
|
|
1251
|
+
* /agent/outbound/status read (backend: ObdAgentService.getStatus); `state`
|
|
1252
|
+
* and `last_reason` are additionally kept live by the `/agent/{id}/obd` Faye
|
|
1253
|
+
* push (AgentPushService.pushObdEvent — that push carries ONLY status +
|
|
1254
|
+
* last_reason, never campaign/lead, hence the enrichment read). `last_reason`
|
|
1255
|
+
* mirrors the backend's AgentStatus.Reason enum as a lowercase string (e.g.
|
|
1256
|
+
* "unreachable", "no_answer", "busy", "answer", "hungup", "none") — kept as a
|
|
1257
|
+
* string rather than a wire enum since the client only ever compares it
|
|
1258
|
+
* against "unreachable" for the OBDA4 toast. `paused` is a convenience mirror
|
|
1259
|
+
* of `state == CAMPAIGN_MEMBER_STATE_IDLE`. The lead the agent is currently
|
|
1260
|
+
* dialing, disposition reasons, and live campaign metrics are additive fields
|
|
1261
|
+
* below (OBDB1/OBDD1) layered on top of this envelope.
|
|
1262
|
+
*
|
|
1263
|
+
* @generated from message babelconnect.v1.CampaignStatus
|
|
1264
|
+
*/
|
|
1265
|
+
export class CampaignStatus extends Message {
|
|
1266
|
+
/**
|
|
1267
|
+
* @generated from field: string campaign_id = 1;
|
|
1268
|
+
*/
|
|
1269
|
+
campaignId = "";
|
|
1270
|
+
/**
|
|
1271
|
+
* @generated from field: string campaign_name = 2;
|
|
1272
|
+
*/
|
|
1273
|
+
campaignName = "";
|
|
1274
|
+
/**
|
|
1275
|
+
* @generated from field: babelconnect.v1.CampaignMemberState state = 3;
|
|
1276
|
+
*/
|
|
1277
|
+
state = CampaignMemberState.UNSPECIFIED;
|
|
1278
|
+
/**
|
|
1279
|
+
* @generated from field: bool paused = 4;
|
|
1280
|
+
*/
|
|
1281
|
+
paused = false;
|
|
1282
|
+
/**
|
|
1283
|
+
* @generated from field: string last_reason = 5;
|
|
1284
|
+
*/
|
|
1285
|
+
lastReason = "";
|
|
1286
|
+
/**
|
|
1287
|
+
* unix seconds this state was entered/last confirmed
|
|
1288
|
+
*
|
|
1289
|
+
* @generated from field: int64 since = 6;
|
|
1290
|
+
*/
|
|
1291
|
+
since = protoInt64.zero;
|
|
1292
|
+
/**
|
|
1293
|
+
* lead is the customer the dialer connected the agent to (OBDB1) — set once
|
|
1294
|
+
* GET /agent/outbound/status's `lead` sub-object is non-empty (IN_PROGRESS/
|
|
1295
|
+
* DISPOSITION), unset otherwise. Also kept live by a genuine backend push (a
|
|
1296
|
+
* `cti.outbound.lead` Faye event — sbf/services AgentCtiService#pushLead,
|
|
1297
|
+
* CTIA3) that arrives the moment the dialer connects a lead, ahead of the
|
|
1298
|
+
* next enrichment poll.
|
|
1299
|
+
*
|
|
1300
|
+
* @generated from field: babelconnect.v1.Lead lead = 7;
|
|
1301
|
+
*/
|
|
1302
|
+
lead;
|
|
1303
|
+
/**
|
|
1304
|
+
* metrics is the campaign's live pacing snapshot (OBDD1), refreshed
|
|
1305
|
+
* alongside the enrichment read while `state == IDLE` (paused) — the only
|
|
1306
|
+
* state the Outbound tab shows it in; unset otherwise (and left unset if the
|
|
1307
|
+
* GET /agent/outbound/metrics read 404s, e.g. between polls).
|
|
1308
|
+
*
|
|
1309
|
+
* @generated from field: babelconnect.v1.CampaignMetrics metrics = 8;
|
|
1310
|
+
*/
|
|
1311
|
+
metrics;
|
|
1312
|
+
constructor(data) {
|
|
1313
|
+
super();
|
|
1314
|
+
proto3.util.initPartial(data, this);
|
|
1315
|
+
}
|
|
1316
|
+
static runtime = proto3;
|
|
1317
|
+
static typeName = "babelconnect.v1.CampaignStatus";
|
|
1318
|
+
static fields = proto3.util.newFieldList(() => [
|
|
1319
|
+
{ no: 1, name: "campaign_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1320
|
+
{ no: 2, name: "campaign_name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1321
|
+
{ no: 3, name: "state", kind: "enum", T: proto3.getEnumType(CampaignMemberState) },
|
|
1322
|
+
{ no: 4, name: "paused", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
1323
|
+
{ no: 5, name: "last_reason", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1324
|
+
{ no: 6, name: "since", kind: "scalar", T: 3 /* ScalarType.INT64 */ },
|
|
1325
|
+
{ no: 7, name: "lead", kind: "message", T: Lead },
|
|
1326
|
+
{ no: 8, name: "metrics", kind: "message", T: CampaignMetrics },
|
|
1327
|
+
]);
|
|
1328
|
+
static fromBinary(bytes, options) {
|
|
1329
|
+
return new CampaignStatus().fromBinary(bytes, options);
|
|
1330
|
+
}
|
|
1331
|
+
static fromJson(jsonValue, options) {
|
|
1332
|
+
return new CampaignStatus().fromJson(jsonValue, options);
|
|
1333
|
+
}
|
|
1334
|
+
static fromJsonString(jsonString, options) {
|
|
1335
|
+
return new CampaignStatus().fromJsonString(jsonString, options);
|
|
1336
|
+
}
|
|
1337
|
+
static equals(a, b) {
|
|
1338
|
+
return proto3.util.equals(CampaignStatus, a, b);
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1341
|
+
/**
|
|
1342
|
+
* Lead is the customer the outbound dialer connected the agent to (OBDB1),
|
|
1343
|
+
* grounded in GET /agent/outbound/status's `lead` sub-object (sbf/services
|
|
1344
|
+
* ObdAgentService#getStatus) and the `cti.outbound.lead` Faye push's `body`
|
|
1345
|
+
* (AgentPushMessages.Lead.LeadBody, CTIA3) — both share the uid/number/data
|
|
1346
|
+
* shape; `id`/`rank` are only present on the richer (list-enriched) form the
|
|
1347
|
+
* GET read can return. `id` is the internal lead-list-item id — DISTINCT from
|
|
1348
|
+
* `uid`, the customer-provided identifier the OBDB1 acceptance calls the
|
|
1349
|
+
* lead's "id" in the UI.
|
|
1350
|
+
*
|
|
1351
|
+
* @generated from message babelconnect.v1.Lead
|
|
1352
|
+
*/
|
|
1353
|
+
export class Lead extends Message {
|
|
1354
|
+
/**
|
|
1355
|
+
* internal lead-list-item id (uuid); may be empty
|
|
1356
|
+
*
|
|
1357
|
+
* @generated from field: string id = 1;
|
|
1358
|
+
*/
|
|
1359
|
+
id = "";
|
|
1360
|
+
/**
|
|
1361
|
+
* customer-provided lead identifier — the UI's "id"
|
|
1362
|
+
*
|
|
1363
|
+
* @generated from field: string uid = 2;
|
|
1364
|
+
*/
|
|
1365
|
+
uid = "";
|
|
1366
|
+
/**
|
|
1367
|
+
* @generated from field: string number = 3;
|
|
1368
|
+
*/
|
|
1369
|
+
number = "";
|
|
1370
|
+
/**
|
|
1371
|
+
* @generated from field: int32 rank = 4;
|
|
1372
|
+
*/
|
|
1373
|
+
rank = 0;
|
|
1374
|
+
/**
|
|
1375
|
+
* arbitrary customer-supplied key/values
|
|
1376
|
+
*
|
|
1377
|
+
* @generated from field: map<string, string> data = 5;
|
|
1378
|
+
*/
|
|
1379
|
+
data = {};
|
|
1380
|
+
constructor(data) {
|
|
1381
|
+
super();
|
|
1382
|
+
proto3.util.initPartial(data, this);
|
|
1383
|
+
}
|
|
1384
|
+
static runtime = proto3;
|
|
1385
|
+
static typeName = "babelconnect.v1.Lead";
|
|
1386
|
+
static fields = proto3.util.newFieldList(() => [
|
|
1387
|
+
{ no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1388
|
+
{ no: 2, name: "uid", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1389
|
+
{ no: 3, name: "number", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1390
|
+
{ no: 4, name: "rank", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
|
|
1391
|
+
{ no: 5, name: "data", kind: "map", K: 9 /* ScalarType.STRING */, V: { kind: "scalar", T: 9 /* ScalarType.STRING */ } },
|
|
1392
|
+
]);
|
|
1393
|
+
static fromBinary(bytes, options) {
|
|
1394
|
+
return new Lead().fromBinary(bytes, options);
|
|
1395
|
+
}
|
|
1396
|
+
static fromJson(jsonValue, options) {
|
|
1397
|
+
return new Lead().fromJson(jsonValue, options);
|
|
1398
|
+
}
|
|
1399
|
+
static fromJsonString(jsonString, options) {
|
|
1400
|
+
return new Lead().fromJsonString(jsonString, options);
|
|
1401
|
+
}
|
|
1402
|
+
static equals(a, b) {
|
|
1403
|
+
return proto3.util.equals(Lead, a, b);
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1406
|
+
/**
|
|
1407
|
+
* CampaignMetrics is the campaign's live pacing snapshot (OBDD1), grounded in
|
|
1408
|
+
* GET /agent/outbound/metrics's flat dot-key map (sbf/services
|
|
1409
|
+
* ObdController#metrics, itself a filtered subset of Vicidial's realtime
|
|
1410
|
+
* report) — always this exact 6-key subset, never more.
|
|
1411
|
+
*
|
|
1412
|
+
* @generated from message babelconnect.v1.CampaignMetrics
|
|
1413
|
+
*/
|
|
1414
|
+
export class CampaignMetrics extends Message {
|
|
1415
|
+
/**
|
|
1416
|
+
* agents.in_calls
|
|
1417
|
+
*
|
|
1418
|
+
* @generated from field: int32 agents_in_calls = 1;
|
|
1419
|
+
*/
|
|
1420
|
+
agentsInCalls = 0;
|
|
1421
|
+
/**
|
|
1422
|
+
* agents.in_disp
|
|
1423
|
+
*
|
|
1424
|
+
* @generated from field: int32 agents_in_disp = 2;
|
|
1425
|
+
*/
|
|
1426
|
+
agentsInDisp = 0;
|
|
1427
|
+
/**
|
|
1428
|
+
* agents.paused
|
|
1429
|
+
*
|
|
1430
|
+
* @generated from field: int32 agents_paused = 3;
|
|
1431
|
+
*/
|
|
1432
|
+
agentsPaused = 0;
|
|
1433
|
+
/**
|
|
1434
|
+
* agents.waiting
|
|
1435
|
+
*
|
|
1436
|
+
* @generated from field: int32 agents_waiting = 4;
|
|
1437
|
+
*/
|
|
1438
|
+
agentsWaiting = 0;
|
|
1439
|
+
/**
|
|
1440
|
+
* calls.being_placed
|
|
1441
|
+
*
|
|
1442
|
+
* @generated from field: int32 calls_being_placed = 5;
|
|
1443
|
+
*/
|
|
1444
|
+
callsBeingPlaced = 0;
|
|
1445
|
+
/**
|
|
1446
|
+
* calls.ringing
|
|
1447
|
+
*
|
|
1448
|
+
* @generated from field: int32 calls_ringing = 6;
|
|
1449
|
+
*/
|
|
1450
|
+
callsRinging = 0;
|
|
1451
|
+
constructor(data) {
|
|
1452
|
+
super();
|
|
1453
|
+
proto3.util.initPartial(data, this);
|
|
1454
|
+
}
|
|
1455
|
+
static runtime = proto3;
|
|
1456
|
+
static typeName = "babelconnect.v1.CampaignMetrics";
|
|
1457
|
+
static fields = proto3.util.newFieldList(() => [
|
|
1458
|
+
{ no: 1, name: "agents_in_calls", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
|
|
1459
|
+
{ no: 2, name: "agents_in_disp", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
|
|
1460
|
+
{ no: 3, name: "agents_paused", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
|
|
1461
|
+
{ no: 4, name: "agents_waiting", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
|
|
1462
|
+
{ no: 5, name: "calls_being_placed", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
|
|
1463
|
+
{ no: 6, name: "calls_ringing", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
|
|
1464
|
+
]);
|
|
1465
|
+
static fromBinary(bytes, options) {
|
|
1466
|
+
return new CampaignMetrics().fromBinary(bytes, options);
|
|
1467
|
+
}
|
|
1468
|
+
static fromJson(jsonValue, options) {
|
|
1469
|
+
return new CampaignMetrics().fromJson(jsonValue, options);
|
|
1470
|
+
}
|
|
1471
|
+
static fromJsonString(jsonString, options) {
|
|
1472
|
+
return new CampaignMetrics().fromJsonString(jsonString, options);
|
|
1473
|
+
}
|
|
1474
|
+
static equals(a, b) {
|
|
1475
|
+
return proto3.util.equals(CampaignMetrics, a, b);
|
|
1476
|
+
}
|
|
1477
|
+
}
|
|
1129
1478
|
/**
|
|
1130
1479
|
* PhonebookEntry is one dialable contact (or a recent number) for the dialer's
|
|
1131
1480
|
* autocomplete.
|
|
@@ -1245,6 +1594,140 @@ export class PhonebookResponse extends Message {
|
|
|
1245
1594
|
return proto3.util.equals(PhonebookResponse, a, b);
|
|
1246
1595
|
}
|
|
1247
1596
|
}
|
|
1597
|
+
/**
|
|
1598
|
+
* TransferTarget is one autocomplete result for a blind transfer / add-member
|
|
1599
|
+
* pick. `id` is the backend id to pass back on Transfer/AddConferenceMember
|
|
1600
|
+
* (an agent or application UUID; for a synthetic NUMBER result it is the raw
|
|
1601
|
+
* query, not a stable id — clients should send `number`, not `id`, for that
|
|
1602
|
+
* kind). `category` is the IVR module name (APPLICATION only, e.g.
|
|
1603
|
+
* "simpleMenu"); `browser` marks an agent reachable only via browser phone
|
|
1604
|
+
* (no PSTN number) — AGENT only.
|
|
1605
|
+
*
|
|
1606
|
+
* @generated from message babelconnect.v1.TransferTarget
|
|
1607
|
+
*/
|
|
1608
|
+
export class TransferTarget extends Message {
|
|
1609
|
+
/**
|
|
1610
|
+
* @generated from field: string id = 1;
|
|
1611
|
+
*/
|
|
1612
|
+
id = "";
|
|
1613
|
+
/**
|
|
1614
|
+
* @generated from field: babelconnect.v1.TransferTargetKind kind = 2;
|
|
1615
|
+
*/
|
|
1616
|
+
kind = TransferTargetKind.UNSPECIFIED;
|
|
1617
|
+
/**
|
|
1618
|
+
* @generated from field: string label = 3;
|
|
1619
|
+
*/
|
|
1620
|
+
label = "";
|
|
1621
|
+
/**
|
|
1622
|
+
* NUMBER kind, and AGENT kind when it has a PSTN number
|
|
1623
|
+
*
|
|
1624
|
+
* @generated from field: string number = 4;
|
|
1625
|
+
*/
|
|
1626
|
+
number = "";
|
|
1627
|
+
/**
|
|
1628
|
+
* APPLICATION only: the IVR module name
|
|
1629
|
+
*
|
|
1630
|
+
* @generated from field: string category = 5;
|
|
1631
|
+
*/
|
|
1632
|
+
category = "";
|
|
1633
|
+
/**
|
|
1634
|
+
* AGENT only: browser-phone-reachable, no PSTN number
|
|
1635
|
+
*
|
|
1636
|
+
* @generated from field: bool browser = 6;
|
|
1637
|
+
*/
|
|
1638
|
+
browser = false;
|
|
1639
|
+
constructor(data) {
|
|
1640
|
+
super();
|
|
1641
|
+
proto3.util.initPartial(data, this);
|
|
1642
|
+
}
|
|
1643
|
+
static runtime = proto3;
|
|
1644
|
+
static typeName = "babelconnect.v1.TransferTarget";
|
|
1645
|
+
static fields = proto3.util.newFieldList(() => [
|
|
1646
|
+
{ no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1647
|
+
{ no: 2, name: "kind", kind: "enum", T: proto3.getEnumType(TransferTargetKind) },
|
|
1648
|
+
{ no: 3, name: "label", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1649
|
+
{ no: 4, name: "number", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1650
|
+
{ no: 5, name: "category", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1651
|
+
{ no: 6, name: "browser", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
1652
|
+
]);
|
|
1653
|
+
static fromBinary(bytes, options) {
|
|
1654
|
+
return new TransferTarget().fromBinary(bytes, options);
|
|
1655
|
+
}
|
|
1656
|
+
static fromJson(jsonValue, options) {
|
|
1657
|
+
return new TransferTarget().fromJson(jsonValue, options);
|
|
1658
|
+
}
|
|
1659
|
+
static fromJsonString(jsonString, options) {
|
|
1660
|
+
return new TransferTarget().fromJsonString(jsonString, options);
|
|
1661
|
+
}
|
|
1662
|
+
static equals(a, b) {
|
|
1663
|
+
return proto3.util.equals(TransferTarget, a, b);
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
/**
|
|
1667
|
+
* TransferTargetsRequest / TransferTargetsResponse back the transfer-target
|
|
1668
|
+
* autocomplete (blind transfer + add-member dialogs). `query` filters
|
|
1669
|
+
* server-side; empty returns the default result set (a synthetic NUMBER
|
|
1670
|
+
* target only appears once `query` looks like a number).
|
|
1671
|
+
*
|
|
1672
|
+
* @generated from message babelconnect.v1.TransferTargetsRequest
|
|
1673
|
+
*/
|
|
1674
|
+
export class TransferTargetsRequest extends Message {
|
|
1675
|
+
/**
|
|
1676
|
+
* @generated from field: string query = 1;
|
|
1677
|
+
*/
|
|
1678
|
+
query = "";
|
|
1679
|
+
constructor(data) {
|
|
1680
|
+
super();
|
|
1681
|
+
proto3.util.initPartial(data, this);
|
|
1682
|
+
}
|
|
1683
|
+
static runtime = proto3;
|
|
1684
|
+
static typeName = "babelconnect.v1.TransferTargetsRequest";
|
|
1685
|
+
static fields = proto3.util.newFieldList(() => [
|
|
1686
|
+
{ no: 1, name: "query", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
1687
|
+
]);
|
|
1688
|
+
static fromBinary(bytes, options) {
|
|
1689
|
+
return new TransferTargetsRequest().fromBinary(bytes, options);
|
|
1690
|
+
}
|
|
1691
|
+
static fromJson(jsonValue, options) {
|
|
1692
|
+
return new TransferTargetsRequest().fromJson(jsonValue, options);
|
|
1693
|
+
}
|
|
1694
|
+
static fromJsonString(jsonString, options) {
|
|
1695
|
+
return new TransferTargetsRequest().fromJsonString(jsonString, options);
|
|
1696
|
+
}
|
|
1697
|
+
static equals(a, b) {
|
|
1698
|
+
return proto3.util.equals(TransferTargetsRequest, a, b);
|
|
1699
|
+
}
|
|
1700
|
+
}
|
|
1701
|
+
/**
|
|
1702
|
+
* @generated from message babelconnect.v1.TransferTargetsResponse
|
|
1703
|
+
*/
|
|
1704
|
+
export class TransferTargetsResponse extends Message {
|
|
1705
|
+
/**
|
|
1706
|
+
* @generated from field: repeated babelconnect.v1.TransferTarget targets = 1;
|
|
1707
|
+
*/
|
|
1708
|
+
targets = [];
|
|
1709
|
+
constructor(data) {
|
|
1710
|
+
super();
|
|
1711
|
+
proto3.util.initPartial(data, this);
|
|
1712
|
+
}
|
|
1713
|
+
static runtime = proto3;
|
|
1714
|
+
static typeName = "babelconnect.v1.TransferTargetsResponse";
|
|
1715
|
+
static fields = proto3.util.newFieldList(() => [
|
|
1716
|
+
{ no: 1, name: "targets", kind: "message", T: TransferTarget, repeated: true },
|
|
1717
|
+
]);
|
|
1718
|
+
static fromBinary(bytes, options) {
|
|
1719
|
+
return new TransferTargetsResponse().fromBinary(bytes, options);
|
|
1720
|
+
}
|
|
1721
|
+
static fromJson(jsonValue, options) {
|
|
1722
|
+
return new TransferTargetsResponse().fromJson(jsonValue, options);
|
|
1723
|
+
}
|
|
1724
|
+
static fromJsonString(jsonString, options) {
|
|
1725
|
+
return new TransferTargetsResponse().fromJsonString(jsonString, options);
|
|
1726
|
+
}
|
|
1727
|
+
static equals(a, b) {
|
|
1728
|
+
return proto3.util.equals(TransferTargetsResponse, a, b);
|
|
1729
|
+
}
|
|
1730
|
+
}
|
|
1248
1731
|
/**
|
|
1249
1732
|
* PresenceOption is one selectable agent presence — "Available" or a configured
|
|
1250
1733
|
* pause reason. `available` is whether the agent can receive calls in it.
|
|
@@ -1376,6 +1859,17 @@ export class CallState extends Message {
|
|
|
1376
1859
|
* @generated from field: repeated babelconnect.v1.IceServer ice_servers = 17;
|
|
1377
1860
|
*/
|
|
1378
1861
|
iceServers = [];
|
|
1862
|
+
/**
|
|
1863
|
+
* can_transfer_to_application is server-computed: true for inbound calls and
|
|
1864
|
+
* taken callbacks (source == CALL_SOURCE_CALLBACK), false otherwise. Plain
|
|
1865
|
+
* outbound calls must not be offered application (IVR module) transfer
|
|
1866
|
+
* targets — forwarding them into a queue module strands the agent
|
|
1867
|
+
* (DEV-549/B2-526). Clients gate the "App" transfer-target segment on this
|
|
1868
|
+
* flag instead of re-deriving the rule from direction/source themselves.
|
|
1869
|
+
*
|
|
1870
|
+
* @generated from field: bool can_transfer_to_application = 18;
|
|
1871
|
+
*/
|
|
1872
|
+
canTransferToApplication = false;
|
|
1379
1873
|
constructor(data) {
|
|
1380
1874
|
super();
|
|
1381
1875
|
proto3.util.initPartial(data, this);
|
|
@@ -1400,6 +1894,7 @@ export class CallState extends Message {
|
|
|
1400
1894
|
{ no: 15, name: "recording_tags", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
|
|
1401
1895
|
{ no: 16, name: "recording_flagged", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
1402
1896
|
{ no: 17, name: "ice_servers", kind: "message", T: IceServer, repeated: true },
|
|
1897
|
+
{ no: 18, name: "can_transfer_to_application", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
1403
1898
|
]);
|
|
1404
1899
|
static fromBinary(bytes, options) {
|
|
1405
1900
|
return new CallState().fromBinary(bytes, options);
|
|
@@ -1545,6 +2040,7 @@ export class StateUpdate extends Message {
|
|
|
1545
2040
|
{ no: 3, name: "patch", kind: "message", T: Patch, oneof: "update" },
|
|
1546
2041
|
{ no: 4, name: "error", kind: "message", T: Error, oneof: "update" },
|
|
1547
2042
|
{ no: 5, name: "keepalive", kind: "message", T: Keepalive, oneof: "update" },
|
|
2043
|
+
{ no: 6, name: "ping", kind: "message", T: Ping, oneof: "update" },
|
|
1548
2044
|
]);
|
|
1549
2045
|
static fromBinary(bytes, options) {
|
|
1550
2046
|
return new StateUpdate().fromBinary(bytes, options);
|
|
@@ -1590,6 +2086,43 @@ export class Keepalive extends Message {
|
|
|
1590
2086
|
return proto3.util.equals(Keepalive, a, b);
|
|
1591
2087
|
}
|
|
1592
2088
|
}
|
|
2089
|
+
/**
|
|
2090
|
+
* Ping is a liveness probe the server sends on the heartbeat tick (replacing the
|
|
2091
|
+
* bare Keepalive frame). The client echoes `seq` back in a Pong command; the server
|
|
2092
|
+
* measures round-trip time (RTT) from the reply and tracks per-session liveness.
|
|
2093
|
+
* Like Keepalive it keeps the connection warm, carries no state, and does NOT
|
|
2094
|
+
* advance `seq` — caches ignore it, and the reply is handled in the client's stream
|
|
2095
|
+
* loop, not the state reducer. (APP-A5/CALL-M6.)
|
|
2096
|
+
*
|
|
2097
|
+
* @generated from message babelconnect.v1.Ping
|
|
2098
|
+
*/
|
|
2099
|
+
export class Ping extends Message {
|
|
2100
|
+
/**
|
|
2101
|
+
* @generated from field: uint64 seq = 1;
|
|
2102
|
+
*/
|
|
2103
|
+
seq = protoInt64.zero;
|
|
2104
|
+
constructor(data) {
|
|
2105
|
+
super();
|
|
2106
|
+
proto3.util.initPartial(data, this);
|
|
2107
|
+
}
|
|
2108
|
+
static runtime = proto3;
|
|
2109
|
+
static typeName = "babelconnect.v1.Ping";
|
|
2110
|
+
static fields = proto3.util.newFieldList(() => [
|
|
2111
|
+
{ no: 1, name: "seq", kind: "scalar", T: 4 /* ScalarType.UINT64 */ },
|
|
2112
|
+
]);
|
|
2113
|
+
static fromBinary(bytes, options) {
|
|
2114
|
+
return new Ping().fromBinary(bytes, options);
|
|
2115
|
+
}
|
|
2116
|
+
static fromJson(jsonValue, options) {
|
|
2117
|
+
return new Ping().fromJson(jsonValue, options);
|
|
2118
|
+
}
|
|
2119
|
+
static fromJsonString(jsonString, options) {
|
|
2120
|
+
return new Ping().fromJsonString(jsonString, options);
|
|
2121
|
+
}
|
|
2122
|
+
static equals(a, b) {
|
|
2123
|
+
return proto3.util.equals(Ping, a, b);
|
|
2124
|
+
}
|
|
2125
|
+
}
|
|
1593
2126
|
/**
|
|
1594
2127
|
* Patch is an entity-level delta applied mechanically by the client cache:
|
|
1595
2128
|
* replace the agent block, upsert/remove a call by id, or set wrap-up.
|
|
@@ -1775,6 +2308,12 @@ export class Command extends Message {
|
|
|
1775
2308
|
{ no: 27, name: "mute_conference_member", kind: "message", T: MuteConferenceMember, oneof: "command" },
|
|
1776
2309
|
{ no: 28, name: "set_conversation_open", kind: "message", T: SetConversationOpen, oneof: "command" },
|
|
1777
2310
|
{ no: 29, name: "mark_conversation_read", kind: "message", T: MarkConversationRead, oneof: "command" },
|
|
2311
|
+
{ no: 30, name: "pong", kind: "message", T: Pong, oneof: "command" },
|
|
2312
|
+
{ no: 31, name: "join_campaign", kind: "message", T: JoinCampaign, oneof: "command" },
|
|
2313
|
+
{ no: 32, name: "leave_campaign", kind: "message", T: LeaveCampaign, oneof: "command" },
|
|
2314
|
+
{ no: 33, name: "pause_campaign", kind: "message", T: PauseCampaign, oneof: "command" },
|
|
2315
|
+
{ no: 34, name: "end_campaign_call", kind: "message", T: EndCampaignCall, oneof: "command" },
|
|
2316
|
+
{ no: 35, name: "dispose_call", kind: "message", T: DisposeCall, oneof: "command" },
|
|
1778
2317
|
]);
|
|
1779
2318
|
static fromBinary(bytes, options) {
|
|
1780
2319
|
return new Command().fromBinary(bytes, options);
|
|
@@ -1789,6 +2328,40 @@ export class Command extends Message {
|
|
|
1789
2328
|
return proto3.util.equals(Command, a, b);
|
|
1790
2329
|
}
|
|
1791
2330
|
}
|
|
2331
|
+
/**
|
|
2332
|
+
* Pong replies to a server Ping (StateUpdate.ping), echoing its `seq` so the server
|
|
2333
|
+
* can match it to the outstanding ping and compute RTT. Sent automatically by the
|
|
2334
|
+
* SDK from its stream-receive loop — not a user intent. (APP-A5/CALL-M6.)
|
|
2335
|
+
*
|
|
2336
|
+
* @generated from message babelconnect.v1.Pong
|
|
2337
|
+
*/
|
|
2338
|
+
export class Pong extends Message {
|
|
2339
|
+
/**
|
|
2340
|
+
* @generated from field: uint64 seq = 1;
|
|
2341
|
+
*/
|
|
2342
|
+
seq = protoInt64.zero;
|
|
2343
|
+
constructor(data) {
|
|
2344
|
+
super();
|
|
2345
|
+
proto3.util.initPartial(data, this);
|
|
2346
|
+
}
|
|
2347
|
+
static runtime = proto3;
|
|
2348
|
+
static typeName = "babelconnect.v1.Pong";
|
|
2349
|
+
static fields = proto3.util.newFieldList(() => [
|
|
2350
|
+
{ no: 1, name: "seq", kind: "scalar", T: 4 /* ScalarType.UINT64 */ },
|
|
2351
|
+
]);
|
|
2352
|
+
static fromBinary(bytes, options) {
|
|
2353
|
+
return new Pong().fromBinary(bytes, options);
|
|
2354
|
+
}
|
|
2355
|
+
static fromJson(jsonValue, options) {
|
|
2356
|
+
return new Pong().fromJson(jsonValue, options);
|
|
2357
|
+
}
|
|
2358
|
+
static fromJsonString(jsonString, options) {
|
|
2359
|
+
return new Pong().fromJsonString(jsonString, options);
|
|
2360
|
+
}
|
|
2361
|
+
static equals(a, b) {
|
|
2362
|
+
return proto3.util.equals(Pong, a, b);
|
|
2363
|
+
}
|
|
2364
|
+
}
|
|
1792
2365
|
/**
|
|
1793
2366
|
* @generated from message babelconnect.v1.Register
|
|
1794
2367
|
*/
|
|
@@ -2467,6 +3040,354 @@ export class SetAgentNumber extends Message {
|
|
|
2467
3040
|
return proto3.util.equals(SetAgentNumber, a, b);
|
|
2468
3041
|
}
|
|
2469
3042
|
}
|
|
3043
|
+
/**
|
|
3044
|
+
* Campaign is one outbound-dialer campaign the agent may join (the picker's
|
|
3045
|
+
* entries). `test_mode` drives the "name (live)" / "name (test)" label
|
|
3046
|
+
* (OBDA1). Sourced from GET /api/v2/agent/outbound/campaigns (sbf/services
|
|
3047
|
+
* ObdController#listCampaigns / ObdModel.Campaign.Simple).
|
|
3048
|
+
*
|
|
3049
|
+
* @generated from message babelconnect.v1.Campaign
|
|
3050
|
+
*/
|
|
3051
|
+
export class Campaign extends Message {
|
|
3052
|
+
/**
|
|
3053
|
+
* @generated from field: string id = 1;
|
|
3054
|
+
*/
|
|
3055
|
+
id = "";
|
|
3056
|
+
/**
|
|
3057
|
+
* @generated from field: string name = 2;
|
|
3058
|
+
*/
|
|
3059
|
+
name = "";
|
|
3060
|
+
/**
|
|
3061
|
+
* @generated from field: bool test_mode = 3;
|
|
3062
|
+
*/
|
|
3063
|
+
testMode = false;
|
|
3064
|
+
/**
|
|
3065
|
+
* @generated from field: bool active = 4;
|
|
3066
|
+
*/
|
|
3067
|
+
active = false;
|
|
3068
|
+
constructor(data) {
|
|
3069
|
+
super();
|
|
3070
|
+
proto3.util.initPartial(data, this);
|
|
3071
|
+
}
|
|
3072
|
+
static runtime = proto3;
|
|
3073
|
+
static typeName = "babelconnect.v1.Campaign";
|
|
3074
|
+
static fields = proto3.util.newFieldList(() => [
|
|
3075
|
+
{ no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
3076
|
+
{ no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
3077
|
+
{ no: 3, name: "test_mode", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
3078
|
+
{ no: 4, name: "active", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
3079
|
+
]);
|
|
3080
|
+
static fromBinary(bytes, options) {
|
|
3081
|
+
return new Campaign().fromBinary(bytes, options);
|
|
3082
|
+
}
|
|
3083
|
+
static fromJson(jsonValue, options) {
|
|
3084
|
+
return new Campaign().fromJson(jsonValue, options);
|
|
3085
|
+
}
|
|
3086
|
+
static fromJsonString(jsonString, options) {
|
|
3087
|
+
return new Campaign().fromJsonString(jsonString, options);
|
|
3088
|
+
}
|
|
3089
|
+
static equals(a, b) {
|
|
3090
|
+
return proto3.util.equals(Campaign, a, b);
|
|
3091
|
+
}
|
|
3092
|
+
}
|
|
3093
|
+
/**
|
|
3094
|
+
* ListCampaignsRequest / ListCampaignsResponse back the campaign picker
|
|
3095
|
+
* (OBDA1). Empty request: the server always asks the backend for active
|
|
3096
|
+
* campaigns only (`?active=true`) — there is no agent-facing use for
|
|
3097
|
+
* inactive ones.
|
|
3098
|
+
*
|
|
3099
|
+
* @generated from message babelconnect.v1.ListCampaignsRequest
|
|
3100
|
+
*/
|
|
3101
|
+
export class ListCampaignsRequest extends Message {
|
|
3102
|
+
constructor(data) {
|
|
3103
|
+
super();
|
|
3104
|
+
proto3.util.initPartial(data, this);
|
|
3105
|
+
}
|
|
3106
|
+
static runtime = proto3;
|
|
3107
|
+
static typeName = "babelconnect.v1.ListCampaignsRequest";
|
|
3108
|
+
static fields = proto3.util.newFieldList(() => []);
|
|
3109
|
+
static fromBinary(bytes, options) {
|
|
3110
|
+
return new ListCampaignsRequest().fromBinary(bytes, options);
|
|
3111
|
+
}
|
|
3112
|
+
static fromJson(jsonValue, options) {
|
|
3113
|
+
return new ListCampaignsRequest().fromJson(jsonValue, options);
|
|
3114
|
+
}
|
|
3115
|
+
static fromJsonString(jsonString, options) {
|
|
3116
|
+
return new ListCampaignsRequest().fromJsonString(jsonString, options);
|
|
3117
|
+
}
|
|
3118
|
+
static equals(a, b) {
|
|
3119
|
+
return proto3.util.equals(ListCampaignsRequest, a, b);
|
|
3120
|
+
}
|
|
3121
|
+
}
|
|
3122
|
+
/**
|
|
3123
|
+
* @generated from message babelconnect.v1.ListCampaignsResponse
|
|
3124
|
+
*/
|
|
3125
|
+
export class ListCampaignsResponse extends Message {
|
|
3126
|
+
/**
|
|
3127
|
+
* @generated from field: repeated babelconnect.v1.Campaign campaigns = 1;
|
|
3128
|
+
*/
|
|
3129
|
+
campaigns = [];
|
|
3130
|
+
constructor(data) {
|
|
3131
|
+
super();
|
|
3132
|
+
proto3.util.initPartial(data, this);
|
|
3133
|
+
}
|
|
3134
|
+
static runtime = proto3;
|
|
3135
|
+
static typeName = "babelconnect.v1.ListCampaignsResponse";
|
|
3136
|
+
static fields = proto3.util.newFieldList(() => [
|
|
3137
|
+
{ no: 1, name: "campaigns", kind: "message", T: Campaign, repeated: true },
|
|
3138
|
+
]);
|
|
3139
|
+
static fromBinary(bytes, options) {
|
|
3140
|
+
return new ListCampaignsResponse().fromBinary(bytes, options);
|
|
3141
|
+
}
|
|
3142
|
+
static fromJson(jsonValue, options) {
|
|
3143
|
+
return new ListCampaignsResponse().fromJson(jsonValue, options);
|
|
3144
|
+
}
|
|
3145
|
+
static fromJsonString(jsonString, options) {
|
|
3146
|
+
return new ListCampaignsResponse().fromJsonString(jsonString, options);
|
|
3147
|
+
}
|
|
3148
|
+
static equals(a, b) {
|
|
3149
|
+
return proto3.util.equals(ListCampaignsResponse, a, b);
|
|
3150
|
+
}
|
|
3151
|
+
}
|
|
3152
|
+
/**
|
|
3153
|
+
* JoinCampaign enters a campaign (POST /api/v2/agent/outbound/enter
|
|
3154
|
+
* {campaignId, paused}). `paused` mirrors the backend's own field (NOT
|
|
3155
|
+
* "unpause" — bc-v2's client sent that stale name, which the backend command
|
|
3156
|
+
* object silently ignores, defaulting `paused` true); the client normally
|
|
3157
|
+
* sends false so the agent starts `waiting` for a lead right away.
|
|
3158
|
+
*
|
|
3159
|
+
* @generated from message babelconnect.v1.JoinCampaign
|
|
3160
|
+
*/
|
|
3161
|
+
export class JoinCampaign extends Message {
|
|
3162
|
+
/**
|
|
3163
|
+
* @generated from field: string campaign_id = 1;
|
|
3164
|
+
*/
|
|
3165
|
+
campaignId = "";
|
|
3166
|
+
/**
|
|
3167
|
+
* @generated from field: bool paused = 2;
|
|
3168
|
+
*/
|
|
3169
|
+
paused = false;
|
|
3170
|
+
constructor(data) {
|
|
3171
|
+
super();
|
|
3172
|
+
proto3.util.initPartial(data, this);
|
|
3173
|
+
}
|
|
3174
|
+
static runtime = proto3;
|
|
3175
|
+
static typeName = "babelconnect.v1.JoinCampaign";
|
|
3176
|
+
static fields = proto3.util.newFieldList(() => [
|
|
3177
|
+
{ no: 1, name: "campaign_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
3178
|
+
{ no: 2, name: "paused", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
3179
|
+
]);
|
|
3180
|
+
static fromBinary(bytes, options) {
|
|
3181
|
+
return new JoinCampaign().fromBinary(bytes, options);
|
|
3182
|
+
}
|
|
3183
|
+
static fromJson(jsonValue, options) {
|
|
3184
|
+
return new JoinCampaign().fromJson(jsonValue, options);
|
|
3185
|
+
}
|
|
3186
|
+
static fromJsonString(jsonString, options) {
|
|
3187
|
+
return new JoinCampaign().fromJsonString(jsonString, options);
|
|
3188
|
+
}
|
|
3189
|
+
static equals(a, b) {
|
|
3190
|
+
return proto3.util.equals(JoinCampaign, a, b);
|
|
3191
|
+
}
|
|
3192
|
+
}
|
|
3193
|
+
/**
|
|
3194
|
+
* LeaveCampaign exits the current campaign (POST /api/v2/agent/outbound/leave
|
|
3195
|
+
* — no body; the backend resolves the agent's current campaign server-side).
|
|
3196
|
+
* Available both from the campaign selector row and from within an active
|
|
3197
|
+
* call (OBDA3).
|
|
3198
|
+
*
|
|
3199
|
+
* @generated from message babelconnect.v1.LeaveCampaign
|
|
3200
|
+
*/
|
|
3201
|
+
export class LeaveCampaign extends Message {
|
|
3202
|
+
constructor(data) {
|
|
3203
|
+
super();
|
|
3204
|
+
proto3.util.initPartial(data, this);
|
|
3205
|
+
}
|
|
3206
|
+
static runtime = proto3;
|
|
3207
|
+
static typeName = "babelconnect.v1.LeaveCampaign";
|
|
3208
|
+
static fields = proto3.util.newFieldList(() => []);
|
|
3209
|
+
static fromBinary(bytes, options) {
|
|
3210
|
+
return new LeaveCampaign().fromBinary(bytes, options);
|
|
3211
|
+
}
|
|
3212
|
+
static fromJson(jsonValue, options) {
|
|
3213
|
+
return new LeaveCampaign().fromJson(jsonValue, options);
|
|
3214
|
+
}
|
|
3215
|
+
static fromJsonString(jsonString, options) {
|
|
3216
|
+
return new LeaveCampaign().fromJsonString(jsonString, options);
|
|
3217
|
+
}
|
|
3218
|
+
static equals(a, b) {
|
|
3219
|
+
return proto3.util.equals(LeaveCampaign, a, b);
|
|
3220
|
+
}
|
|
3221
|
+
}
|
|
3222
|
+
/**
|
|
3223
|
+
* PauseCampaign pauses (`on=true`, POST .../pause) or resumes (`on=false`,
|
|
3224
|
+
* POST .../unpause) the campaign — no request body either way (OBDA2), same
|
|
3225
|
+
* on/off shape as Mute/Hold.
|
|
3226
|
+
*
|
|
3227
|
+
* @generated from message babelconnect.v1.PauseCampaign
|
|
3228
|
+
*/
|
|
3229
|
+
export class PauseCampaign extends Message {
|
|
3230
|
+
/**
|
|
3231
|
+
* @generated from field: bool on = 1;
|
|
3232
|
+
*/
|
|
3233
|
+
on = false;
|
|
3234
|
+
constructor(data) {
|
|
3235
|
+
super();
|
|
3236
|
+
proto3.util.initPartial(data, this);
|
|
3237
|
+
}
|
|
3238
|
+
static runtime = proto3;
|
|
3239
|
+
static typeName = "babelconnect.v1.PauseCampaign";
|
|
3240
|
+
static fields = proto3.util.newFieldList(() => [
|
|
3241
|
+
{ no: 1, name: "on", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
3242
|
+
]);
|
|
3243
|
+
static fromBinary(bytes, options) {
|
|
3244
|
+
return new PauseCampaign().fromBinary(bytes, options);
|
|
3245
|
+
}
|
|
3246
|
+
static fromJson(jsonValue, options) {
|
|
3247
|
+
return new PauseCampaign().fromJson(jsonValue, options);
|
|
3248
|
+
}
|
|
3249
|
+
static fromJsonString(jsonString, options) {
|
|
3250
|
+
return new PauseCampaign().fromJsonString(jsonString, options);
|
|
3251
|
+
}
|
|
3252
|
+
static equals(a, b) {
|
|
3253
|
+
return proto3.util.equals(PauseCampaign, a, b);
|
|
3254
|
+
}
|
|
3255
|
+
}
|
|
3256
|
+
/**
|
|
3257
|
+
* EndCampaignCall ends the agent's live campaign call (POST
|
|
3258
|
+
* /api/v2/agent/outbound/hangup — no body; OBDB2). Grounded distinct from the
|
|
3259
|
+
* generic Hangup: the backend's VicidialWrapperService#hangup both tells
|
|
3260
|
+
* Vicidial's own dialer to release the channel AND drives the campaign
|
|
3261
|
+
* member-state transition to DISPOSITION (sbf/services), neither of which a
|
|
3262
|
+
* plain SIP/media-plane hangup would trigger.
|
|
3263
|
+
*
|
|
3264
|
+
* @generated from message babelconnect.v1.EndCampaignCall
|
|
3265
|
+
*/
|
|
3266
|
+
export class EndCampaignCall extends Message {
|
|
3267
|
+
constructor(data) {
|
|
3268
|
+
super();
|
|
3269
|
+
proto3.util.initPartial(data, this);
|
|
3270
|
+
}
|
|
3271
|
+
static runtime = proto3;
|
|
3272
|
+
static typeName = "babelconnect.v1.EndCampaignCall";
|
|
3273
|
+
static fields = proto3.util.newFieldList(() => []);
|
|
3274
|
+
static fromBinary(bytes, options) {
|
|
3275
|
+
return new EndCampaignCall().fromBinary(bytes, options);
|
|
3276
|
+
}
|
|
3277
|
+
static fromJson(jsonValue, options) {
|
|
3278
|
+
return new EndCampaignCall().fromJson(jsonValue, options);
|
|
3279
|
+
}
|
|
3280
|
+
static fromJsonString(jsonString, options) {
|
|
3281
|
+
return new EndCampaignCall().fromJsonString(jsonString, options);
|
|
3282
|
+
}
|
|
3283
|
+
static equals(a, b) {
|
|
3284
|
+
return proto3.util.equals(EndCampaignCall, a, b);
|
|
3285
|
+
}
|
|
3286
|
+
}
|
|
3287
|
+
/**
|
|
3288
|
+
* DisposeCall records the outcome of a campaign call (POST
|
|
3289
|
+
* /api/v2/agent/outbound/dispose {code, callbackDate?} — OBDC1/OBDC2). `code`
|
|
3290
|
+
* is one of ListDispositionsResponse's codes (e.g. "no_answer", "callback").
|
|
3291
|
+
* `callback_date` is ISO `YYYY-MM-DDTHH:mmZZ` and is set ONLY for the
|
|
3292
|
+
* "callback" disposition (OBDC2) — omitted (empty) otherwise, matching the
|
|
3293
|
+
* backend command object's own optional field (grounded: a `pause` field also
|
|
3294
|
+
* exists on the backend but is `@ApiStatus(not_implemented)`, so it is
|
|
3295
|
+
* intentionally not exposed here).
|
|
3296
|
+
*
|
|
3297
|
+
* @generated from message babelconnect.v1.DisposeCall
|
|
3298
|
+
*/
|
|
3299
|
+
export class DisposeCall extends Message {
|
|
3300
|
+
/**
|
|
3301
|
+
* @generated from field: string code = 1;
|
|
3302
|
+
*/
|
|
3303
|
+
code = "";
|
|
3304
|
+
/**
|
|
3305
|
+
* @generated from field: string callback_date = 2;
|
|
3306
|
+
*/
|
|
3307
|
+
callbackDate = "";
|
|
3308
|
+
constructor(data) {
|
|
3309
|
+
super();
|
|
3310
|
+
proto3.util.initPartial(data, this);
|
|
3311
|
+
}
|
|
3312
|
+
static runtime = proto3;
|
|
3313
|
+
static typeName = "babelconnect.v1.DisposeCall";
|
|
3314
|
+
static fields = proto3.util.newFieldList(() => [
|
|
3315
|
+
{ no: 1, name: "code", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
3316
|
+
{ no: 2, name: "callback_date", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
3317
|
+
]);
|
|
3318
|
+
static fromBinary(bytes, options) {
|
|
3319
|
+
return new DisposeCall().fromBinary(bytes, options);
|
|
3320
|
+
}
|
|
3321
|
+
static fromJson(jsonValue, options) {
|
|
3322
|
+
return new DisposeCall().fromJson(jsonValue, options);
|
|
3323
|
+
}
|
|
3324
|
+
static fromJsonString(jsonString, options) {
|
|
3325
|
+
return new DisposeCall().fromJsonString(jsonString, options);
|
|
3326
|
+
}
|
|
3327
|
+
static equals(a, b) {
|
|
3328
|
+
return proto3.util.equals(DisposeCall, a, b);
|
|
3329
|
+
}
|
|
3330
|
+
}
|
|
3331
|
+
/**
|
|
3332
|
+
* ListDispositionsRequest / ListDispositionsResponse back the disposition
|
|
3333
|
+
* picker (OBDC1). Empty request: the list is a static global on the backend,
|
|
3334
|
+
* not campaign- or agent-scoped.
|
|
3335
|
+
*
|
|
3336
|
+
* @generated from message babelconnect.v1.ListDispositionsRequest
|
|
3337
|
+
*/
|
|
3338
|
+
export class ListDispositionsRequest extends Message {
|
|
3339
|
+
constructor(data) {
|
|
3340
|
+
super();
|
|
3341
|
+
proto3.util.initPartial(data, this);
|
|
3342
|
+
}
|
|
3343
|
+
static runtime = proto3;
|
|
3344
|
+
static typeName = "babelconnect.v1.ListDispositionsRequest";
|
|
3345
|
+
static fields = proto3.util.newFieldList(() => []);
|
|
3346
|
+
static fromBinary(bytes, options) {
|
|
3347
|
+
return new ListDispositionsRequest().fromBinary(bytes, options);
|
|
3348
|
+
}
|
|
3349
|
+
static fromJson(jsonValue, options) {
|
|
3350
|
+
return new ListDispositionsRequest().fromJson(jsonValue, options);
|
|
3351
|
+
}
|
|
3352
|
+
static fromJsonString(jsonString, options) {
|
|
3353
|
+
return new ListDispositionsRequest().fromJsonString(jsonString, options);
|
|
3354
|
+
}
|
|
3355
|
+
static equals(a, b) {
|
|
3356
|
+
return proto3.util.equals(ListDispositionsRequest, a, b);
|
|
3357
|
+
}
|
|
3358
|
+
}
|
|
3359
|
+
/**
|
|
3360
|
+
* @generated from message babelconnect.v1.ListDispositionsResponse
|
|
3361
|
+
*/
|
|
3362
|
+
export class ListDispositionsResponse extends Message {
|
|
3363
|
+
/**
|
|
3364
|
+
* raw codes, e.g. "no_answer", "callback"
|
|
3365
|
+
*
|
|
3366
|
+
* @generated from field: repeated string reasons = 1;
|
|
3367
|
+
*/
|
|
3368
|
+
reasons = [];
|
|
3369
|
+
constructor(data) {
|
|
3370
|
+
super();
|
|
3371
|
+
proto3.util.initPartial(data, this);
|
|
3372
|
+
}
|
|
3373
|
+
static runtime = proto3;
|
|
3374
|
+
static typeName = "babelconnect.v1.ListDispositionsResponse";
|
|
3375
|
+
static fields = proto3.util.newFieldList(() => [
|
|
3376
|
+
{ no: 1, name: "reasons", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
|
|
3377
|
+
]);
|
|
3378
|
+
static fromBinary(bytes, options) {
|
|
3379
|
+
return new ListDispositionsResponse().fromBinary(bytes, options);
|
|
3380
|
+
}
|
|
3381
|
+
static fromJson(jsonValue, options) {
|
|
3382
|
+
return new ListDispositionsResponse().fromJson(jsonValue, options);
|
|
3383
|
+
}
|
|
3384
|
+
static fromJsonString(jsonString, options) {
|
|
3385
|
+
return new ListDispositionsResponse().fromJsonString(jsonString, options);
|
|
3386
|
+
}
|
|
3387
|
+
static equals(a, b) {
|
|
3388
|
+
return proto3.util.equals(ListDispositionsResponse, a, b);
|
|
3389
|
+
}
|
|
3390
|
+
}
|
|
2470
3391
|
/**
|
|
2471
3392
|
* SmsConversation is one SMS thread summary carried in the AgentView (the full
|
|
2472
3393
|
* thread history is fetched on demand, not held in the snapshot). Upsert-by-id;
|
|
@@ -3014,7 +3935,14 @@ export class StartConference extends Message {
|
|
|
3014
3935
|
}
|
|
3015
3936
|
/**
|
|
3016
3937
|
* AddConferenceMember invites a participant — exactly one of agent_id / number.
|
|
3017
|
-
* Starts a conference first if none is active.
|
|
3938
|
+
* Starts a conference first if none is active. `hold_others` parks every other
|
|
3939
|
+
* live, non-held member of the CURRENT conference before the invite goes out
|
|
3940
|
+
* (bc-v2's add-member "hold others" checkbox, `AddNewMemberModal.vue`, default
|
|
3941
|
+
* off) so they don't overhear the new invitee ringing; the server unholds them
|
|
3942
|
+
* again once the invitee reaches a terminal state (added = joined, or
|
|
3943
|
+
* failed/removed = rejected/timed out) — see CA4 / docs/designs/conferencing.md.
|
|
3944
|
+
* No effect when starting a brand-new conference: StartConference(hold=true)
|
|
3945
|
+
* already parks the original party unconditionally in that case.
|
|
3018
3946
|
*
|
|
3019
3947
|
* @generated from message babelconnect.v1.AddConferenceMember
|
|
3020
3948
|
*/
|
|
@@ -3027,6 +3955,10 @@ export class AddConferenceMember extends Message {
|
|
|
3027
3955
|
* @generated from field: string number = 2;
|
|
3028
3956
|
*/
|
|
3029
3957
|
number = "";
|
|
3958
|
+
/**
|
|
3959
|
+
* @generated from field: bool hold_others = 3;
|
|
3960
|
+
*/
|
|
3961
|
+
holdOthers = false;
|
|
3030
3962
|
constructor(data) {
|
|
3031
3963
|
super();
|
|
3032
3964
|
proto3.util.initPartial(data, this);
|
|
@@ -3036,6 +3968,7 @@ export class AddConferenceMember extends Message {
|
|
|
3036
3968
|
static fields = proto3.util.newFieldList(() => [
|
|
3037
3969
|
{ no: 1, name: "agent_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
3038
3970
|
{ no: 2, name: "number", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
3971
|
+
{ no: 3, name: "hold_others", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
3039
3972
|
]);
|
|
3040
3973
|
static fromBinary(bytes, options) {
|
|
3041
3974
|
return new AddConferenceMember().fromBinary(bytes, options);
|