Skip to content

Commit 2178eda

Browse files
committed
merge sendMessage() and sendEvent() methods into a generic sendRequest() method
1 parent c555a9d commit 2178eda

4 files changed

Lines changed: 18 additions & 29 deletions

File tree

endpoints/IncomingEndpoint.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { HttpStatusCode, IHttp, IModify, IPersistence, IRead } from '@rocket.chat/apps-engine/definition/accessors';
22
import { ApiEndpoint, IApiEndpointInfo, IApiRequest, IApiResponse } from '@rocket.chat/apps-engine/definition/api';
33
import { ILivechatRoom } from '@rocket.chat/apps-engine/definition/livechat';
4-
import { IDialogflowMessage } from '../enum/Dialogflow';
4+
import { IDialogflowMessage, DialogflowRequestType } from '../enum/Dialogflow';
55
import { EndpointActionNames, IActionsEndpointContent } from '../enum/Endpoints';
66
import { Headers, Response } from '../enum/Http';
77
import { Logs } from '../enum/Logs';
@@ -50,7 +50,7 @@ export class IncomingEndpoint extends ApiEndpoint {
5050
if (!event) { throw new Error(Logs.INVALID_EVENT_DATA); }
5151

5252
try {
53-
const response: IDialogflowMessage = await Dialogflow.sendEvent(http, read, modify, sessionId, event);
53+
const response: IDialogflowMessage = await Dialogflow.sendRequest(http, read, modify, sessionId, event, DialogflowRequestType.EVENT);
5454
await createDialogflowMessage(sessionId, read, modify, response);
5555
} catch (error) {
5656
this.app.getLogger().error(`${Logs.DIALOGFLOW_REST_API_ERROR} ${error.message}`);

enum/Dialogflow.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,8 @@ export enum Base64 {
4444
export enum LanguageCode {
4545
EN = 'en',
4646
}
47+
48+
export enum DialogflowRequestType {
49+
MESSAGE = 'message',
50+
EVENT = 'event',
51+
}

handler/PostMessageSentHandler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { IApp } from '@rocket.chat/apps-engine/definition/IApp';
33
import { ILivechatMessage, ILivechatRoom } from '@rocket.chat/apps-engine/definition/livechat';
44
import { RoomType } from '@rocket.chat/apps-engine/definition/rooms';
55
import { AppSetting, DefaultMessage } from '../config/Settings';
6-
import { IDialogflowMessage } from '../enum/Dialogflow';
6+
import { DialogflowRequestType, IDialogflowMessage } from '../enum/Dialogflow';
77
import { Logs } from '../enum/Logs';
88
import { Dialogflow } from '../lib/Dialogflow';
99
import { createDialogflowMessage, createMessage } from '../lib/Message';
@@ -48,7 +48,7 @@ export class PostMessageSentHandler {
4848

4949
let response: IDialogflowMessage;
5050
try {
51-
response = (await Dialogflow.sendMessage(this.http, this.read, this.modify, rid, text));
51+
response = (await Dialogflow.sendRequest(this.http, this.read, this.modify, rid, text, DialogflowRequestType.MESSAGE));
5252
} catch (error) {
5353
this.app.getLogger().error(`${Logs.DIALOGFLOW_REST_API_ERROR} ${error.message}`);
5454

lib/Dialogflow.ts

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { IHttp, IHttpRequest, IModify, IPersistence, IRead } from '@rocket.chat/
22
import { IRoom } from '@rocket.chat/apps-engine/definition/rooms';
33
import { createSign } from 'crypto';
44
import { AppSetting } from '../config/Settings';
5-
import { DialogflowJWT, DialogflowUrl, IDialogflowAccessToken, IDialogflowEvent, IDialogflowMessage, IDialogflowQuickReplies, LanguageCode } from '../enum/Dialogflow';
5+
import { DialogflowJWT, DialogflowRequestType, DialogflowUrl, IDialogflowAccessToken, IDialogflowEvent, IDialogflowMessage, IDialogflowQuickReplies, LanguageCode } from '../enum/Dialogflow';
66
import { Headers } from '../enum/Http';
77
import { Logs } from '../enum/Logs';
88
import { base64urlEncode } from './Helper';
@@ -12,43 +12,27 @@ import { getAppSettingValue } from './Settings';
1212

1313
class DialogflowClass {
1414
private jwtExpiration: Date;
15-
public async sendMessage(http: IHttp,
15+
public async sendRequest(http: IHttp,
1616
read: IRead,
1717
modify: IModify,
1818
sessionId: string,
19-
messageText: string): Promise<IDialogflowMessage> {
19+
request: IDialogflowEvent | string,
20+
requestType: DialogflowRequestType): Promise<IDialogflowMessage> {
2021
const serverURL = await this.getServerURL(read, modify, http, sessionId);
2122

23+
const queryInput = requestType === DialogflowRequestType.EVENT ?
24+
{ event: { ...(request as IDialogflowEvent) } } :
25+
{ text: { languageCode: LanguageCode.EN, text: request } };
2226
const httpRequestContent: IHttpRequest = createHttpRequest(
2327
{ 'Content-Type': Headers.CONTENT_TYPE_JSON, 'Accept': Headers.ACCEPT_JSON },
24-
{ queryInput: { text: { languageCode: LanguageCode.EN, text: messageText } } },
28+
{ queryInput },
2529
);
2630

2731
try {
2832
const response = await http.post(serverURL, httpRequestContent);
2933
return this.parseRequest(response.data);
3034
} catch (error) {
31-
throw new Error(Logs.HTTP_REQUEST_ERROR);
32-
}
33-
}
34-
35-
public async sendEvent(http: IHttp,
36-
read: IRead,
37-
modify: IModify,
38-
sessionId: string,
39-
event: IDialogflowEvent): Promise<IDialogflowMessage> {
40-
const serverURL = await this.getServerURL(read, modify, http, sessionId);
41-
42-
const httpRequestContent: IHttpRequest = createHttpRequest(
43-
{ 'Content-Type': Headers.CONTENT_TYPE_JSON, 'Accept': Headers.ACCEPT_JSON },
44-
{ queryInput: { event } },
45-
);
46-
47-
try {
48-
const response = await http.post(serverURL, httpRequestContent);
49-
return this.parseRequest(response.data);
50-
} catch (error) {
51-
throw new Error(Logs.HTTP_REQUEST_ERROR);
35+
throw new Error(`${ Logs.HTTP_REQUEST_ERROR }`);
5236
}
5337
}
5438

0 commit comments

Comments
 (0)