diff --git a/src/data/modules/flow/index.ts b/src/data/modules/flow/index.ts index acdc6821d..a84570dc8 100644 --- a/src/data/modules/flow/index.ts +++ b/src/data/modules/flow/index.ts @@ -60,7 +60,7 @@ const checkIfIsCondition = (condition: IFlowActionValueCondition, content: strin }; const handleMessage = async (msg: IMessageDocument) => { - if (msg.isGroupMsg || !msg.content) return; + if (msg.isGroupMsg || !msg.content || !msg.customerId) return; let conversation = await Conversations.getConversation(msg.conversationId); diff --git a/src/data/modules/integrations/receiveMessage.ts b/src/data/modules/integrations/receiveMessage.ts index 22c61c45d..935a97b18 100644 --- a/src/data/modules/integrations/receiveMessage.ts +++ b/src/data/modules/integrations/receiveMessage.ts @@ -97,6 +97,32 @@ export const receiveRpcMessage = async msg => { } if (action === 'create-conversation-message') { + if (doc.isMe) { + let conversation = await Conversations.findById(doc.conversationId); + + let userId = conversation?.assignedUserId; + + if (!userId) { + const integration = await Integrations.findOne({ _id: doc.integrationId }); + + userId = integration?.defaultSenderId || integration?.createdUserId; + + if (!userId) { + const user = await Users.findOne({ isOwner: true }); + + userId = user?._id; + } + + if (userId && conversation) { + conversation.assignedUserId = userId; + + await Conversations.updateOne({ _id: conversation._id }, { assignedUserId: conversation.assignedUserId }); + } + } + + doc.userId = userId; + } + const message = await ConversationMessages.createMessage(doc); const conversationDoc: { diff --git a/src/db/models/definitions/integrations.ts b/src/db/models/definitions/integrations.ts index 59b61ad60..6b6c047fb 100644 --- a/src/db/models/definitions/integrations.ts +++ b/src/db/models/definitions/integrations.ts @@ -117,6 +117,7 @@ export interface IIntegration { export interface IIntegrationDocument extends IIntegration, Document { _id: string; createdUserId: string; + defaultSenderId: string; // TODO remove formData?: ILeadData; leadData?: ILeadDataDocument; @@ -301,7 +302,7 @@ const webhookDataSchema = new Schema( export const integrationSchema = new Schema({ _id: field({ pkey: true }), createdUserId: field({ type: String, label: 'Created by' }), - + defaultSenderId: field({ type: String, label: 'Default sender' }), kind: field({ type: String, enum: KIND_CHOICES.ALL,