Skip to content

Commit 0f36b36

Browse files
d-gubertKevLehmantiagoevanpMartinSchoeler
authored
[NEW] Omnichannel source identification fields (RocketChat#23090)
* Add new fields to IOmnichannelRoom and adapt livechat bridge to them * Add source information to places that create livechat rooms * Add deprecation warning to unused livechat methods and remove source from native facebook integration * Remove unnecesary alias for widget * Update app/lib/server/lib/deprecationWarningLogger.ts * Update Apps-Engine version * frontend part * Change way of identifying when a chat is coming through widget * Update deprecationlogger to new logger interface * Fix usage of source.type as key * sms icon * [NEW] Add Channel Source details to room info panel (RocketChat#23224) * Add Source icon/text to room info * Fix TS error and styling * Change order * Typing and style fix * Use source.id instead of email object * useEndpoint * Revert "Merge branch 'develop' into new/omnichannel-source-fields" This reverts commit 7fea2ad, reversing changes made to dbbcaf4. * Removing unnecesary changes from branch * why github, why? * Bump icons & fuselage to latest versions Co-authored-by: Kevin Aleman <kevin.aleman@rocket.chat> Co-authored-by: Tiago Evangelista Pinto <tiago.evangelista@rocket.chat> Co-authored-by: Martin Schoeler <martin.schoeler@rocket.chat>
1 parent c2ab5e1 commit 0f36b36

29 files changed

Lines changed: 4974 additions & 4686 deletions

File tree

app/api/server/helpers/deprecationWarning.js

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { API } from '../api';
2+
import { apiDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger';
3+
4+
(API as any).helperMethods.set('deprecationWarning', function _deprecationWarning({ endpoint, versionWillBeRemoved, response }: { endpoint: string; versionWillBeRemoved: string; response: any }) {
5+
const warningMessage = `The endpoint "${ endpoint }" is deprecated and will be removed after version ${ versionWillBeRemoved }`;
6+
apiDeprecationLogger.warn(warningMessage);
7+
if (process.env.NODE_ENV === 'development') {
8+
return {
9+
warning: warningMessage,
10+
...response,
11+
};
12+
}
13+
14+
return response;
15+
});

app/api/server/helpers/isWidget.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { parse } from 'cookie';
2+
3+
import { API } from '../api';
4+
5+
(API as any).helperMethods.set('isWidget', function _isWidget() {
6+
// @ts-expect-error
7+
const { headers } = this.request;
8+
9+
const { rc_room_type: roomType, rc_is_widget: isWidget } = parse(headers.cookie);
10+
11+
const isLivechatRoom = roomType && roomType === 'l';
12+
return !!(isLivechatRoom && isWidget === 't');
13+
});

app/api/server/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import './helpers/insertUserObject';
99
import './helpers/isUserFromParams';
1010
import './helpers/parseJsonQuery';
1111
import './helpers/requestParams';
12+
import './helpers/isWidget';
1213
import './default/info';
1314
import './v1/assets';
1415
import './v1/channels';

app/apps/server/bridges/livechat.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
LivechatRooms,
2020
} from '../../../models/server';
2121
import { AppServerOrchestrator } from '../orchestrator';
22+
import { OmnichannelSourceType } from '../../../../definition/IRoom';
2223

2324
export class AppLivechatBridge extends LivechatBridge {
2425
// eslint-disable-next-line no-empty-function
@@ -45,7 +46,13 @@ export class AppLivechatBridge extends LivechatBridge {
4546
guest: this.orch.getConverters()?.get('visitors').convertAppVisitor(message.visitor),
4647
message: this.orch.getConverters()?.get('messages').convertAppMessage(message),
4748
agent: undefined,
48-
roomInfo: undefined,
49+
roomInfo: {
50+
source: {
51+
type: OmnichannelSourceType.APP,
52+
id: appId,
53+
alias: this.orch.getManager()?.getOneById(appId)?.getNameSlug(),
54+
},
55+
},
4956
});
5057

5158
return msg._id;
@@ -81,7 +88,13 @@ export class AppLivechatBridge extends LivechatBridge {
8188
guest: this.orch.getConverters()?.get('visitors').convertAppVisitor(visitor),
8289
agent: agentRoom,
8390
rid: Random.id(),
84-
roomInfo: undefined,
91+
roomInfo: {
92+
source: {
93+
type: OmnichannelSourceType.APP,
94+
id: appId,
95+
alias: this.orch.getManager()?.getOneById(appId)?.getNameSlug(),
96+
},
97+
},
8598
extraParams: undefined,
8699
});
87100

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { Logger } from '../../../logger/server';
2+
3+
const deprecationLogger = new Logger('DeprecationWarning');
4+
5+
export const apiDeprecationLogger = deprecationLogger.section('API');
6+
export const methodDeprecationLogger = deprecationLogger.section('METHOD');
7+
export const functionDeprecationLogger = deprecationLogger.section('FUNCTION');

app/livechat/imports/server/rest/sms.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { LivechatRooms, LivechatVisitors, LivechatDepartment } from '../../../..
77
import { API } from '../../../../api/server';
88
import { SMS } from '../../../../sms';
99
import { Livechat } from '../../../server/lib/Livechat';
10+
import { OmnichannelSourceType } from '../../../../../definition/IRoom';
1011

1112
const getUploadFile = (details, fileUrl) => {
1213
const response = HTTP.get(fileUrl, { npmRequestOptions: { encoding: null } });
@@ -83,6 +84,10 @@ API.v1.addRoute('livechat/sms-incoming/:service', {
8384
sms: {
8485
from: sms.to,
8586
},
87+
source: {
88+
type: OmnichannelSourceType.SMS,
89+
alias: this.urlParams.service,
90+
},
8691
},
8792
};
8893

app/livechat/imports/server/rest/upload.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,6 @@ API.v1.addRoute('livechat/upload/:rid', {
7272
uploadedFile.description = fields.description;
7373

7474
delete fields.description;
75-
API.v1.success(Meteor.call('sendFileLivechatMessage', this.urlParams.rid, visitorToken, uploadedFile, fields));
75+
return API.v1.success(Meteor.call('sendFileLivechatMessage', this.urlParams.rid, visitorToken, uploadedFile, fields));
7676
},
7777
});

app/livechat/server/api/v1/message.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { findGuest, findRoom, normalizeHttpHeaderData } from '../lib/livechat';
1010
import { Livechat } from '../../lib/Livechat';
1111
import { normalizeMessageFileUpload } from '../../../../utils/server/functions/normalizeMessageFileUpload';
1212
import { settings } from '../../../../settings/server';
13+
import { OmnichannelSourceType } from '../../../../../definition/IRoom';
1314

1415
API.v1.addRoute('livechat/message', {
1516
post() {
@@ -56,6 +57,11 @@ API.v1.addRoute('livechat/message', {
5657
token,
5758
},
5859
agent,
60+
roomInfo: {
61+
source: {
62+
type: this.isWidget() ? OmnichannelSourceType.WIDGET : OmnichannelSourceType.API,
63+
},
64+
},
5965
};
6066

6167
const result = Promise.await(Livechat.sendMessage(sendMessage));
@@ -305,6 +311,11 @@ API.v1.addRoute('livechat/messages', { authRequired: true }, {
305311
token: visitorToken,
306312
msg: message.msg,
307313
},
314+
roomInfo: {
315+
source: {
316+
type: this.isWidget() ? OmnichannelSourceType.WIDGET : OmnichannelSourceType.API,
317+
},
318+
},
308319
};
309320
const sentMessage = Promise.await(Livechat.sendMessage(sendMessage));
310321
return {

app/livechat/server/api/v1/room.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { findGuest, findRoom, getRoom, settings, findAgent, onCheckRoomParams }
1010
import { Livechat } from '../../lib/Livechat';
1111
import { normalizeTransferredByData } from '../../lib/Helper';
1212
import { findVisitorInfo } from '../lib/visitors';
13-
13+
import { OmnichannelSourceType } from '../../../../../definition/IRoom';
1414

1515
API.v1.addRoute('livechat/room', {
1616
get() {
@@ -46,7 +46,13 @@ API.v1.addRoute('livechat/room', {
4646
}
4747

4848
const rid = Random.id();
49-
room = Promise.await(getRoom({ guest, rid, agent, extraParams }));
49+
const roomInfo = {
50+
source: {
51+
type: this.isWidget() ? OmnichannelSourceType.WIDGET : OmnichannelSourceType.API,
52+
},
53+
};
54+
55+
room = Promise.await(getRoom({ guest, rid, agent, roomInfo, extraParams }));
5056
return API.v1.success(room);
5157
}
5258

0 commit comments

Comments
 (0)