diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-triggers.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-triggers.spec.ts index e6afc8263ce3e93d97c66a2955a9a0d0e40cc028..2768f09a1bccb3c918e7256facc73fb338567b1e 100644 --- a/apps/meteor/tests/e2e/omnichannel/omnichannel-triggers.spec.ts +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-triggers.spec.ts @@ -37,10 +37,15 @@ test.describe.serial('OC - Livechat Triggers', () => { }); test.afterAll(async ({ api }) => { + const ids = (await (await api.get('/livechat/triggers')).json()).triggers.map( + (trigger: { _id: string }) => trigger._id, + ) as unknown as string[]; + + await Promise.all(ids.map((id) => api.delete(`/livechat/triggers/${id}`))); + await Promise.all([ api.delete('/livechat/users/agent/user1'), api.delete('/livechat/users/manager/user1'), - api.delete(`/livechat/triggers/${triggersName}`), api.post('/settings/Livechat_clear_local_storage_when_chat_ended', { value: false }), ]); await agent.page.close(); @@ -68,14 +73,16 @@ test.describe.serial('OC - Livechat Triggers', () => { }); test('OC - Livechat Triggers - Create and edit trigger', async () => { + triggerMessage = 'This is a trigger message time on site'; await test.step('expect create new trigger', async () => { await agent.poHomeOmnichannel.triggers.createTrigger(triggersName, triggerMessage); await agent.poHomeOmnichannel.triggers.btnCloseToastMessage.click(); }); + triggerMessage = 'This is a trigger message chat opened by visitor'; await test.step('expect update trigger', async () => { await agent.poHomeOmnichannel.triggers.firstRowInTriggerTable(triggersName).click(); - await agent.poHomeOmnichannel.triggers.updateTrigger(triggersName); + await agent.poHomeOmnichannel.triggers.updateTrigger(triggersName, triggerMessage); await agent.poHomeOmnichannel.triggers.btnCloseToastMessage.click(); }); }); @@ -112,6 +119,8 @@ test.describe.serial('OC - Livechat Triggers', () => { }); test('OC - Livechat Triggers - Condition: after guest registration', async ({ page }) => { + + triggerMessage = 'This is a trigger message after guest registration'; await test.step('expect update trigger to after guest registration', async () => { await agent.poHomeOmnichannel.triggers.firstRowInTriggerTable(`edited-${triggersName}`).click(); await agent.poHomeOmnichannel.triggers.fillTriggerForm({ condition: 'after-guest-registration', triggerMessage }); @@ -142,6 +151,7 @@ test.describe.serial('OC - Livechat Triggers', () => { await poLiveChat.onlineAgentMessage.type('this_a_test_message_from_user'); await poLiveChat.btnSendMessageToOnlineAgent.click(); await expect(poLiveChat.txtChatMessage('this_a_test_message_from_user')).toBeVisible(); + await expect(poLiveChat.txtChatMessage(triggerMessage)).toBeVisible(); }); await test.step('expect to finish this chat', async () => { diff --git a/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts index 8e1e1cb82881b956085de05177e88d96d9ff0ca3..b7cf4fc135afd11fe0200e53f52ad09a14d2a21f 100644 --- a/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts +++ b/apps/meteor/tests/e2e/page-objects/omnichannel-triggers.ts @@ -98,13 +98,14 @@ export class OmnichannelTriggers { await this.btnSave.click(); } - public async updateTrigger(newName: string) { + public async updateTrigger(newName: string, triggerMessage: string) { await this.fillTriggerForm({ name: `edited-${newName}`, description: 'Updating the existing trigger', condition: 'chat-opened-by-visitor', sender: 'custom', agentName: 'Rocket.cat', + triggerMessage, }); await this.btnSave.click(); } diff --git a/packages/livechat/src/lib/room.js b/packages/livechat/src/lib/room.js index a38d469519db63dcdda055f917ca4fbb748ebb70..75b308cd02218b2ff0c7cd2d213bd228c0258962 100644 --- a/packages/livechat/src/lib/room.js +++ b/packages/livechat/src/lib/room.js @@ -241,7 +241,7 @@ export const onMessage = async (originalMessage) => { await doPlaySound(message); }; -export const getGreetingMessages = (messages) => messages && messages.filter((msg) => msg.trigger && msg.triggerAfterRegistration); +export const getGreetingMessages = (messages) => messages && messages.filter((msg) => msg.trigger); export const getLatestCallMessage = (messages) => messages && messages.filter((msg) => isVideoCallMessage(msg)).pop(); export const loadMessages = async () => { diff --git a/packages/livechat/src/lib/triggerActions.ts b/packages/livechat/src/lib/triggerActions.ts index 2ac9587aa84eeea9df40bc1a78af09d7b8fb4ee0..61ed6526586464ab2b6b19f949f0e84eb2f89e71 100644 --- a/packages/livechat/src/lib/triggerActions.ts +++ b/packages/livechat/src/lib/triggerActions.ts @@ -19,6 +19,7 @@ export const sendMessageAction = async (_: string, action: ILivechatSendMessageA u: agent, ts: new Date().toISOString(), _id: createToken(), + trigger: true, }; await upsertMessage(message); @@ -74,6 +75,7 @@ export const sendMessageExternalServiceAction = async ( u: agent, ts: new Date().toISOString(), _id: createToken(), + trigger: true, })); await Promise.all(messages.map((message) => upsertMessage(message)));