Skip to content

Commit

Permalink
Merge pull request RocketChat#963 from WideChat/sms_endpoint_departme…
Browse files Browse the repository at this point in the history
…nt_change

[IMPROVE] Add departmentName as query param and route to that department in SMS endpoint
  • Loading branch information
ear-dev committed Nov 9, 2021
2 parents 73136ff + 6c1f915 commit ca160ec
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 7 deletions.
13 changes: 7 additions & 6 deletions app/livechat/imports/server/rest/sms.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const defineDepartment = (idOrName) => {
return department && department._id;
};

const defineVisitor = (smsNumber) => {
const defineVisitor = (smsNumber, targetDepartment) => {
const visitor = LivechatVisitors.findOneVisitorByPhone(smsNumber);
let data = {
token: (visitor && visitor.token) || Random.id(),
Expand All @@ -45,9 +45,8 @@ const defineVisitor = (smsNumber) => {
});
}

const department = defineDepartment(SMS.department);
if (department) {
data.department = department;
if (targetDepartment) {
data.department = targetDepartment;
}

const id = Livechat.registerGuest(data);
Expand All @@ -70,10 +69,12 @@ API.v1.addRoute('livechat/sms-incoming/:service', {
post() {
const SMSService = SMS.getService(this.urlParams.service);
const sms = SMSService.parse(this.bodyParams);
const { departmentName } = this.queryParams;
const targetDepartment = defineDepartment(departmentName || SMS.department);

const visitor = defineVisitor(sms.from);
const visitor = defineVisitor(sms.from, targetDepartment);
const { token } = visitor;
const room = LivechatRooms.findOneOpenByVisitorToken(token);
const room = LivechatRooms.findOneOpenByVisitorTokenAndDepartmentId(token, targetDepartment);
const roomExists = !!room;
const location = normalizeLocationSharing(sms);
const rid = (room && room._id) || Random.id();
Expand Down
11 changes: 11 additions & 0 deletions app/models/server/models/LivechatRooms.js
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,17 @@ export class LivechatRooms extends Base {
return this.findOne(query, options);
}

findOneOpenByVisitorTokenAndDepartmentId(visitorToken, departmentId, options) {
const query = {
t: 'l',
open: true,
'v.token': visitorToken,
departmentId,
};

return this.findOne(query, options);
}

findOpenByVisitorTokenAndDepartmentId(visitorToken, departmentId, options) {
const query = {
t: 'l',
Expand Down
2 changes: 1 addition & 1 deletion packages/rocketchat-i18n/i18n/en.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -3947,7 +3947,7 @@
"Smileys_and_People": "Smileys & People",
"SMS": "SMS",
"SMS_Default_Omnichannel_Department": "Omnichannel Department (Default)",
"SMS_Default_Omnichannel_Department_Description": "If set, all new incoming chats initiated by this integration will be routed to this department.",
"SMS_Default_Omnichannel_Department_Description": "If set, all new incoming chats initiated by this integration will be routed to this department.\nThis setting can be overwritten by passing departmentName query param in the request.\ne.g. https://<SERVER_URL>/api/v1/livechat/sms-incoming/twilio?departmentName=< departmentName>.\nDepartment name should be URL safe.",
"SMS_Enabled": "SMS Enabled",
"SMTP": "SMTP",
"SMTP_Host": "SMTP Host",
Expand Down

0 comments on commit ca160ec

Please sign in to comment.