The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/app/livechat/server/hooks/offlineMessageToChannel.js

58 lines
1.9 KiB

import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import { callbacks } from '../../../callbacks';
import { settings } from '../../../settings';
import { sendMessage } from '../../../lib';
import { LivechatDepartment, Rooms, Users } from '../../../models';
callbacks.add('livechat.offlineMessage', (data) => {
if (!settings.get('Livechat_OfflineMessageToChannel_enabled')) {
return data;
}
let channelName = settings.get('Livechat_OfflineMessageToChannel_channel_name');
let departmentName;
const { name, email, department, message: text, host } = data;
if (department && department !== '') {
const dept = LivechatDepartment.findOneById(department, { fields: { name: 1, offlineMessageChannelName: 1 } });
departmentName = dept?.name;
if (dept?.offlineMessageChannelName) {
channelName = dept.offlineMessageChannelName;
}
}
if (!channelName || channelName === '') {
return data;
}
const room = Rooms.findOneByName(channelName, { fields: { t: 1, archived: 1 } });
if (!room || room.archived || room.closedAt) {
return data;
}
const user = Users.findOneById('rocket.cat', { fields: { username: 1 } });
if (!user) {
return data;
}
const lng = settings.get('Language') || 'en';
let msg = `${ TAPi18n.__('New_Livechat_offline_message_has_been_sent', { lng }) }: \n`;
if (host && host !== '') {
msg = msg.concat(`${ TAPi18n.__('Sent_from', { lng }) }: ${ host } \n`);
}
msg = msg.concat(`${ TAPi18n.__('Visitor_Name', { lng }) }: ${ name } \n`);
msg = msg.concat(`${ TAPi18n.__('Visitor_Email', { lng }) }: ${ email } \n`);
if (departmentName) {
msg = msg.concat(`${ TAPi18n.__('Department', { lng }) }: ${ departmentName } \n`);
}
msg = msg.concat(`${ TAPi18n.__('Message', { lng }) }: ${ text } \n`);
const message = {
rid: room._id,
msg,
groupable: false,
};
sendMessage(user, message, room, true);
}, callbacks.priority.MEDIUM, 'livechat-send-email-offline-message-to-channel');