@xapp/stentor-gbm 1.40.336

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.
Files changed (51) hide show
  1. package/LICENSE.md +176 -0
  2. package/README.md +10 -0
  3. package/lib/Channel.d.ts +11 -0
  4. package/lib/Channel.js +42 -0
  5. package/lib/Channel.js.map +1 -0
  6. package/lib/ChatDataStore.d.ts +28 -0
  7. package/lib/ChatDataStore.js +56 -0
  8. package/lib/ChatDataStore.js.map +1 -0
  9. package/lib/Constants.d.ts +7 -0
  10. package/lib/Constants.js +8 -0
  11. package/lib/Constants.js.map +1 -0
  12. package/lib/GbmHandlerHook.d.ts +7 -0
  13. package/lib/GbmHandlerHook.js +226 -0
  14. package/lib/GbmHandlerHook.js.map +1 -0
  15. package/lib/Guards.d.ts +13 -0
  16. package/lib/Guards.js +23 -0
  17. package/lib/Guards.js.map +1 -0
  18. package/lib/Translators/TranslateRequest/helpers.d.ts +1 -0
  19. package/lib/Translators/TranslateRequest/helpers.js +2 -0
  20. package/lib/Translators/TranslateRequest/helpers.js.map +1 -0
  21. package/lib/Translators/TranslateRequest/index.d.ts +7 -0
  22. package/lib/Translators/TranslateRequest/index.js +57 -0
  23. package/lib/Translators/TranslateRequest/index.js.map +1 -0
  24. package/lib/Translators/TranslateResponse/helpers.d.ts +1 -0
  25. package/lib/Translators/TranslateResponse/helpers.js +2 -0
  26. package/lib/Translators/TranslateResponse/helpers.js.map +1 -0
  27. package/lib/Translators/TranslateResponse/index.d.ts +11 -0
  28. package/lib/Translators/TranslateResponse/index.js +205 -0
  29. package/lib/Translators/TranslateResponse/index.js.map +1 -0
  30. package/lib/Translators/index.d.ts +3 -0
  31. package/lib/Translators/index.js +20 -0
  32. package/lib/Translators/index.js.map +1 -0
  33. package/lib/Types.d.ts +3 -0
  34. package/lib/Types.js +3 -0
  35. package/lib/Types.js.map +1 -0
  36. package/lib/__tests__/Channel.test.d.ts +1 -0
  37. package/lib/__tests__/Channel.test.js +142 -0
  38. package/lib/__tests__/Channel.test.js.map +1 -0
  39. package/lib/index.d.ts +6 -0
  40. package/lib/index.js +25 -0
  41. package/lib/index.js.map +1 -0
  42. package/lib/models/AgentMessage.d.ts +99 -0
  43. package/lib/models/AgentMessage.js +24 -0
  44. package/lib/models/AgentMessage.js.map +1 -0
  45. package/lib/models/UserMessage.d.ts +196 -0
  46. package/lib/models/UserMessage.js +76 -0
  47. package/lib/models/UserMessage.js.map +1 -0
  48. package/lib/models/index.d.ts +3 -0
  49. package/lib/models/index.js +20 -0
  50. package/lib/models/index.js.map +1 -0
  51. package/package.json +68 -0
