@xapp/stentor-service-jobber 1.58.16 → 1.58.22
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/lib/JobberService.d.ts +12 -12
- package/lib/JobberService.js +163 -24
- package/lib/JobberService.js.map +1 -1
- package/lib/ai.d.ts +19 -2
- package/lib/ai.js +118 -32
- package/lib/ai.js.map +1 -1
- package/lib/graphql.d.ts +32 -0
- package/lib/graphql.js +25 -1
- package/lib/graphql.js.map +1 -1
- package/lib/util.d.ts +8 -1
- package/lib/util.js +31 -1
- package/lib/util.js.map +1 -1
- package/package.json +3 -3
package/lib/JobberService.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
/*! Copyright (c) 2024, XAPP AI */
|
|
2
2
|
import { FetchService } from "stentor-service-fetch";
|
|
3
|
-
import { BaseService, CrmResponse, CrmService, CrmServiceAvailability, CrmServiceAvailabilityOptions, CrmServiceJobType, DateTimeRange, ExternalLead } from "stentor-models";
|
|
3
|
+
import { BaseService, CrmResponse, CrmService, CrmServiceAvailability, CrmServiceAvailabilityOptions, CrmServiceAvailabilitySettings, CrmServiceJobType, DateTimeRange, ExternalLead } from "stentor-models";
|
|
4
4
|
import { Product } from "./graphql";
|
|
5
|
-
export interface JobberServiceProps extends BaseService {
|
|
5
|
+
export interface JobberServiceProps extends BaseService, CrmServiceAvailabilitySettings {
|
|
6
6
|
appId: string;
|
|
7
7
|
channel?: string;
|
|
8
8
|
authenticate: JobberAuthenticator;
|
|
9
9
|
openAI: {
|
|
10
10
|
apiKey: string;
|
|
11
11
|
};
|
|
12
|
+
defaultJobTypeId: string;
|
|
13
|
+
serviceWindowsHours?: number;
|
|
14
|
+
apiEndpoint?: string;
|
|
15
|
+
fetchTimeoutMs?: number;
|
|
12
16
|
}
|
|
13
17
|
export interface JobberAuthenticator {
|
|
14
18
|
(): Promise<{
|
|
@@ -106,16 +110,10 @@ export interface JobberLead extends JobberExternalLeadExtras {
|
|
|
106
110
|
value: string;
|
|
107
111
|
}[];
|
|
108
112
|
}
|
|
109
|
-
export interface JobberResponse {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
*/
|
|
114
|
-
Message?: string;
|
|
115
|
-
/**
|
|
116
|
-
* If Status is undefined, look here for an error message.
|
|
117
|
-
*/
|
|
118
|
-
Reason?: string;
|
|
113
|
+
export interface JobberResponse<Data = any> {
|
|
114
|
+
status: "Success" | "Failure";
|
|
115
|
+
error?: string;
|
|
116
|
+
data?: Data;
|
|
119
117
|
}
|
|
120
118
|
export declare class JobberService extends FetchService implements CrmService {
|
|
121
119
|
private props;
|
|
@@ -124,6 +122,7 @@ export declare class JobberService extends FetchService implements CrmService {
|
|
|
124
122
|
constructor(props: JobberServiceProps);
|
|
125
123
|
static get defaultBaseUrl(): string;
|
|
126
124
|
getAvailability(range: DateTimeRange, options?: CrmServiceAvailabilityOptions): Promise<CrmServiceAvailability>;
|
|
125
|
+
private fetchJobTypes;
|
|
127
126
|
getJobType(message: string, externalLead?: ExternalLead): Promise<CrmServiceJobType>;
|
|
128
127
|
/**
|
|
129
128
|
* Send the lead
|
|
@@ -165,6 +164,7 @@ export declare class JobberService extends FetchService implements CrmService {
|
|
|
165
164
|
private createJob;
|
|
166
165
|
private checkForExistingClient;
|
|
167
166
|
private getProperty;
|
|
167
|
+
private getFutureVisits;
|
|
168
168
|
getProducts(): Promise<Product[]>;
|
|
169
169
|
/**
|
|
170
170
|
* Shared request headers
|
package/lib/JobberService.js
CHANGED
|
@@ -11,7 +11,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
|
-
var _a;
|
|
15
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
15
|
exports.JobberService = void 0;
|
|
17
16
|
/*! Copyright (c) 2024, XAPP AI */
|
|
@@ -19,10 +18,12 @@ const stentor_service_fetch_1 = require("stentor-service-fetch");
|
|
|
19
18
|
const stentor_logger_1 = require("stentor-logger");
|
|
20
19
|
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
21
20
|
const addresser_1 = __importDefault(require("addresser"));
|
|
22
|
-
const ai_1 = require("./ai");
|
|
23
|
-
const FETCH_TIMEOUT = Number((_a = process.env.FETCH_TIMEOUT) !== null && _a !== void 0 ? _a : 3000);
|
|
24
21
|
const graphql_1 = require("./graphql");
|
|
25
22
|
const util_1 = require("./util");
|
|
23
|
+
const ai_1 = require("./ai");
|
|
24
|
+
const stentor_utils_1 = require("stentor-utils");
|
|
25
|
+
// Default max appointments to be scheduled per day
|
|
26
|
+
const DEFAULT_PER_DAY_APPT_THRESHOLD = 4;
|
|
26
27
|
class JobberService extends stentor_service_fetch_1.FetchService {
|
|
27
28
|
constructor(props) {
|
|
28
29
|
(0, stentor_logger_1.log)().info(`Jobber Service, app id: ${props.appId}`);
|
|
@@ -35,19 +36,129 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
35
36
|
}
|
|
36
37
|
getAvailability(range, options) {
|
|
37
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return {
|
|
39
|
+
var _a, _b;
|
|
40
|
+
const availability = {
|
|
41
41
|
range,
|
|
42
42
|
unavailabilities: []
|
|
43
43
|
};
|
|
44
|
+
// if no start use "now"
|
|
45
|
+
const startsOnOrAfter = range.start ? (0, stentor_utils_1.dateTimeToString)(range.start) : new Date().toISOString();
|
|
46
|
+
const startsBefore = range.end ? (0, stentor_utils_1.dateTimeToString)(range.end) : undefined;
|
|
47
|
+
const appointments = yield this.getFutureVisits({
|
|
48
|
+
startsOnOrAfter,
|
|
49
|
+
startsBefore,
|
|
50
|
+
status: ["ACTIVE", "LATE", "UPCOMING"]
|
|
51
|
+
});
|
|
52
|
+
if (appointments === null) {
|
|
53
|
+
return Promise.resolve(availability); // All available if we fail
|
|
54
|
+
}
|
|
55
|
+
(0, stentor_logger_1.log)().info(`ServiceTitan: Got ${appointments === null || appointments === void 0 ? void 0 : appointments.length} appointments between ${startsOnOrAfter} and ${startsBefore || "forever"}`);
|
|
56
|
+
// Count appointments per day
|
|
57
|
+
const appointmentCount = {};
|
|
58
|
+
// TODO: This is a bit sloppy. In the US the UTC day is always the original day
|
|
59
|
+
// (assuming the latest appointment start is 6pm)
|
|
60
|
+
appointments.forEach((appointment) => {
|
|
61
|
+
const date = appointment.startAt.split("T")[0];
|
|
62
|
+
if (!appointmentCount[date]) {
|
|
63
|
+
appointmentCount[date] = 0;
|
|
64
|
+
}
|
|
65
|
+
appointmentCount[date]++;
|
|
66
|
+
});
|
|
67
|
+
const threshold = (options === null || options === void 0 ? void 0 : options.maxTotalDailyAppointments) ||
|
|
68
|
+
this.props.maxTotalDailyAppointments ||
|
|
69
|
+
DEFAULT_PER_DAY_APPT_THRESHOLD;
|
|
70
|
+
// Filter days with more than threshold appointments
|
|
71
|
+
const busyDays = Object.keys(appointmentCount).filter((date) => appointmentCount[date] >= threshold);
|
|
72
|
+
(0, stentor_logger_1.log)().info(`Jobber: Got ${busyDays === null || busyDays === void 0 ? void 0 : busyDays.length} busy day(s) for threshold ${threshold}: ${busyDays}`);
|
|
73
|
+
// Lucky us. The format is YYYY-MM-DD
|
|
74
|
+
availability.unavailabilities = busyDays.map((day) => ({ date: { date: day }, available: false }));
|
|
75
|
+
// Add locked days for job type (usually skip next N). This needs a map (jobType: skippedDays) in the CRM constructor
|
|
76
|
+
if ((options === null || options === void 0 ? void 0 : options.jobType) && this.props.delayedJobTypes) {
|
|
77
|
+
if (this.props.delayedJobTypes.indexOf((_a = options === null || options === void 0 ? void 0 : options.jobType) === null || _a === void 0 ? void 0 : _a.id) !== -1) {
|
|
78
|
+
const nextDays = (0, util_1.getNextDays)(3);
|
|
79
|
+
const skippedDays = nextDays.map((date) => ({
|
|
80
|
+
date,
|
|
81
|
+
available: false
|
|
82
|
+
}));
|
|
83
|
+
availability.unavailabilities = availability.unavailabilities.concat(skippedDays);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Add class specific blocked days
|
|
87
|
+
if ((_b = options === null || options === void 0 ? void 0 : options.jobType) === null || _b === void 0 ? void 0 : _b.class) {
|
|
88
|
+
let daysToSkip = 0;
|
|
89
|
+
switch (options.jobType.class) {
|
|
90
|
+
case "ESTIMATION":
|
|
91
|
+
case "MAINTENANCE":
|
|
92
|
+
case "INSTALLATION":
|
|
93
|
+
daysToSkip = 5;
|
|
94
|
+
break;
|
|
95
|
+
case "REPAIR":
|
|
96
|
+
daysToSkip = 0;
|
|
97
|
+
break;
|
|
98
|
+
default:
|
|
99
|
+
daysToSkip = 0;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
const nextDays = (0, util_1.getNextDays)(daysToSkip);
|
|
103
|
+
const skippedDays = nextDays.map((date) => ({
|
|
104
|
+
date,
|
|
105
|
+
available: false
|
|
106
|
+
}));
|
|
107
|
+
availability.unavailabilities = availability.unavailabilities.concat(skippedDays);
|
|
108
|
+
}
|
|
109
|
+
// Add explicitly specified blocked days (holidays)
|
|
110
|
+
const blockedDays = (options === null || options === void 0 ? void 0 : options.blockedDays) || this.props.blockedDays;
|
|
111
|
+
if (blockedDays) {
|
|
112
|
+
const holidays = blockedDays.map((date) => ({
|
|
113
|
+
date,
|
|
114
|
+
available: false
|
|
115
|
+
}));
|
|
116
|
+
availability.unavailabilities = availability.unavailabilities.concat(holidays);
|
|
117
|
+
}
|
|
118
|
+
return Promise.resolve(availability);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
fetchJobTypes() {
|
|
122
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
+
if (!this.products) {
|
|
124
|
+
this.products = yield this.getProducts();
|
|
125
|
+
}
|
|
126
|
+
const jobTypes = this.products.map((jt) => {
|
|
127
|
+
return { id: jt.id, summary: jt.description, name: jt.name };
|
|
128
|
+
});
|
|
129
|
+
return jobTypes;
|
|
44
130
|
});
|
|
45
131
|
}
|
|
46
132
|
getJobType(message, externalLead) {
|
|
47
133
|
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
134
|
+
var _a, _b;
|
|
135
|
+
const jobTypes = yield this.fetchJobTypes();
|
|
136
|
+
let jobType;
|
|
137
|
+
if (jobTypes && jobTypes.length > 0) {
|
|
138
|
+
(0, stentor_logger_1.log)().info("Jobber: Asking AI about job type");
|
|
139
|
+
const suggestedJobTypes = yield (0, ai_1.guessJobTypes)({
|
|
140
|
+
question: message,
|
|
141
|
+
jobTypes,
|
|
142
|
+
defaultJobTypeId: this.props.defaultJobTypeId,
|
|
143
|
+
apiKey: (_a = this.props.openAI) === null || _a === void 0 ? void 0 : _a.apiKey
|
|
144
|
+
});
|
|
145
|
+
const suggestedJobType = (_b = suggestedJobTypes === null || suggestedJobTypes === void 0 ? void 0 : suggestedJobTypes.jobTypes) === null || _b === void 0 ? void 0 : _b[0];
|
|
146
|
+
if (suggestedJobType) {
|
|
147
|
+
(0, stentor_logger_1.log)().info(`Jobber: AI selected job type: ${JSON.stringify(suggestedJobType)}`);
|
|
148
|
+
jobType = {
|
|
149
|
+
id: suggestedJobType.id + "",
|
|
150
|
+
class: suggestedJobType.class,
|
|
151
|
+
name: suggestedJobType.name
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
(0, stentor_logger_1.log)().info("Jobber: AI didn't suggest job type");
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
(0, stentor_logger_1.log)().info("Jobber: NOT Asking AI about job type (no job types)");
|
|
160
|
+
}
|
|
161
|
+
return jobType;
|
|
51
162
|
});
|
|
52
163
|
}
|
|
53
164
|
// Called by CRM Service to send the lead
|
|
@@ -61,7 +172,7 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
61
172
|
*/
|
|
62
173
|
send(externalLead) {
|
|
63
174
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
175
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
65
176
|
const crmResponse = {
|
|
66
177
|
status: "Failure",
|
|
67
178
|
message: ""
|
|
@@ -71,7 +182,7 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
71
182
|
const names = (0, util_1.getName)(externalLead);
|
|
72
183
|
// Init Authentication Tokens
|
|
73
184
|
// We need to combine the address stuff here?
|
|
74
|
-
yield this.createContact({
|
|
185
|
+
const contact = yield this.createContact({
|
|
75
186
|
name: names,
|
|
76
187
|
email: (_a = externalLead.fields.find((x) => x.name === "EMAIL")) === null || _a === void 0 ? void 0 : _a.value,
|
|
77
188
|
phone: (_b = externalLead.fields.find((x) => x.name === "PHONE")) === null || _b === void 0 ? void 0 : _b.value,
|
|
@@ -86,6 +197,7 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
86
197
|
consentApproval: (_l = externalLead.fields.find((x) => x.name == "CONSENT_APPROVAL")) === null || _l === void 0 ? void 0 : _l.value
|
|
87
198
|
}, externalLead);
|
|
88
199
|
crmResponse.status = "Success";
|
|
200
|
+
crmResponse.refId = (_m = contact.data) === null || _m === void 0 ? void 0 : _m.refId;
|
|
89
201
|
}
|
|
90
202
|
catch (e) {
|
|
91
203
|
(0, stentor_logger_1.log)().error(`Error sending lead to Jobber: ${e}`);
|
|
@@ -136,14 +248,13 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
136
248
|
yield this.createNote(requestId, transcriptData);
|
|
137
249
|
// Add a Job (when if all data exists)
|
|
138
250
|
yield this.processSchedulingInfo(contact, propertyId, requestId);
|
|
251
|
+
return { status: "Success", data: { refId: requestId } };
|
|
139
252
|
});
|
|
140
253
|
}
|
|
141
254
|
processSchedulingInfo(contact, propertyId, requestId) {
|
|
142
255
|
return __awaiter(this, void 0, void 0, function* () {
|
|
256
|
+
var _a;
|
|
143
257
|
const hasAgreed = !!(contact === null || contact === void 0 ? void 0 : contact.consentApproval) && (contact === null || contact === void 0 ? void 0 : contact.consentApproval.includes("agreed"));
|
|
144
|
-
if (!this.products) {
|
|
145
|
-
this.products = yield this.getProducts();
|
|
146
|
-
}
|
|
147
258
|
// Create a job?
|
|
148
259
|
if (contact.address && hasAgreed && contact.dateTime) {
|
|
149
260
|
const appointmentTime = (0, moment_timezone_1.default)(contact.dateTime); // Localized time
|
|
@@ -165,20 +276,19 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
165
276
|
}
|
|
166
277
|
appointmentTime.add(offsetHours, "hours");
|
|
167
278
|
const requestTime = appointmentTime ? appointmentTime.utc().format() : undefined;
|
|
168
|
-
const
|
|
279
|
+
const jobTypes = yield this.fetchJobTypes();
|
|
280
|
+
const suggestedJobTypes = yield (0, ai_1.guessJobTypes)({
|
|
169
281
|
question: contact.message,
|
|
170
|
-
jobTypes
|
|
171
|
-
apiKey: this.props.openAI.apiKey
|
|
282
|
+
jobTypes,
|
|
283
|
+
apiKey: this.props.openAI.apiKey,
|
|
284
|
+
defaultJobTypeId: this.props.defaultJobTypeId
|
|
172
285
|
});
|
|
173
|
-
|
|
174
|
-
if (guess && guess != "Unknown") {
|
|
175
|
-
jobName = guess;
|
|
176
|
-
}
|
|
286
|
+
const suggestedJobType = (_a = suggestedJobTypes === null || suggestedJobTypes === void 0 ? void 0 : suggestedJobTypes.jobTypes) === null || _a === void 0 ? void 0 : _a[0];
|
|
177
287
|
const jobRequest = {
|
|
178
288
|
job: {
|
|
179
289
|
propertyId,
|
|
180
290
|
requestId,
|
|
181
|
-
title:
|
|
291
|
+
title: suggestedJobType.name,
|
|
182
292
|
scheduling: {
|
|
183
293
|
createVisits: true,
|
|
184
294
|
notifyTeam: false,
|
|
@@ -345,6 +455,33 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
345
455
|
return propertyId;
|
|
346
456
|
});
|
|
347
457
|
}
|
|
458
|
+
// Get Property for a Contact
|
|
459
|
+
getFutureVisits(query) {
|
|
460
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
461
|
+
var _a;
|
|
462
|
+
const apiResult = yield this.graphqlRequest(graphql_1.GET_FUTURE_VISITS, {
|
|
463
|
+
startDate: {
|
|
464
|
+
after: query.startsOnOrAfter
|
|
465
|
+
}
|
|
466
|
+
});
|
|
467
|
+
const visitEdges = (_a = apiResult.visits) === null || _a === void 0 ? void 0 : _a.edges;
|
|
468
|
+
// Nothing scheduled
|
|
469
|
+
if (!visitEdges || visitEdges.length === 0) {
|
|
470
|
+
return null;
|
|
471
|
+
}
|
|
472
|
+
// Dig out the nodes
|
|
473
|
+
const visits = visitEdges.map((edge) => edge.node);
|
|
474
|
+
// Status filter
|
|
475
|
+
const statusList = query.status;
|
|
476
|
+
if (statusList && statusList.length > 0) {
|
|
477
|
+
return visits.filter((visit) => statusList.indexOf(visit.visitStatus) !== -1);
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
return visits;
|
|
481
|
+
}
|
|
482
|
+
return null;
|
|
483
|
+
});
|
|
484
|
+
}
|
|
348
485
|
// Get List Of Products
|
|
349
486
|
getProducts() {
|
|
350
487
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -363,7 +500,7 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
363
500
|
*/
|
|
364
501
|
requestHeader() {
|
|
365
502
|
return __awaiter(this, void 0, void 0, function* () {
|
|
366
|
-
const version = process.env.JOBBER_API_VERSION || "
|
|
503
|
+
const version = process.env.JOBBER_API_VERSION || "2024-04-17";
|
|
367
504
|
const token = yield this.getAuthenticationToken();
|
|
368
505
|
return {
|
|
369
506
|
Authorization: `Bearer ${token}}`,
|
|
@@ -383,8 +520,10 @@ class JobberService extends stentor_service_fetch_1.FetchService {
|
|
|
383
520
|
}
|
|
384
521
|
graphqlRequest(query, variables) {
|
|
385
522
|
return __awaiter(this, void 0, void 0, function* () {
|
|
386
|
-
|
|
523
|
+
var _a;
|
|
524
|
+
const url = this.props.apiEndpoint ? `https://${this.props.apiEndpoint}` : JobberService.defaultBaseUrl;
|
|
387
525
|
const headers = yield this.requestHeader();
|
|
526
|
+
const FETCH_TIMEOUT = (_a = this.props.fetchTimeoutMs) !== null && _a !== void 0 ? _a : 10000;
|
|
388
527
|
const response = yield this.fetch(url, {
|
|
389
528
|
method: "POST",
|
|
390
529
|
headers,
|
package/lib/JobberService.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobberService.js","sourceRoot":"","sources":["../src/JobberService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JobberService.js","sourceRoot":"","sources":["../src/JobberService.ts"],"names":[],"mappings":"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"}
|
package/lib/ai.d.ts
CHANGED
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
/*! Copyright (c) 2024, XAPPmedia */
|
|
1
2
|
export interface JobTypeAiQuery {
|
|
2
3
|
question: string;
|
|
3
|
-
jobTypes
|
|
4
|
+
jobTypes: JobTypeDescriptor[];
|
|
5
|
+
defaultJobTypeId: string;
|
|
4
6
|
apiKey?: string;
|
|
5
7
|
}
|
|
6
|
-
export
|
|
8
|
+
export interface JobTypeDescriptor {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
summary: string;
|
|
12
|
+
businessUnitIds?: number[];
|
|
13
|
+
}
|
|
14
|
+
export interface JobTypeAiResponse extends JobTypeDescriptor {
|
|
15
|
+
confidence: number;
|
|
16
|
+
analysis: string;
|
|
17
|
+
class: string;
|
|
18
|
+
}
|
|
19
|
+
export interface AiResponse {
|
|
20
|
+
jobTypes: JobTypeAiResponse[];
|
|
21
|
+
}
|
|
22
|
+
export declare function checkResult(input: JobTypeAiResponse | JobTypeAiResponse[]): JobTypeAiResponse[];
|
|
23
|
+
export declare function guessJobTypes(query: JobTypeAiQuery): Promise<AiResponse>;
|
package/lib/ai.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*! Copyright (c) 2024, XAPPmedia */
|
|
2
3
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
4
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
5
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -12,49 +13,134 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
13
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
14
|
};
|
|
14
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.guessJobTypes = void 0;
|
|
16
|
-
/*! Copyright (c) 2024, XAPP AI */
|
|
16
|
+
exports.guessJobTypes = exports.checkResult = void 0;
|
|
17
17
|
const openai_1 = __importDefault(require("openai"));
|
|
18
|
+
require("dotenv").config();
|
|
18
19
|
const stentor_logger_1 = require("stentor-logger");
|
|
20
|
+
function checkResult(input) {
|
|
21
|
+
// Assume array is good
|
|
22
|
+
if (Array.isArray(input)) {
|
|
23
|
+
return input;
|
|
24
|
+
}
|
|
25
|
+
// Single object?
|
|
26
|
+
if (input.id && input.confidence) {
|
|
27
|
+
return [input];
|
|
28
|
+
}
|
|
29
|
+
// Fishy...
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
exports.checkResult = checkResult;
|
|
19
33
|
function guessJobTypes(query) {
|
|
20
34
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
35
|
var _a, _b, _c;
|
|
22
|
-
const { question, apiKey } = query;
|
|
36
|
+
const { question, jobTypes, apiKey } = query;
|
|
23
37
|
const openai = new openai_1.default({
|
|
24
|
-
apiKey: apiKey
|
|
38
|
+
apiKey: apiKey
|
|
39
|
+
});
|
|
40
|
+
const response = yield openai.chat.completions.create({
|
|
41
|
+
model: "gpt-4o",
|
|
42
|
+
response_format: { type: "json_object" },
|
|
43
|
+
messages: [
|
|
44
|
+
{
|
|
45
|
+
role: "system",
|
|
46
|
+
content: `You are a helpful assistant for a plumbing company. Your task is to match a customer request to specific job types based on the customer's description of a problem. When matching, use the name and the description in the available job types.
|
|
47
|
+
|
|
48
|
+
Output your response as JSON as it will be parsed programmatically. Use the following keys:
|
|
49
|
+
|
|
50
|
+
* jobTypes: required - an array of objects with the following keys:
|
|
51
|
+
"id": required - The selected id from the provided ids in the prompt,
|
|
52
|
+
"name": required - Corresponding name to the selected "id",
|
|
53
|
+
"summary": required - Corresponding summary if available,
|
|
54
|
+
"confidence": required - A confidence between 0 and 1, where 0 is a bad match to the customer problem and 1 is a perfect match,
|
|
55
|
+
"analysis": required - An explanation why you selected the job type and its confidence.
|
|
56
|
+
"class": required - enum with values "MAINTENANCE" - customer requires routine maintenance procedure, "REPAIR" - customer requires a repair, most likely to fix a non-functioning appliance or component, "INSTALLATION" - customer requires installation of a brand new or replace existing, "ESTIMATION" - customer needs an estimate for a repair or installation.
|
|
57
|
+
|
|
58
|
+
Sort the jobTypes array by confidence level. Start with the highest confidence.
|
|
59
|
+
|
|
60
|
+
Here are the available job types: ${JSON.stringify(jobTypes)}
|
|
61
|
+
|
|
62
|
+
### Example:
|
|
63
|
+
Customer request: "My kitchen sink is leaking, and I need it fixed as soon as possible."
|
|
64
|
+
Response:
|
|
65
|
+
{
|
|
66
|
+
"jobTypes": [
|
|
67
|
+
{
|
|
68
|
+
"id": "123",
|
|
69
|
+
"name": "Leak Repair",
|
|
70
|
+
"summary": "Fixing leaks in various plumbing fixtures",
|
|
71
|
+
"confidence": 0.9,
|
|
72
|
+
"analysis": "The customer mentioned a leaking kitchen sink which directly matches the 'Leak Repair' job type.",
|
|
73
|
+
"class": "REPAIR"
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
Notes:
|
|
79
|
+
If there are multiple matching job types, include all with their respective confidence levels.
|
|
80
|
+
If the request involves any kind of leak, classify it as REPAIR.`
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
role: "user",
|
|
84
|
+
content: question
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
temperature: 1,
|
|
88
|
+
max_tokens: 256,
|
|
89
|
+
top_p: 1,
|
|
90
|
+
frequency_penalty: 0,
|
|
91
|
+
presence_penalty: 0
|
|
25
92
|
});
|
|
26
|
-
|
|
27
|
-
|
|
93
|
+
const rawContent = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message) === null || _c === void 0 ? void 0 : _c.content;
|
|
94
|
+
// log().info(`OpenAI: raw: ${rawContent}`);
|
|
95
|
+
let choices;
|
|
28
96
|
try {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
97
|
+
choices = JSON.parse(rawContent);
|
|
98
|
+
(0, stentor_logger_1.log)().info(`OpenAI: parsed: ${JSON.stringify(choices)}`);
|
|
99
|
+
}
|
|
100
|
+
catch (err1) {
|
|
101
|
+
(0, stentor_logger_1.log)().error(`OpenAI: Cannot parse response. ${err1}`);
|
|
102
|
+
(0, stentor_logger_1.log)().error(`OpenAI: QUESTION: "${question}" RESPONSE: "${rawContent}"`);
|
|
103
|
+
(0, stentor_logger_1.log)().info("OpenAI: Trying to salvage AI garbage");
|
|
104
|
+
// Find the end of the last complete object
|
|
105
|
+
const lastValidIndex = rawContent.lastIndexOf("}");
|
|
106
|
+
if (lastValidIndex !== -1) {
|
|
107
|
+
// Slice the string to the last valid index
|
|
108
|
+
let fixedJson = rawContent.slice(0, lastValidIndex + 1);
|
|
109
|
+
// Manually close the array and the JSON object
|
|
110
|
+
fixedJson += "]}";
|
|
111
|
+
// Parse the fixed JSON
|
|
112
|
+
try {
|
|
113
|
+
choices = JSON.parse(fixedJson);
|
|
114
|
+
(0, stentor_logger_1.log)().info("OpenAI: Parsed salvaged JSON data");
|
|
115
|
+
}
|
|
116
|
+
catch (err2) {
|
|
117
|
+
(0, stentor_logger_1.log)().error(`OpenAI: Basket case. Failed to parse salvaged JSON. ${err2}`);
|
|
118
|
+
(0, stentor_logger_1.log)().error(`OpenAI: REPAIRED RESPONSE: "${fixedJson}"`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.error("OpenAI: No valid JSON object found.");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const selectedJobTypes = choices === null || choices === void 0 ? void 0 : choices.jobTypes;
|
|
126
|
+
if (!selectedJobTypes || selectedJobTypes.length === 0) {
|
|
127
|
+
(0, stentor_logger_1.log)().info(`OpenAI: No match. Using default job type: ${query.defaultJobTypeId}`);
|
|
128
|
+
const defaultJobType = jobTypes.find((jt) => jt && query.defaultJobTypeId === jt.id);
|
|
129
|
+
choices = {
|
|
130
|
+
jobTypes: [
|
|
40
131
|
{
|
|
41
|
-
|
|
42
|
-
|
|
132
|
+
confidence: 0,
|
|
133
|
+
id: defaultJobType.id,
|
|
134
|
+
name: defaultJobType.name,
|
|
135
|
+
summary: defaultJobType.summary,
|
|
136
|
+
analysis: "There was no match. This is the default job type.",
|
|
137
|
+
class: "SERVICE"
|
|
43
138
|
}
|
|
44
|
-
]
|
|
45
|
-
|
|
46
|
-
max_tokens: 256,
|
|
47
|
-
top_p: 0.48,
|
|
48
|
-
frequency_penalty: 0,
|
|
49
|
-
presence_penalty: 0
|
|
50
|
-
});
|
|
51
|
-
content = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message) === null || _c === void 0 ? void 0 : _c.content;
|
|
52
|
-
(0, stentor_logger_1.log)().info(`AI Matching Question: ${question} JobType: ${content}`);
|
|
53
|
-
}
|
|
54
|
-
catch (err) {
|
|
55
|
-
(0, stentor_logger_1.log)().error(`OpenAI: Cannot parse response. QUESTION: "${question}" RESPONSE: "${content}"`);
|
|
139
|
+
]
|
|
140
|
+
};
|
|
56
141
|
}
|
|
57
|
-
|
|
142
|
+
// log().info(`OpenAI: Choices: ${JSON.stringify(choices)}`);
|
|
143
|
+
return choices;
|
|
58
144
|
});
|
|
59
145
|
}
|
|
60
146
|
exports.guessJobTypes = guessJobTypes;
|
package/lib/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
|
package/lib/graphql.d.ts
CHANGED
|
@@ -174,4 +174,36 @@ export interface AddClientMutationResult {
|
|
|
174
174
|
};
|
|
175
175
|
};
|
|
176
176
|
}
|
|
177
|
+
export declare const GET_FUTURE_VISITS = "\nquery GetFutureVisits($startDate: Iso8601DateTimeRangeInput!) {\n visits(filter: { startAt: $startDate }) {\n edges {\n node {\n id\n startAt\n completedAt\n allDay\n duration\n instructions\n visitStatus\n client {\n name\n }\n job {\n id\n }\n }\n }\n }\n}\n";
|
|
178
|
+
type Iso8601DateTime = string;
|
|
179
|
+
export interface Iso8601DateTimeRangeInput {
|
|
180
|
+
startDate: {
|
|
181
|
+
before?: Iso8601DateTime;
|
|
182
|
+
after?: Iso8601DateTime;
|
|
183
|
+
eq?: Iso8601DateTime;
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
export type VisitStatus = "ACTIVE" | "COMPLETED" | "LATE" | "TODAY" | "UNSCHEDULED" | "UPCOMING";
|
|
187
|
+
export interface Visit {
|
|
188
|
+
id: string;
|
|
189
|
+
startAt: Iso8601DateTime;
|
|
190
|
+
completedAt: Iso8601DateTime;
|
|
191
|
+
allDay: boolean;
|
|
192
|
+
duration: number;
|
|
193
|
+
instructions: string;
|
|
194
|
+
visitStatus: VisitStatus;
|
|
195
|
+
client: {
|
|
196
|
+
name: string;
|
|
197
|
+
};
|
|
198
|
+
job: {
|
|
199
|
+
id: string;
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
export interface GetFutureVisitsResult {
|
|
203
|
+
visits: {
|
|
204
|
+
edges: {
|
|
205
|
+
node: Visit;
|
|
206
|
+
}[];
|
|
207
|
+
};
|
|
208
|
+
}
|
|
177
209
|
export {};
|
package/lib/graphql.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*! Copyright (c) 2024, XAPP AI */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.ADD_CLIENT_MUTATION = exports.ADD_JOB_MUTATION = exports.GET_PRODUCTS_QUERY = exports.GET_PROPERTIES_QUERY = exports.ADD_NOTE_MUTATION = exports.ADD_REQUEST_MUTATION = exports.ADD_PROPERTY_MUTATION = exports.SEARCH_CLIENTS_QUERY = void 0;
|
|
4
|
+
exports.GET_FUTURE_VISITS = exports.ADD_CLIENT_MUTATION = exports.ADD_JOB_MUTATION = exports.GET_PRODUCTS_QUERY = exports.GET_PROPERTIES_QUERY = exports.ADD_NOTE_MUTATION = exports.ADD_REQUEST_MUTATION = exports.ADD_PROPERTY_MUTATION = exports.SEARCH_CLIENTS_QUERY = void 0;
|
|
5
5
|
exports.SEARCH_CLIENTS_QUERY = `query CheckExisting($searchTerm: String) {
|
|
6
6
|
clients(searchTerm: $searchTerm) {
|
|
7
7
|
nodes {
|
|
@@ -89,4 +89,28 @@ mutation AddClient($client: ClientCreateInput!) {
|
|
|
89
89
|
}
|
|
90
90
|
}`;
|
|
91
91
|
/////////////////////////////////////////
|
|
92
|
+
exports.GET_FUTURE_VISITS = `
|
|
93
|
+
query GetFutureVisits($startDate: Iso8601DateTimeRangeInput!) {
|
|
94
|
+
visits(filter: { startAt: $startDate }) {
|
|
95
|
+
edges {
|
|
96
|
+
node {
|
|
97
|
+
id
|
|
98
|
+
startAt
|
|
99
|
+
completedAt
|
|
100
|
+
allDay
|
|
101
|
+
duration
|
|
102
|
+
instructions
|
|
103
|
+
visitStatus
|
|
104
|
+
client {
|
|
105
|
+
name
|
|
106
|
+
}
|
|
107
|
+
job {
|
|
108
|
+
id
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
`;
|
|
115
|
+
/////////////////////////////////////////
|
|
92
116
|
//# sourceMappingURL=graphql.js.map
|
package/lib/graphql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":";AAAA,kCAAkC;;;AAErB,QAAA,oBAAoB,GAAG;;;;;;;EAOlC,CAAC;AAYH,qCAAqC;AAExB,QAAA,qBAAqB,GAAG;;;;;;;EAOnC,CAAC;AAqCH,qCAAqC;AAErC,cAAc;AAED,QAAA,oBAAoB,GAAG;;;;;;;EAOlC,CAAC;AA8CH,qCAAqC;AAErC,cAAc;AAED,QAAA,iBAAiB,GAAG;;;;;;;EAO/B,CAAC;AAeH,qCAAqC;AAErC,kBAAkB;AAEL,QAAA,oBAAoB,GAAG;;;;;;;;;;EAUlC,CAAC;AAYH,sCAAsC;AAEtC,gBAAgB;AAEH,QAAA,kBAAkB,GAAG;;;;;;;;;;EAUhC,CAAC;AAQH,sCAAsC;AAEtC,WAAW;AAEE,QAAA,gBAAgB,GAAG;;;;;;;;;EAS9B,CAAC;AA4CH,sCAAsC;AAEzB,QAAA,mBAAmB,GAAG;;;;;;;;;EASjC,CAAC;AAwBH,yCAAyC"}
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":";AAAA,kCAAkC;;;AAErB,QAAA,oBAAoB,GAAG;;;;;;;EAOlC,CAAC;AAYH,qCAAqC;AAExB,QAAA,qBAAqB,GAAG;;;;;;;EAOnC,CAAC;AAqCH,qCAAqC;AAErC,cAAc;AAED,QAAA,oBAAoB,GAAG;;;;;;;EAOlC,CAAC;AA8CH,qCAAqC;AAErC,cAAc;AAED,QAAA,iBAAiB,GAAG;;;;;;;EAO/B,CAAC;AAeH,qCAAqC;AAErC,kBAAkB;AAEL,QAAA,oBAAoB,GAAG;;;;;;;;;;EAUlC,CAAC;AAYH,sCAAsC;AAEtC,gBAAgB;AAEH,QAAA,kBAAkB,GAAG;;;;;;;;;;EAUhC,CAAC;AAQH,sCAAsC;AAEtC,WAAW;AAEE,QAAA,gBAAgB,GAAG;;;;;;;;;EAS9B,CAAC;AA4CH,sCAAsC;AAEzB,QAAA,mBAAmB,GAAG;;;;;;;;;EASjC,CAAC;AAwBH,yCAAyC;AAE5B,QAAA,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBhC,CAAC;AAmCF,yCAAyC"}
|
package/lib/util.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
/*! Copyright (c) 2024, XAPP AI */
|
|
2
|
-
import { ExternalLead } from "stentor-models";
|
|
2
|
+
import { DateTime, ExternalLead } from "stentor-models";
|
|
3
3
|
import { JobberContact } from "./JobberService";
|
|
4
4
|
export declare function getName(lead: ExternalLead): string;
|
|
5
5
|
export declare function leadToNote(lead: ExternalLead): string;
|
|
6
6
|
export declare function addMessageToTranscript(contact: JobberContact, transcriptData: ExternalLead): void;
|
|
7
7
|
export declare function getUTCOffset(dateString: string): number;
|
|
8
|
+
/**
|
|
9
|
+
* Array of DateTime objects for the next n days from today
|
|
10
|
+
*
|
|
11
|
+
* @param n
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
export declare function getNextDays(n: number): DateTime[];
|
package/lib/util.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUTCOffset = exports.addMessageToTranscript = exports.leadToNote = exports.getName = void 0;
|
|
3
|
+
exports.getNextDays = exports.getUTCOffset = exports.addMessageToTranscript = exports.leadToNote = exports.getName = void 0;
|
|
4
|
+
const stentor_logger_1 = require("stentor-logger");
|
|
4
5
|
function getName(lead) {
|
|
5
6
|
// Try to find a field with the name "FULL_NAME" in the lead.fields array
|
|
6
7
|
const fullNameField = lead.fields.find((field) => field.name === "FULL_NAME");
|
|
@@ -65,4 +66,33 @@ function getUTCOffset(dateString) {
|
|
|
65
66
|
return -utcOffsetHours; // Return negative because getTimezoneOffset returns positive for timezones ahead of UTC
|
|
66
67
|
}
|
|
67
68
|
exports.getUTCOffset = getUTCOffset;
|
|
69
|
+
function moveBackByMinutes(d, minutes) {
|
|
70
|
+
if (minutes !== 0) {
|
|
71
|
+
d.setMinutes(d.getMinutes() - minutes);
|
|
72
|
+
}
|
|
73
|
+
(0, stentor_logger_1.log)().info(`Jobber: Moved back ${minutes} minutes: ${d}`);
|
|
74
|
+
return d;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Array of DateTime objects for the next n days from today
|
|
78
|
+
*
|
|
79
|
+
* @param n
|
|
80
|
+
* @returns
|
|
81
|
+
*/
|
|
82
|
+
function getNextDays(n) {
|
|
83
|
+
const dates = [];
|
|
84
|
+
let today = new Date();
|
|
85
|
+
const serverOffset = today.getTimezoneOffset();
|
|
86
|
+
today = moveBackByMinutes(today, 240 - serverOffset); // TODO: visitor (browser) or service location address
|
|
87
|
+
for (let i = 1; i <= n; i++) {
|
|
88
|
+
const nextDay = new Date(today);
|
|
89
|
+
nextDay.setDate(today.getDate() + i);
|
|
90
|
+
const year = nextDay.getFullYear();
|
|
91
|
+
const month = (nextDay.getMonth() + 1).toString().padStart(2, "0");
|
|
92
|
+
const day = nextDay.getDate().toString().padStart(2, "0");
|
|
93
|
+
dates.push({ date: `${year}-${month}-${day}` });
|
|
94
|
+
}
|
|
95
|
+
return dates;
|
|
96
|
+
}
|
|
97
|
+
exports.getNextDays = getNextDays;
|
|
68
98
|
//# sourceMappingURL=util.js.map
|
package/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "1.58.
|
|
7
|
+
"version": "1.58.22",
|
|
8
8
|
"description": "Service to integrate with Jobber",
|
|
9
9
|
"types": "lib/index",
|
|
10
10
|
"main": "lib/index",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"chai": "4.4.1",
|
|
22
22
|
"dotenv": "16.4.5",
|
|
23
23
|
"mocha": "10.4.0",
|
|
24
|
-
"stentor-logger": "1.59.
|
|
24
|
+
"stentor-logger": "1.59.65",
|
|
25
25
|
"stentor-models": "1.59.63",
|
|
26
26
|
"stentor-service-fetch": "1.59.63",
|
|
27
27
|
"ts-node": "10.9.2",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"test": "exit 0",
|
|
39
39
|
"local": "mocha --recursive -r ts-node/register \"./src/**/*.test.ts\""
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "ccc8bf6bbc6ecde4e32f815eeb328c4bab92d32e",
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"addresser": "1.1.20"
|
|
44
44
|
}
|