@babelforce/babelconnect-sdk 0.11.0 → 0.13.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 +46 -1
- package/dist/client.js +86 -2
- 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 +58 -23
- package/dist/gen/babelconnect/v1/babelconnect_connect.js +77 -37
- package/dist/gen/babelconnect/v1/babelconnect_pb.d.ts +655 -4
- package/dist/gen/babelconnect/v1/babelconnect_pb.js +864 -4
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/web/babelconnect-embed.iife.js +1 -0
- package/package.json +4 -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
|
*/
|
|
@@ -236,7 +323,7 @@ export class SubscribeRequest extends Message {
|
|
|
236
323
|
/**
|
|
237
324
|
* Ack is the empty reply to Send. It only confirms the server accepted the
|
|
238
325
|
* command for processing — the resulting state (or an Error) is delivered on the
|
|
239
|
-
* Subscribe stream,
|
|
326
|
+
* Subscribe stream, never in this reply.
|
|
240
327
|
*
|
|
241
328
|
* @generated from message babelconnect.v1.Ack
|
|
242
329
|
*/
|
|
@@ -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);
|
|
@@ -1514,7 +2009,7 @@ export class WrapUpStatus extends Message {
|
|
|
1514
2009
|
}
|
|
1515
2010
|
}
|
|
1516
2011
|
/**
|
|
1517
|
-
* StateUpdate is the single server → client message on the
|
|
2012
|
+
* StateUpdate is the single server → client message on the Subscribe stream. On
|
|
1518
2013
|
* open the client receives a snapshot; thereafter partial patches. `seq` is
|
|
1519
2014
|
* monotonic across snapshot+patch — a gap means the client should resubscribe
|
|
1520
2015
|
* for a fresh snapshot. `error` is an out-of-band notice (command rejection /
|
|
@@ -1561,7 +2056,7 @@ export class StateUpdate extends Message {
|
|
|
1561
2056
|
}
|
|
1562
2057
|
}
|
|
1563
2058
|
/**
|
|
1564
|
-
* Keepalive is an empty heartbeat frame sent on the
|
|
2059
|
+
* Keepalive is an empty heartbeat frame sent on the Subscribe stream so
|
|
1565
2060
|
* idle connections through proxies/LBs are not closed as idle. Notably the AWS
|
|
1566
2061
|
* Classic ELB in front of ingress-nginx (dev/prod EKS) has a 300s connection
|
|
1567
2062
|
* idle timeout; without these frames a quiet agent's gRPC-web server-stream is
|
|
@@ -1814,6 +2309,11 @@ export class Command extends Message {
|
|
|
1814
2309
|
{ no: 28, name: "set_conversation_open", kind: "message", T: SetConversationOpen, oneof: "command" },
|
|
1815
2310
|
{ no: 29, name: "mark_conversation_read", kind: "message", T: MarkConversationRead, oneof: "command" },
|
|
1816
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" },
|
|
1817
2317
|
]);
|
|
1818
2318
|
static fromBinary(bytes, options) {
|
|
1819
2319
|
return new Command().fromBinary(bytes, options);
|
|
@@ -2540,6 +3040,354 @@ export class SetAgentNumber extends Message {
|
|
|
2540
3040
|
return proto3.util.equals(SetAgentNumber, a, b);
|
|
2541
3041
|
}
|
|
2542
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
|
+
}
|
|
2543
3391
|
/**
|
|
2544
3392
|
* SmsConversation is one SMS thread summary carried in the AgentView (the full
|
|
2545
3393
|
* thread history is fetched on demand, not held in the snapshot). Upsert-by-id;
|
|
@@ -3087,7 +3935,14 @@ export class StartConference extends Message {
|
|
|
3087
3935
|
}
|
|
3088
3936
|
/**
|
|
3089
3937
|
* AddConferenceMember invites a participant — exactly one of agent_id / number.
|
|
3090
|
-
* 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.
|
|
3091
3946
|
*
|
|
3092
3947
|
* @generated from message babelconnect.v1.AddConferenceMember
|
|
3093
3948
|
*/
|
|
@@ -3100,6 +3955,10 @@ export class AddConferenceMember extends Message {
|
|
|
3100
3955
|
* @generated from field: string number = 2;
|
|
3101
3956
|
*/
|
|
3102
3957
|
number = "";
|
|
3958
|
+
/**
|
|
3959
|
+
* @generated from field: bool hold_others = 3;
|
|
3960
|
+
*/
|
|
3961
|
+
holdOthers = false;
|
|
3103
3962
|
constructor(data) {
|
|
3104
3963
|
super();
|
|
3105
3964
|
proto3.util.initPartial(data, this);
|
|
@@ -3109,6 +3968,7 @@ export class AddConferenceMember extends Message {
|
|
|
3109
3968
|
static fields = proto3.util.newFieldList(() => [
|
|
3110
3969
|
{ no: 1, name: "agent_id", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
3111
3970
|
{ no: 2, name: "number", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
3971
|
+
{ no: 3, name: "hold_others", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
3112
3972
|
]);
|
|
3113
3973
|
static fromBinary(bytes, options) {
|
|
3114
3974
|
return new AddConferenceMember().fromBinary(bytes, options);
|