@xapp/stentor-slack 1.42.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/LICENSE.md +176 -0
- package/README.md +10 -0
- package/lib/Channel.d.ts +12 -0
- package/lib/Channel.js +43 -0
- package/lib/Channel.js.map +1 -0
- package/lib/ChatDataStore.d.ts +29 -0
- package/lib/ChatDataStore.js +56 -0
- package/lib/ChatDataStore.js.map +1 -0
- package/lib/Constants.d.ts +7 -0
- package/lib/Constants.js +8 -0
- package/lib/Constants.js.map +1 -0
- package/lib/Guards.d.ts +18 -0
- package/lib/Guards.js +53 -0
- package/lib/Guards.js.map +1 -0
- package/lib/SlackHandlerHook.d.ts +7 -0
- package/lib/SlackHandlerHook.js +232 -0
- package/lib/SlackHandlerHook.js.map +1 -0
- package/lib/Translators/TranslateRequest/helpers.d.ts +1 -0
- package/lib/Translators/TranslateRequest/helpers.js +2 -0
- package/lib/Translators/TranslateRequest/helpers.js.map +1 -0
- package/lib/Translators/TranslateRequest/index.d.ts +7 -0
- package/lib/Translators/TranslateRequest/index.js +45 -0
- package/lib/Translators/TranslateRequest/index.js.map +1 -0
- package/lib/Translators/TranslateResponse/helpers.d.ts +1 -0
- package/lib/Translators/TranslateResponse/helpers.js +2 -0
- package/lib/Translators/TranslateResponse/helpers.js.map +1 -0
- package/lib/Translators/TranslateResponse/index.d.ts +9 -0
- package/lib/Translators/TranslateResponse/index.js +179 -0
- package/lib/Translators/TranslateResponse/index.js.map +1 -0
- package/lib/Translators/index.d.ts +3 -0
- package/lib/Translators/index.js +20 -0
- package/lib/Translators/index.js.map +1 -0
- package/lib/Types.d.ts +3 -0
- package/lib/Types.js +3 -0
- package/lib/Types.js.map +1 -0
- package/lib/__tests__/Channel.test.d.ts +1 -0
- package/lib/__tests__/Channel.test.js +232 -0
- package/lib/__tests__/Channel.test.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.js +25 -0
- package/lib/index.js.map +1 -0
- package/lib/models/AgentMessage.d.ts +2 -0
- package/lib/models/AgentMessage.js +4 -0
- package/lib/models/AgentMessage.js.map +1 -0
- package/lib/models/UserInfo.d.ts +4 -0
- package/lib/models/UserInfo.js +4 -0
- package/lib/models/UserInfo.js.map +1 -0
- package/lib/models/UserMessage.d.ts +51 -0
- package/lib/models/UserMessage.js +4 -0
- package/lib/models/UserMessage.js.map +1 -0
- package/lib/models/index.d.ts +4 -0
- package/lib/models/index.js +21 -0
- package/lib/models/index.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.handlerHook = void 0;
|
|
13
|
+
/*! Copyright (c) 2022, XAPPmedia */
|
|
14
|
+
const stentor_constants_1 = require("stentor-constants");
|
|
15
|
+
const stentor_logger_1 = require("stentor-logger");
|
|
16
|
+
const Guards_1 = require("./Guards");
|
|
17
|
+
const ChatDataStore_1 = require("./ChatDataStore");
|
|
18
|
+
const uuid_1 = require("uuid");
|
|
19
|
+
// Initialize a single instance for the whole app
|
|
20
|
+
const web_api_1 = require("@slack/web-api");
|
|
21
|
+
const web = new web_api_1.WebClient();
|
|
22
|
+
function handlerHook(handler, payload, context, callback, services) {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
// Safety wrapper
|
|
25
|
+
yield _handlerHook(handler, payload, context, callback, services, this.props).catch(reason => {
|
|
26
|
+
(0, stentor_logger_1.log)().error(`SLACK main processing hook failed: ${reason}`);
|
|
27
|
+
let finalResponse = { error: reason };
|
|
28
|
+
if (context.buildResponse) {
|
|
29
|
+
finalResponse = context.buildResponse(stentor_constants_1.HTTP_500_INTERNAL_SERVICE_ERROR, { error: reason });
|
|
30
|
+
}
|
|
31
|
+
// tslint:disable-next-line:no-null-keyword
|
|
32
|
+
callback(null, finalResponse);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
exports.handlerHook = handlerHook;
|
|
37
|
+
// TODO
|
|
38
|
+
function lookupSlackUser(user) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
return { name: "Slacker" };
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function _handlerHook(handler, payload, context, callback, _services, props) {
|
|
44
|
+
var _a;
|
|
45
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
const chatDataStore = new ChatDataStore_1.ChatDataStore(_services.userStorageService);
|
|
47
|
+
// Webhook verification call
|
|
48
|
+
if ((0, Guards_1.isSlackChallenge)(payload)) {
|
|
49
|
+
let finalResponse = payload.challenge;
|
|
50
|
+
if (context.buildResponse) {
|
|
51
|
+
finalResponse = context.buildResponse(stentor_constants_1.HTTP_200_OK, finalResponse);
|
|
52
|
+
}
|
|
53
|
+
// tslint:disable-next-line:no-null-keyword
|
|
54
|
+
callback(null, finalResponse);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const botResponses = [];
|
|
58
|
+
const hookCallback = (error, result) => {
|
|
59
|
+
botResponses.push({ error, result });
|
|
60
|
+
};
|
|
61
|
+
// Acknowledge the receipt
|
|
62
|
+
let finalResponse = { status: "OK" }; // I just made this up. Only the status matters.
|
|
63
|
+
if (context.buildResponse) {
|
|
64
|
+
finalResponse = context.buildResponse(stentor_constants_1.HTTP_200_OK, finalResponse);
|
|
65
|
+
}
|
|
66
|
+
// tslint:disable-next-line:no-null-keyword
|
|
67
|
+
callback(null, finalResponse);
|
|
68
|
+
// Check the webhook payload
|
|
69
|
+
if (!(0, Guards_1.isSlackPayload)(payload)) {
|
|
70
|
+
(0, stentor_logger_1.log)().error(`SLACK: (?) to Bot (full payload) was ignored: ${JSON.stringify(payload, null, 2)}`);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
let event;
|
|
74
|
+
// They send the "actions" (ex. button clicks) in a application/x-www-form-urlencoded form.
|
|
75
|
+
if ((0, Guards_1.isSlackActionPayload)(payload)) {
|
|
76
|
+
event = JSON.parse(payload.payload);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
event = payload;
|
|
80
|
+
}
|
|
81
|
+
if ((0, Guards_1.isSlackAction)(event)) {
|
|
82
|
+
if (!(0, Guards_1.isSlackButtonAction)(event)) {
|
|
83
|
+
(0, stentor_logger_1.log)().info(`SLACK: Bot message ignored. Only button action is accepted.`);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if ((0, Guards_1.isSlackEventCallback)(event)) {
|
|
88
|
+
if ((0, Guards_1.isSlackBotMessageEvent)(event.event)) {
|
|
89
|
+
(0, stentor_logger_1.log)().info(`SLACK: Bot message ignored. Bot ID: ${event.event.bot_id}`);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (!(0, Guards_1.isSlackGenericMessageEvent)(event.event)) {
|
|
93
|
+
(0, stentor_logger_1.log)().info(`SLACK: Event ignored. Subtype: ${event.event.subtype}`);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
let user;
|
|
98
|
+
let channel;
|
|
99
|
+
let rawQuery;
|
|
100
|
+
// Events and action are different format
|
|
101
|
+
if ((0, Guards_1.isSlackEventCallback)(event)) {
|
|
102
|
+
if ((0, Guards_1.isSlackGenericMessageEvent)(event.event)) {
|
|
103
|
+
user = event.event.user;
|
|
104
|
+
channel = event.event.channel;
|
|
105
|
+
rawQuery = event.event.text;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else if ((0, Guards_1.isSlackAction)(event)) {
|
|
109
|
+
user = event.user.id;
|
|
110
|
+
channel = event.channel.id;
|
|
111
|
+
if ((0, Guards_1.isSlackButtonAction)(event)) {
|
|
112
|
+
if ((0, Guards_1.isSlackButton)(event.actions[0])) {
|
|
113
|
+
rawQuery = event.actions[0].value;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const userId = generateUserId(user);
|
|
118
|
+
// Session "management" stuff
|
|
119
|
+
let chatData = yield chatDataStore.get(userId);
|
|
120
|
+
let isNewSession = false;
|
|
121
|
+
if (!chatData) {
|
|
122
|
+
// Add a messenger visitor (user)
|
|
123
|
+
const userInfo = yield lookupSlackUser(user);
|
|
124
|
+
(0, stentor_logger_1.log)().info(`SLACK Visitor: ${userInfo === null || userInfo === void 0 ? void 0 : userInfo.name}`);
|
|
125
|
+
const visitorInfo = {
|
|
126
|
+
displayName: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.name) || "Slacker",
|
|
127
|
+
visitorId: user,
|
|
128
|
+
channelId: channel
|
|
129
|
+
};
|
|
130
|
+
const chatInfo = {
|
|
131
|
+
handOff: false,
|
|
132
|
+
userId,
|
|
133
|
+
sessionId: generateSessionId()
|
|
134
|
+
};
|
|
135
|
+
chatData = {
|
|
136
|
+
visitorInfo,
|
|
137
|
+
chatInfo
|
|
138
|
+
};
|
|
139
|
+
yield chatDataStore.set(userId, chatData);
|
|
140
|
+
isNewSession = true;
|
|
141
|
+
(0, stentor_logger_1.log)().info(`SLACK: new session: ${chatInfo.sessionId}`);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
// Force restart session with "safe word" (or session age)?
|
|
145
|
+
if (props.sessionRegex) {
|
|
146
|
+
if (rawQuery && props.sessionRegex.test(rawQuery)) {
|
|
147
|
+
chatData.chatInfo.sessionId = generateSessionId();
|
|
148
|
+
chatData.chatInfo.handOff = false;
|
|
149
|
+
yield chatDataStore.set(userId, chatData);
|
|
150
|
+
isNewSession = true;
|
|
151
|
+
(0, stentor_logger_1.log)().info(`SLACK: session was reset. safe word: ${rawQuery}, sessionId: ${chatData.chatInfo.sessionId}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else if (props.sessionAgeMs) {
|
|
155
|
+
// TODO
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Add the "synthetic" payload
|
|
159
|
+
event._chat = {
|
|
160
|
+
rawQuery,
|
|
161
|
+
userId,
|
|
162
|
+
sessionId: chatData.chatInfo.sessionId,
|
|
163
|
+
isNewSession
|
|
164
|
+
};
|
|
165
|
+
// Send the event to the bot
|
|
166
|
+
yield handler(event, context, hookCallback);
|
|
167
|
+
// We should have all the responses here (the callback hopefully collected them)
|
|
168
|
+
for (const botResponse of botResponses) {
|
|
169
|
+
if (!botResponse.error) {
|
|
170
|
+
let messageObject;
|
|
171
|
+
if ((_a = botResponse.result) === null || _a === void 0 ? void 0 : _a.body) {
|
|
172
|
+
try {
|
|
173
|
+
messageObject = JSON.parse(botResponse.result.body); // lambda
|
|
174
|
+
}
|
|
175
|
+
catch (e) {
|
|
176
|
+
(0, stentor_logger_1.log)().error(`SLACK: bad response body: ${botResponse.result.body}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
messageObject = botResponse.result; // express
|
|
181
|
+
}
|
|
182
|
+
yield sendResponse(messageObject, props.slackToken, channel).catch((reason) => {
|
|
183
|
+
(0, stentor_logger_1.log)().error(`SLACK: response POST failed: ${reason}`);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// flush chatDataStore
|
|
188
|
+
if (botResponses.length > 0) {
|
|
189
|
+
yield chatDataStore.flush();
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
function sendResponse(messageObject, token, channel) {
|
|
194
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
195
|
+
if (!messageObject) {
|
|
196
|
+
(0, stentor_logger_1.log)().error("SLACK: send was called with empty message!");
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
(0, stentor_logger_1.log)().info(`SLACK: sending message: ${JSON.stringify(messageObject)}`);
|
|
200
|
+
try {
|
|
201
|
+
const result = yield web.chat.postMessage({
|
|
202
|
+
token,
|
|
203
|
+
text: messageObject.text,
|
|
204
|
+
blocks: messageObject.blocks,
|
|
205
|
+
channel,
|
|
206
|
+
retryPolicy: { retries: 0 }
|
|
207
|
+
});
|
|
208
|
+
(0, stentor_logger_1.log)().info(`SLACK response: ${JSON.stringify(result)}`);
|
|
209
|
+
if (!result.ok) {
|
|
210
|
+
(0, stentor_logger_1.log)().error(`SLACK: response failed: ${result.message}`);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
(0, stentor_logger_1.log)().info(`SLACK: response was sent successfully`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
if (error.code === web_api_1.ErrorCode.PlatformError) {
|
|
218
|
+
(0, stentor_logger_1.log)().error(error.data);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
(0, stentor_logger_1.log)().error(error);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
function generateSessionId() {
|
|
227
|
+
return `slack-session-${(0, uuid_1.v4)()}`;
|
|
228
|
+
}
|
|
229
|
+
function generateUserId(user) {
|
|
230
|
+
return `slack-user-${user}`;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=SlackHandlerHook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlackHandlerHook.js","sourceRoot":"","sources":["../src/SlackHandlerHook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! Copyright (c) 2022, XAPPmedia */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/Translators/TranslateRequest/helpers.ts"],"names":[],"mappings":"AAAA,oCAAoC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*! Copyright (c) 2022, XAPPmedia */
|
|
2
|
+
import { Translator } from "@xapp/patterns/lib";
|
|
3
|
+
import { Request } from "stentor-models";
|
|
4
|
+
import { UserMessage } from "../../models";
|
|
5
|
+
export declare class TranslateRequest extends Translator<UserMessage, Request> {
|
|
6
|
+
translate(requestBody: UserMessage): Request;
|
|
7
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TranslateRequest = void 0;
|
|
4
|
+
/*! Copyright (c) 2022, XAPPmedia */
|
|
5
|
+
const lib_1 = require("@xapp/patterns/lib");
|
|
6
|
+
const stentor_logger_1 = require("stentor-logger");
|
|
7
|
+
const Constants_1 = require("../../Constants");
|
|
8
|
+
class TranslateRequest extends lib_1.Translator {
|
|
9
|
+
translate(requestBody) {
|
|
10
|
+
// These are generated by the external hook
|
|
11
|
+
const isNewSession = requestBody._chat.isNewSession;
|
|
12
|
+
const userId = requestBody._chat.userId;
|
|
13
|
+
const sessionId = requestBody._chat.sessionId;
|
|
14
|
+
const rawQuery = requestBody._chat.rawQuery;
|
|
15
|
+
(0, stentor_logger_1.log)().info(`SLACK: session id - ${sessionId} - user id: ${userId} - new session: ${isNewSession}`);
|
|
16
|
+
let botRequest;
|
|
17
|
+
if (isNewSession) {
|
|
18
|
+
botRequest = {
|
|
19
|
+
type: "LAUNCH_REQUEST",
|
|
20
|
+
rawQuery,
|
|
21
|
+
sessionId,
|
|
22
|
+
userId,
|
|
23
|
+
isNewSession,
|
|
24
|
+
intentId: "LaunchRequest",
|
|
25
|
+
platform: Constants_1.SLACK_PLATFORM
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
botRequest = {
|
|
30
|
+
type: "INTENT_REQUEST",
|
|
31
|
+
rawQuery,
|
|
32
|
+
sessionId,
|
|
33
|
+
userId,
|
|
34
|
+
isNewSession,
|
|
35
|
+
intentId: "NLU_RESULT_PLACEHOLDER",
|
|
36
|
+
platform: Constants_1.SLACK_PLATFORM
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
botRequest.channel = Constants_1.SLACK_CHANNEL;
|
|
40
|
+
botRequest.locale = "en-US"; // no actual locale in the payload
|
|
41
|
+
return botRequest;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.TranslateRequest = TranslateRequest;
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Translators/TranslateRequest/index.ts"],"names":[],"mappings":";;;AAAC,oCAAoC;AACrC,4CAAgD;AAQhD,mDAAqC;AAErC,+CAAgE;AAG/D,MAAa,gBAAiB,SAAQ,gBAAgC;IAC5D,SAAS,CAAC,WAAwB;QACrC,2CAA2C;QAC3C,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC;QACpD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QACxC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;QAE5C,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,uBAAuB,SAAS,eAAe,MAAM,mBAAmB,YAAY,EAAE,CAAC,CAAC;QAEnG,IAAI,UAAmF,CAAC;QAExF,IAAI,YAAY,EAAE;YACd,UAAU,GAAG;gBACT,IAAI,EAAE,gBAAgB;gBACtB,QAAQ;gBACR,SAAS;gBACT,MAAM;gBACN,YAAY;gBACZ,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,0BAAc;aAC3B,CAAC;SACL;aAAM;YACH,UAAU,GAAG;gBACT,IAAI,EAAE,gBAAgB;gBACtB,QAAQ;gBACR,SAAS;gBACT,MAAM;gBACN,YAAY;gBACZ,QAAQ,EAAE,wBAAwB;gBAClC,QAAQ,EAAE,0BAAc;aAC3B,CAAC;SACL;QAED,UAAU,CAAC,OAAO,GAAG,yBAAa,CAAC;QACnC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,kCAAkC;QAE/D,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAvCA,4CAuCA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! Copyright (c) 2022, XAPPmedia */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/Translators/TranslateResponse/helpers.ts"],"names":[],"mappings":"AAAA,oCAAoC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Translator } from "@xapp/patterns/lib";
|
|
2
|
+
import { RequestResponse } from "stentor-models";
|
|
3
|
+
import { AgentMessage } from "../../models";
|
|
4
|
+
import { SlackChannelProps } from "../../Channel";
|
|
5
|
+
export declare class TranslateResponse extends Translator<RequestResponse, AgentMessage> {
|
|
6
|
+
protected readonly props?: SlackChannelProps;
|
|
7
|
+
constructor(props?: SlackChannelProps);
|
|
8
|
+
translate(requestResponse: RequestResponse): AgentMessage;
|
|
9
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TranslateResponse = void 0;
|
|
4
|
+
const lib_1 = require("@xapp/patterns/lib");
|
|
5
|
+
const stentor_response_1 = require("stentor-response");
|
|
6
|
+
const stentor_logger_1 = require("stentor-logger");
|
|
7
|
+
class TranslateResponse extends lib_1.Translator {
|
|
8
|
+
constructor(props) {
|
|
9
|
+
super();
|
|
10
|
+
this.props = props;
|
|
11
|
+
}
|
|
12
|
+
translate(requestResponse) {
|
|
13
|
+
const botResponse = requestResponse.response;
|
|
14
|
+
(0, stentor_logger_1.log)().info(`SLACK: BOT SAYS ${JSON.stringify(botResponse)}`);
|
|
15
|
+
if (botResponse) {
|
|
16
|
+
let text;
|
|
17
|
+
let card;
|
|
18
|
+
let list;
|
|
19
|
+
const outputSpeech = botResponse.outputSpeech;
|
|
20
|
+
if (outputSpeech) {
|
|
21
|
+
text = outputSpeech.displayText;
|
|
22
|
+
}
|
|
23
|
+
if (botResponse.displays && botResponse.displays.length > 0) {
|
|
24
|
+
const display = botResponse.displays[0];
|
|
25
|
+
if ((0, stentor_response_1.isCard)(display)) {
|
|
26
|
+
card = display;
|
|
27
|
+
}
|
|
28
|
+
else if ((0, stentor_response_1.isList)(display)) {
|
|
29
|
+
list = display;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Now build up the response
|
|
33
|
+
const slackResponse = {
|
|
34
|
+
channel: undefined,
|
|
35
|
+
blocks: []
|
|
36
|
+
};
|
|
37
|
+
if (text) {
|
|
38
|
+
const textBlock = {
|
|
39
|
+
type: "section",
|
|
40
|
+
text: {
|
|
41
|
+
type: "plain_text",
|
|
42
|
+
text
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
slackResponse.blocks.push(textBlock);
|
|
46
|
+
slackResponse.text = text;
|
|
47
|
+
}
|
|
48
|
+
if (card) {
|
|
49
|
+
slackResponse.blocks = slackResponse.blocks.concat(createCardBlocks(card));
|
|
50
|
+
}
|
|
51
|
+
else if (list) {
|
|
52
|
+
slackResponse.blocks = slackResponse.blocks.concat(createListBlocks(list));
|
|
53
|
+
}
|
|
54
|
+
// Finally chips
|
|
55
|
+
if (outputSpeech.suggestions && outputSpeech.suggestions.length > 0) {
|
|
56
|
+
const actions = {
|
|
57
|
+
type: "actions",
|
|
58
|
+
elements: convertSuggestions(outputSpeech.suggestions)
|
|
59
|
+
};
|
|
60
|
+
slackResponse.blocks = slackResponse.blocks.concat(actions);
|
|
61
|
+
}
|
|
62
|
+
if (slackResponse.blocks.length === 0) {
|
|
63
|
+
slackResponse.blocks = undefined;
|
|
64
|
+
}
|
|
65
|
+
return slackResponse;
|
|
66
|
+
}
|
|
67
|
+
return { channel: undefined, error: "Something went wrong. The gremlins were fed after midnight. Try later!" };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.TranslateResponse = TranslateResponse;
|
|
71
|
+
function convertSuggestions(suggestions) {
|
|
72
|
+
if (!suggestions || suggestions.length === 0) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
const slackSuggestions = [];
|
|
76
|
+
for (const suggestion of suggestions) {
|
|
77
|
+
if (typeof suggestion === "string") {
|
|
78
|
+
slackSuggestions.push(createButton(suggestion));
|
|
79
|
+
}
|
|
80
|
+
else if (suggestion.title && suggestion.url) {
|
|
81
|
+
// TODO Link-out
|
|
82
|
+
}
|
|
83
|
+
else if (suggestion.title) {
|
|
84
|
+
slackSuggestions.push(createButton(suggestion.title));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return slackSuggestions;
|
|
88
|
+
}
|
|
89
|
+
function createButton(label, value) {
|
|
90
|
+
return {
|
|
91
|
+
type: "button",
|
|
92
|
+
text: {
|
|
93
|
+
type: "plain_text",
|
|
94
|
+
emoji: true,
|
|
95
|
+
text: label
|
|
96
|
+
},
|
|
97
|
+
style: "primary",
|
|
98
|
+
value: value || label
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function createCardBlocks(card) {
|
|
102
|
+
const blocks = [];
|
|
103
|
+
const titleBlock = {
|
|
104
|
+
type: "header",
|
|
105
|
+
text: {
|
|
106
|
+
type: "plain_text",
|
|
107
|
+
text: `*${card.title}*`
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
blocks.push(titleBlock);
|
|
111
|
+
const contentBlock = {
|
|
112
|
+
type: "section",
|
|
113
|
+
text: {
|
|
114
|
+
type: "mrkdwn",
|
|
115
|
+
text: `${card.content}`
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
const imageUrl = card.largeImageUrl || card.smallImageUrl
|
|
119
|
+
|| "https://aeshome.us/wp-content/uploads/2020/03/bigstock-Classy-Kitchen-Interior-2675022-768x511.jpg";
|
|
120
|
+
if (imageUrl) {
|
|
121
|
+
const imageBlock = {
|
|
122
|
+
type: "image",
|
|
123
|
+
image_url: imageUrl,
|
|
124
|
+
alt_text: card.accessibilityText
|
|
125
|
+
};
|
|
126
|
+
contentBlock.accessory = imageBlock;
|
|
127
|
+
}
|
|
128
|
+
blocks.push(contentBlock);
|
|
129
|
+
if (card.buttons) {
|
|
130
|
+
// TODO
|
|
131
|
+
}
|
|
132
|
+
return blocks;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Just throw out cards. List or carousel needs more tinkering.
|
|
136
|
+
*
|
|
137
|
+
* @param list
|
|
138
|
+
*/
|
|
139
|
+
function createListBlocks(list) {
|
|
140
|
+
var _a, _b;
|
|
141
|
+
const blocks = [];
|
|
142
|
+
for (const item of list.items) {
|
|
143
|
+
const titleBlock = {
|
|
144
|
+
type: "header",
|
|
145
|
+
text: {
|
|
146
|
+
type: "plain_text",
|
|
147
|
+
text: `*${item.title}*`
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
blocks.push(titleBlock);
|
|
151
|
+
const contentBlock = {
|
|
152
|
+
type: "section",
|
|
153
|
+
text: {
|
|
154
|
+
type: "mrkdwn",
|
|
155
|
+
text: `*${item.description}*`
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
const imageUrl = ((_a = item.image) === null || _a === void 0 ? void 0 : _a.url)
|
|
159
|
+
|| "https://aeshome.us/wp-content/uploads/2020/03/bigstock-Classy-Kitchen-Interior-2675022-768x511.jpg";
|
|
160
|
+
if (imageUrl) {
|
|
161
|
+
const imageBlock = {
|
|
162
|
+
type: "image",
|
|
163
|
+
image_url: imageUrl,
|
|
164
|
+
alt_text: ((_b = item.image) === null || _b === void 0 ? void 0 : _b.accessibilityText) || "this is an image"
|
|
165
|
+
};
|
|
166
|
+
contentBlock.accessory = imageBlock;
|
|
167
|
+
}
|
|
168
|
+
blocks.push(contentBlock);
|
|
169
|
+
if (item.buttons) {
|
|
170
|
+
// TODO
|
|
171
|
+
}
|
|
172
|
+
const dividerBlock = {
|
|
173
|
+
type: "divider"
|
|
174
|
+
};
|
|
175
|
+
blocks.push(dividerBlock);
|
|
176
|
+
}
|
|
177
|
+
return blocks;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Translators/TranslateResponse/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
/*! Copyright (c) 2022, XAPPmedia */
|
|
18
|
+
__exportStar(require("./TranslateRequest"), exports);
|
|
19
|
+
__exportStar(require("./TranslateResponse"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Translators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,qDAAmC;AACnC,sDAAoC"}
|
package/lib/Types.d.ts
ADDED
package/lib/Types.js
ADDED
package/lib/Types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Types.js","sourceRoot":"","sources":["../src/Types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|