@@ -0,0 +1,2 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ //# sourceMappingURL=helpers.js.map
@@ -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,57 @@
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
+ let rawQuery;
11
+ if (requestBody.message !== undefined && requestBody.message.text !== undefined) {
12
+ rawQuery = requestBody.message.text;
13
+ }
14
+ else if (requestBody.suggestionResponse !== undefined) {
15
+ rawQuery = requestBody.suggestionResponse.postbackData;
16
+ }
17
+ else if (requestBody.userStatus !== undefined) {
18
+ // TODO later
19
+ if (requestBody.userStatus.requestedLiveAgent !== undefined) {
20
+ (0, stentor_logger_1.log)().info("User requested transfer to live agent");
21
+ }
22
+ }
23
+ // These are generated by the external hook
24
+ const isNewSession = requestBody._chat.isNewSession;
25
+ const userId = requestBody._chat.userId;
26
+ const sessionId = requestBody._chat.sessionId;
27
+ (0, stentor_logger_1.log)().info(`GBM: session id - ${sessionId} - user id: ${userId} - new session: ${isNewSession}`);
28
+ let botRequest;
29
+ if (isNewSession) {
30
+ botRequest = {
31
+ type: "LAUNCH_REQUEST",
32
+ rawQuery,
33
+ sessionId,
34
+ userId,
35
+ isNewSession,
36
+ intentId: "LaunchRequest",
37
+ platform: Constants_1.GOOGLE_BUSINESS_MESSAGES_PLATFORM
38
+ };
39
+ }
40
+ else {
41
+ botRequest = {
42
+ type: "INTENT_REQUEST",
43
+ rawQuery,
44
+ sessionId,
45
+ userId,
46
+ isNewSession,
47
+ intentId: "NLU_RESULT_PLACEHOLDER",
48
+ platform: Constants_1.GOOGLE_BUSINESS_MESSAGES_PLATFORM
49
+ };
50
+ }
51
+ botRequest.channel = Constants_1.GOOGLE_BUSINESS_MESSAGES_CHANNEL;
52
+ botRequest.locale = "en-US"; // no actual locale in the payload
53
+ return botRequest;
54
+ }
55
+ }
56
+ exports.TranslateRequest = TranslateRequest;
57
+ //# 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,+CAAsG;AAGrG,MAAa,gBAAiB,SAAQ,gBAAgC;IAC5D,SAAS,CAAC,WAAwB;QACrC,IAAI,QAAgB,CAAC;QAErB,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC7E,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SACvC;aAAM,IAAI,WAAW,CAAC,kBAAkB,KAAK,SAAS,EAAE;YACrD,QAAQ,GAAG,WAAW,CAAC,kBAAkB,CAAC,YAAY,CAAC;SAC1D;aAAM,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,EAAE;YAC7C,aAAa;YACb,IAAI,WAAW,CAAC,UAAU,CAAC,kBAAkB,KAAK,SAAS,EAAE;gBACzD,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;aACvD;SACJ;QAED,2CAA2C;QAC3C,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC;QACpD,MAAM,MAAM,GAAW,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QAChD,MAAM,SAAS,GAAW,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC;QAEtD,IAAA,oBAAG,GAAE,CAAC,IAAI,CAAC,qBAAqB,SAAS,eAAe,MAAM,mBAAmB,YAAY,EAAE,CAAC,CAAC;QAEjG,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,6CAAiC;aAC9C,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,6CAAiC;aAC9C,CAAC;SACL;QAED,UAAU,CAAC,OAAO,GAAG,4CAAgC,CAAC;QACtD,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,kCAAkC;QAE/D,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAnDA,4CAmDA"}
@@ -0,0 +1 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
@@ -0,0 +1,2 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/Translators/TranslateResponse/helpers.ts"],"names":[],"mappings":"AAAA,oCAAoC"}
@@ -0,0 +1,11 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ import { Translator } from "@xapp/patterns/lib";
3
+ import { RequestResponse } from "stentor-models";
4
+ import { AgentMessage } from "../../models";
5
+ import { GbmChannelProps } from "../../Channel";
6
+ export declare class TranslateResponse extends Translator<RequestResponse, AgentMessage> {
7
+ protected readonly props?: GbmChannelProps;
8
+ constructor(props?: GbmChannelProps);
9
+ translate(requestResponse: RequestResponse): AgentMessage;
10
+ private getRepresentative;
11
+ }
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TranslateResponse = void 0;
4
+ /*! Copyright (c) 2022, XAPPmedia */
5
+ const lib_1 = require("@xapp/patterns/lib");
6
+ const stentor_response_1 = require("stentor-response");
7
+ const stentor_logger_1 = require("stentor-logger");
8
+ const uuid_1 = require("uuid");
9
+ const models_1 = require("../../models");
10
+ class TranslateResponse extends lib_1.Translator {
11
+ constructor(props) {
12
+ super();
13
+ this.props = props;
14
+ }
15
+ translate(requestResponse) {
16
+ let gbmResponse;
17
+ const botResponse = requestResponse.response;
18
+ (0, stentor_logger_1.log)().debug(`GBM: BOT SAYS ${JSON.stringify(botResponse)}`);
19
+ if (botResponse) {
20
+ let text;
21
+ let card;
22
+ let list;
23
+ const outputSpeech = botResponse.outputSpeech;
24
+ if (outputSpeech) {
25
+ text = outputSpeech.displayText;
26
+ }
27
+ if (botResponse.displays && botResponse.displays.length > 0) {
28
+ const display = botResponse.displays[0];
29
+ if ((0, stentor_response_1.isCard)(display)) {
30
+ card = display;
31
+ }
32
+ else if ((0, stentor_response_1.isList)(display)) {
33
+ list = display;
34
+ }
35
+ }
36
+ const messageId = (0, uuid_1.v4)();
37
+ const representative = this.getRepresentative();
38
+ const suggestions = convertSuggestions(outputSpeech.suggestions);
39
+ if (text) {
40
+ gbmResponse = {
41
+ messageId,
42
+ representative,
43
+ text,
44
+ suggestions
45
+ };
46
+ }
47
+ if (card) {
48
+ const imageUrl = card.smallImageUrl || card.largeImageUrl;
49
+ gbmResponse = {
50
+ messageId,
51
+ representative,
52
+ richCard: {
53
+ standaloneCard: {
54
+ cardContent: {
55
+ title: card.title,
56
+ description: card.content,
57
+ media: imageUrl ? {
58
+ height: models_1.Height.MEDIUM,
59
+ contentInfo: {
60
+ fileUrl: imageUrl,
61
+ forceRefresh: false
62
+ }
63
+ } : undefined,
64
+ suggestions
65
+ }
66
+ }
67
+ }
68
+ };
69
+ }
70
+ if (list) {
71
+ gbmResponse = {
72
+ messageId,
73
+ representative,
74
+ richCard: {
75
+ carouselCard: convertList(list)
76
+ }
77
+ };
78
+ }
79
+ }
80
+ else {
81
+ gbmResponse = {
82
+ messageId: (0, uuid_1.v4)(),
83
+ representative: this.getRepresentative(),
84
+ text: "Something went wrong. The gremlins were fed after midnight. Try later!"
85
+ };
86
+ }
87
+ return gbmResponse;
88
+ }
89
+ getRepresentative() {
90
+ return {
91
+ representativeType: models_1.RepresentativeType.BOT,
92
+ displayName: this.props.botAvatarName,
93
+ avatarImage: this.props.botAvatarImageUrl
94
+ };
95
+ }
96
+ }
97
+ exports.TranslateResponse = TranslateResponse;
98
+ /**
99
+ * Convert suggestions
100
+ *
101
+ * @param suggestions
102
+ */
103
+ function convertSuggestions(suggestions) {
104
+ if (!suggestions || suggestions.length === 0) {
105
+ return undefined;
106
+ }
107
+ const gbmSuggestions = [];
108
+ for (const suggestion of suggestions) {
109
+ if (typeof suggestion === "string") {
110
+ gbmSuggestions.push({
111
+ reply: {
112
+ text: suggestion,
113
+ postbackData: suggestion
114
+ }
115
+ });
116
+ }
117
+ else if (suggestion.title && suggestion.url) {
118
+ const url = suggestion.url;
119
+ // Phone dial is separate - check the url of the action (<a href="tel:123-456-7890">Call</a>)
120
+ if (url.toLowerCase().startsWith("tel:")) {
121
+ const phoneNumber = url.substring(4);
122
+ gbmSuggestions.push({
123
+ action: {
124
+ text: suggestion.title,
125
+ postbackData: suggestion.title,
126
+ dialAction: {
127
+ phoneNumber
128
+ }
129
+ },
130
+ });
131
+ }
132
+ else {
133
+ gbmSuggestions.push({
134
+ action: {
135
+ text: suggestion.title,
136
+ postbackData: suggestion.title,
137
+ openUrlAction: {
138
+ url
139
+ }
140
+ }
141
+ });
142
+ }
143
+ }
144
+ else if (suggestion.title) {
145
+ gbmSuggestions.push({
146
+ reply: {
147
+ text: suggestion.title,
148
+ postbackData: suggestion.title
149
+ }
150
+ });
151
+ }
152
+ }
153
+ return gbmSuggestions;
154
+ }
155
+ /**
156
+ * Convert stentor buttons to chips
157
+ *
158
+ * @param buttons
159
+ */
160
+ function convertButtonSuggestions(buttons) {
161
+ if (!buttons || buttons.length === 0) {
162
+ return undefined;
163
+ }
164
+ const gbmSuggestions = [];
165
+ for (const button of buttons) {
166
+ if (button.title) {
167
+ gbmSuggestions.push({
168
+ action: {
169
+ text: button.title,
170
+ postbackData: button.title
171
+ }
172
+ });
173
+ }
174
+ }
175
+ return gbmSuggestions;
176
+ }
177
+ /**
178
+ * Create individual cards for the carousel
179
+ *
180
+ * @param list
181
+ */
182
+ function convertList(list) {
183
+ var _a;
184
+ const cardContents = [];
185
+ for (const listItem of list.items) {
186
+ const imageUrl = (_a = listItem.image) === null || _a === void 0 ? void 0 : _a.url;
187
+ cardContents.push({
188
+ title: listItem.title,
189
+ description: listItem.description,
190
+ suggestions: convertButtonSuggestions(listItem.buttons),
191
+ media: imageUrl ? {
192
+ height: models_1.Height.MEDIUM,
193
+ contentInfo: {
194
+ fileUrl: imageUrl,
195
+ forceRefresh: false
196
+ }
197
+ } : undefined
198
+ });
199
+ }
200
+ return {
201
+ cardWidth: models_1.CardWidth.MEDIUM,
202
+ cardContents: cardContents,
203
+ };
204
+ }
205
+ //# 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,3 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ export * from "./TranslateRequest";
3
+ export * from "./TranslateResponse";
@@ -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
@@ -0,0 +1,3 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ export declare type GbmPlatform = "google-business-messages-platform";
3
+ export declare type GbmChannel = "google-business-messages";
package/lib/Types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Types.js","sourceRoot":"","sources":["../src/Types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /*! Copyright (c) 2022, XAPPmedia */
4
+ const chai = require("chai");
5
+ const sinonChai = require("sinon-chai");
6
+ const stentor_constants_1 = require("stentor-constants");
7
+ const Channel_1 = require("../Channel");
8
+ const Constants_1 = require("../Constants");
9
+ const Guards_1 = require("../Guards");
10
+ const Translators_1 = require("../Translators");
11
+ chai.use(sinonChai);
12
+ const expect = chai.expect;
13
+ const request = {
14
+ type: "LAUNCH_REQUEST",
15
+ intentId: "LaunchRequest",
16
+ isNewSession: true,
17
+ sessionId: "sessionId",
18
+ userId: "userID"
19
+ };
20
+ const OUTPUT_WITH_REPROMPT = {
21
+ outputSpeech: {
22
+ ssml: "<speak>Welcome to the customer service</speak>",
23
+ displayText: "Welcome!"
24
+ },
25
+ reprompt: {
26
+ ssml: "<speak>Hello! Welcome!</speak>",
27
+ displayText: "Welcome!"
28
+ }
29
+ };
30
+ const gbmRequest = {
31
+ message: {
32
+ name: "conversations/c0a6a191-98cd-49ca-a874-11f012867d2c/messages/94FFEDC0-3C7D-4126-A513-18DFD71D228A",
33
+ text: "Need gutter repair",
34
+ createTime: "2022-10-18T16:18:57.864897Z",
35
+ messageId: "94FFEDC0-3C7D-4126-A513-18DFD71D228A"
36
+ },
37
+ context: {
38
+ placeId: "",
39
+ userInfo: {
40
+ displayName: "Joe Test",
41
+ userDeviceLocale: "en-US"
42
+ },
43
+ resolvedLocale: "en"
44
+ },
45
+ sendTime: "2022-10-18T16:18:58.252717Z",
46
+ conversationId: "c0a6a191-98cd-49ca-a874-11f012867d2c",
47
+ requestId: "94FFEDC0-3C7D-4126-A513-18DFD71D228A",
48
+ agent: "brands/96dbbf59-d0b2-412d-bf05-9510a46e49ed/agents/21bdebf1-a7c9-4331-8f03-749bb68a88a2",
49
+ _chat: {
50
+ isNewSession: false,
51
+ sessionId: "gmb-session-1",
52
+ userId: "c0a6a191-98cd-49ca-a874-11f012867d2c"
53
+ }
54
+ };
55
+ describe("google business messages channel functions", () => {
56
+ describe("channel creation", () => {
57
+ it("return channel", () => {
58
+ const channel = (0, Channel_1.GoogleBusinessMessages)(undefined);
59
+ expect(channel).to.exist;
60
+ expect(channel.name).to.equal(Constants_1.GOOGLE_BUSINESS_MESSAGES_PLATFORM);
61
+ expect(channel.request).to.be.an.instanceOf(Translators_1.TranslateRequest);
62
+ expect(channel.response).to.be.an.instanceOf(Translators_1.TranslateResponse);
63
+ expect(channel.test).to.equals(Guards_1.isGbmPayload);
64
+ expect(channel.capabilities).to.equals(Channel_1.capabilities);
65
+ });
66
+ });
67
+ describe(`device capabilities`, () => {
68
+ let device;
69
+ describe("for a request", () => {
70
+ beforeEach(() => {
71
+ device = (0, Channel_1.capabilities)(gbmRequest);
72
+ });
73
+ it("sets audio support to false", () => {
74
+ expect(device.audioSupported).to.be.false;
75
+ });
76
+ it("sets can play audio to false", () => {
77
+ expect(device.canPlayAudio).to.be.false;
78
+ });
79
+ it("sets can speak to false", () => {
80
+ expect(device.canSpeak).to.be.false;
81
+ });
82
+ it("sets can throw card to true", () => {
83
+ expect(device.canTransferCall).to.be.true;
84
+ });
85
+ });
86
+ });
87
+ describe(`test (channel snooper)`, () => {
88
+ let isGbmChannel;
89
+ describe("for a request", () => {
90
+ beforeEach(() => {
91
+ isGbmChannel = (0, Guards_1.isGbmPayload)(gbmRequest);
92
+ });
93
+ it("recognizes the channel", () => {
94
+ expect(isGbmChannel).to.be.true;
95
+ });
96
+ });
97
+ });
98
+ describe(`request translator`, () => {
99
+ let requestTranslator;
100
+ let translatedRequest;
101
+ describe("for an intent request", () => {
102
+ beforeEach(() => {
103
+ requestTranslator = new Translators_1.TranslateRequest();
104
+ translatedRequest = requestTranslator.translate(gbmRequest);
105
+ });
106
+ it("translates the request", () => {
107
+ expect(translatedRequest.platform).to.equal(Constants_1.GOOGLE_BUSINESS_MESSAGES_PLATFORM);
108
+ expect(translatedRequest.userId).to.equal("c0a6a191-98cd-49ca-a874-11f012867d2c");
109
+ expect(translatedRequest.isNewSession).to.be.false;
110
+ expect(translatedRequest.type).to.equal(stentor_constants_1.INTENT_REQUEST_TYPE);
111
+ expect(translatedRequest.locale).to.equal("en-US");
112
+ });
113
+ });
114
+ });
115
+ describe("response translator", () => {
116
+ let channel;
117
+ describe("#translate()", () => {
118
+ beforeEach(() => {
119
+ channel = (0, Channel_1.GoogleBusinessMessages)({}, {
120
+ botAvatarName: "Happ el Bot", botAvatarImageUrl: "https://happ.mx/bot-avatar.jpg"
121
+ }); // dummy nlu
122
+ });
123
+ describe("when passed a response to say something", () => {
124
+ it("returns the correct payload", () => {
125
+ const result = channel.response.translate({ request, response: OUTPUT_WITH_REPROMPT });
126
+ result.messageId = "dummy"; // uuid. it changes.
127
+ expect(result).to.deep.equal({
128
+ messageId: "dummy",
129
+ representative: {
130
+ avatarImage: "https://happ.mx/bot-avatar.jpg",
131
+ displayName: "Happ el Bot",
132
+ representativeType: "BOT"
133
+ },
134
+ suggestions: undefined,
135
+ text: "Welcome!"
136
+ });
137
+ });
138
+ });
139
+ });
140
+ });
141
+ });
142
+ //# sourceMappingURL=Channel.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Channel.test.js","sourceRoot":"","sources":["../../src/__tests__/Channel.test.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ export { GoogleBusinessMessages } from "./Channel";
3
+ export * from "./Constants";
4
+ export * from "./Guards";
5
+ export * from "./Translators";
6
+ export * from "./Types";
package/lib/index.js ADDED
@@ -0,0 +1,25 @@
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
+ exports.GoogleBusinessMessages = void 0;
18
+ /*! Copyright (c) 2022, XAPPmedia */
19
+ var Channel_1 = require("./Channel");
20
+ Object.defineProperty(exports, "GoogleBusinessMessages", { enumerable: true, get: function () { return Channel_1.GoogleBusinessMessages; } });
21
+ __exportStar(require("./Constants"), exports);
22
+ __exportStar(require("./Guards"), exports);
23
+ __exportStar(require("./Translators"), exports);
24
+ __exportStar(require("./Types"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,qCAAmD;AAA1C,iHAAA,sBAAsB,OAAA;AAC/B,8CAA4B;AAC5B,2CAAyB;AACzB,gDAA8B;AAC9B,0CAAwB"}
@@ -0,0 +1,99 @@
1
+ /*! Copyright (c) 2022, XAPPmedia */
2
+ export interface AgentMessage {
3
+ messageId: string;
4
+ representative: Representative;
5
+ suggestions?: Suggestion[];
6
+ fallback?: string;
7
+ containsRichText?: boolean;
8
+ name?: string;
9
+ text?: string;
10
+ image?: Image;
11
+ richCard?: RichCard;
12
+ }
13
+ export declare enum RepresentativeType {
14
+ REPRESENTATIVE_TYPE_UNSPECIFIED = "REPRESENTATIVE_TYPE_UNSPECIFIED",
15
+ BOT = "BOT",
16
+ HUMAN = "HUMAN"
17
+ }
18
+ export interface Representative {
19
+ displayName: string;
20
+ avatarImage: string;
21
+ representativeType: RepresentativeType;
22
+ }
23
+ interface SuggestedReply {
24
+ text: string;
25
+ postbackData: string;
26
+ }
27
+ interface OpenUrlAction {
28
+ url: string;
29
+ }
30
+ interface DialAction {
31
+ phoneNumber: string;
32
+ }
33
+ interface SuggestedAction {
34
+ text: string;
35
+ postbackData: string;
36
+ openUrlAction?: OpenUrlAction;
37
+ dialAction?: DialAction;
38
+ }
39
+ interface LiveAgentRequest {
40
+ }
41
+ interface Oauth {
42
+ clientId: string;
43
+ codeChallenge: string;
44
+ scopes: [
45
+ string
46
+ ];
47
+ codeChallengeMethod: string;
48
+ }
49
+ interface AuthenticationRequest {
50
+ oauth: Oauth;
51
+ }
52
+ export interface Suggestion {
53
+ reply?: SuggestedReply;
54
+ action?: SuggestedAction;
55
+ liveAgentRequest?: LiveAgentRequest;
56
+ authenticationRequest?: AuthenticationRequest;
57
+ }
58
+ export declare enum Height {
59
+ HEIGHT_UNSPECIFIED = "HEIGHT_UNSPECIFIED",
60
+ SHORT = "SHORT",
61
+ MEDIUM = "MEDIUM",
62
+ TALL = "TALL"
63
+ }
64
+ interface Media {
65
+ height: Height;
66
+ contentInfo: ContentInfo;
67
+ }
68
+ interface CardContent {
69
+ title: string;
70
+ description: string;
71
+ media: Media;
72
+ suggestions: Suggestion[];
73
+ }
74
+ interface StandaloneCard {
75
+ cardContent: CardContent;
76
+ }
77
+ export declare enum CardWidth {
78
+ CARD_WIDTH_UNSPECIFIED = "CARD_WIDTH_UNSPECIFIED",
79
+ SMALL = "SMALL",
80
+ MEDIUM = "MEDIUM"
81
+ }
82
+ export interface CarouselCard {
83
+ cardWidth: CardWidth;
84
+ cardContents: CardContent[];
85
+ }
86
+ export interface RichCard {
87
+ standaloneCard?: StandaloneCard;
88
+ carouselCard?: CarouselCard;
89
+ }
90
+ interface ContentInfo {
91
+ fileUrl: string;
92
+ thumbnailUrl?: string;
93
+ forceRefresh: boolean;
94
+ altText?: string;
95
+ }
96
+ export interface Image {
97
+ contentInfo: ContentInfo;
98
+ }
99
+ export {};