# Release notes 1.16.14 ## Feature list * [<link on issue/>] <short description/> ## Bug fixes list * [<link on issue/>] <short description/> ## Services to deploy * main worker | ENV | Status | | --- | ------ | | TEST| Done | | UAT | Done | | PROD| | * core | ENV | Status | | --- | ------ | | TEST| Done | | UAT | Done | | PROD| | * user app module | ENV | Status | | --- | ------ | | TEST| Done | | UAT | Done | | PROD| | * facebook worker | ENV | Status | | --- | ------ | | TEST| Done | | UAT | Done | | PROD| | * user app worker | ENV | Status | | --- | ------ | | TEST| Done | | UAT | Done | | PROD| | * cx-one worker | ENV | Status | | --- | ------ | | TEST| Done | | UAT | Done | | PROD| | * widget | ENV | Status | | --- | ------ | | TEST| Done | | UAT | Done | | PROD| | * <service name/> | ENV | Status | | --- | ------ | | TEST| | | UAT | | | PROD| | ## DB ### Functionality max message length on facebook platform | ENV | Status | | --- | ------ | | TEST| Done | | UAT | Done | | PROD| Done | ``` db.platforms.findOneAndUpdate({"platformId" : 3}, { $set:{ "limitations.maxMessageTextLength": 1999}}) ``` ### Functionality templates | ENV | Status | | --- | ------ | | TEST| Done | | UAT | Done | | PROD| Done | ``` db.getCollection("systemFunctions").insert({ "systemApplicationId": 0, "systemFunctionId": 639, "function": "/templates", "description": "Templates", "permissionLevel": "workspace", "availablePermissionTypeIds": [ 1,2,3,4 ], "name": "Manage templates", }) db.getCollection("systemFunctions").insert({ "systemApplicationId": 0, "systemFunctionId": 640, "function": "/templates", "description": "Template messages", "permissionLevel": "workspace", "availablePermissionTypeIds": [ 1,2,3,4 ], "name": "/templates", "parentId": 639, "paths": [ { "id": "put", "path": "/templates/:templateId" }, { "id": "patch", "path": "/templates/:templateId" }, { "id": "delete", "path": "/templates/:templateId" } ] }) db.getCollection("systemFunctions").insert({ "systemApplicationId": 0, "systemFunctionId": 643, "function": "/platforms/rake-live-chat/:rakeLiveChatWorkspaceId(\\d+)/templates/:templateId(\\d+)", "description": "Updating attached templates", "permissionLevel": "workspace", "availablePermissionTypeIds": [ 3 ], "name": "/platforms/rake-live-chat/:rakeLiveChatWorkspaceId(\\d+)/templates/:templateId(\\d+)", "parentId": 79 }); db.messageActions.insertMany([ { messageActionId: 0, name: 'create-task', parameters: [ { fieldName: 'sessionTtl', default: 10 * 1000, type: 'Number', isEditable: false }, { fieldName: 'taskTypeId', default: -1, type: 'Number', isEditable: false }, { fieldName: 'taskTtl', default: 24 * 60 * 60 * 1000, type: 'Number', isEditable: true }, { fieldName: 'taskAssignedEntityId', default: null, type: 'Number', isEditable: true }, ] }, { messageActionId: 1, name: 'close-widget' }, { messageActionId: 2, name: 'open-template', parameters: [ { fieldName: 'templateId', default: null, type: 'Number', isEditable: true } ] }, { messageActionId: 3, name: 'hide-widget' }, { messageActionId: 4, name: 'start-chat' }, { messageActionId: 5, name: 'enable-input-area' }, ]) db.messageInputs.insertMany([ { messageInputId: 1, name: 'button {{localizationId}}', content: { tag: 'button', type: 'postback', }, localizedValues: [ { fieldName: 'title' }, ], availableTemplateActionIds: [0, 1, 2, 3, 4, 5], }, { messageInputId: 2, name: 'multi-line {{localizationId}}', content: { tag: 'input', type: 'multi-line', }, localizedValues: [ { fieldName: 'placeholder' }, ], parameters: [ { fieldName: 'systemReference', default: null, type: 'Number', isEditable: false }, { fieldName: 'isRequired', default: false, type: 'Boolean', isEditable: true }, ] }, { messageInputId: 3, name: 'email {{localizationId}}', content: { tag: 'input', type: 'email', }, localizedValues: [ { fieldName: 'placeholder' }, ], parameters: [ { fieldName: 'systemReference', default: 'entity.email', type: 'String', isEditable: false }, { fieldName: 'isRequired', default: false, type: 'Boolean', isEditable: true }, ] }, { messageInputId: 7, name: 'phoneNumber {{localizationId}}', content: { tag: 'input', type: 'phoneNumber', }, localizedValues: [ { fieldName: 'placeholder' }, ], parameters: [ { fieldName: 'systemReference', default: 'entity.phoneNumber', type: 'String', isEditable: false }, { fieldName: 'defaultCountryCode', default: null, type: 'String', isEditable: true }, { fieldName: 'isRequired', default: false, type: 'Boolean', isEditable: true }, ] }, { messageInputId: 4, name: 'Last name {{localizationId}}', content: { tag: 'input', type: 'text', }, localizedValues: [ { fieldName: 'placeholder' }, ], parameters: [ { fieldName: 'systemReference', default: 'entity.lastName', type: 'String', isEditable: false }, { fieldName: 'isRequired', default: false, type: 'Boolean', isEditable: true }, ] }, { messageInputId: 5, name: 'First name {{localizationId}}', content: { tag: 'input', type: 'text', }, localizedValues: [ { fieldName: 'placeholder' }, ], parameters: [ { fieldName: 'systemReference', default: 'entity.firstName', type: 'String', isEditable: false }, { fieldName: 'isRequired', default: false, type: 'Boolean', isEditable: true }, ] }, { messageInputId: 6, name: 'Paragraph {{localizationId}}', content: { tag: 'paragraph', type: 'text', }, localizedValues: [ { fieldName: 'text' }, ] }, ]) db.rakeLiveChat_EventTypes.updateMany({}, { $set: { isAllowedForProactiveMessages: true } }); db.rakeLiveChat_EventTypes.insertOne({ "select": [ { "name": "true", "conditionId": 0 }, { "name": "false", "conditionId": 4 } ], "multiselect": null, "disabled": false, "name": "When agents available", "second": null, "rakeLiveChat_EventTypeId": 11, "__v": 0, "orderId": null }); db.rakeLiveChat_EventTypes.updateMany({ rakeLiveChat_EventTypeId: { $nin: [2, 3] } }, { $set: { isAllowedForTemplates: true } }); ``` ### Functionality script for inserting base templates | ENV | Status | | --- | ------ | | TEST| | | UAT | Done | | PROD| | ``` db.getCollection("templates").insert({ "templateId": NumberInt(2), "name": "Leave a Message w/Email", "scope": { "type": "system" }, "assignments": { "type": "organization", "ids": [ 0, 3, 4 ] }, "content": { "type": "form", "elements": [ { "messageInputId": NumberInt(6), "tag": "paragraph", "type": "text", "text": { "value": "We're offline at the moment, please provide your updated contact information and leave a detailed message. We will be notified and someone will contact you as soon as possible.", "localizations": [ ] } }, { "messageInputId": NumberInt(5), "tag": "input", "type": "text", "placeholder": { "value": "First name", "localizations": [ ] }, "systemReference": "entity.firstName", "parameters": { "isRequired": true } }, { "messageInputId": NumberInt(3), "tag": "input", "type": "email", "placeholder": { "value": "Email", "localizations": [ ] }, "systemReference": "entity.email", "parameters": { "isRequired": true } }, { "messageInputId": NumberInt(2), "tag": "input", "type": "multi-line", "placeholder": { "value": "Detailed reason for contacting us", "localizations": [ ] }, "systemReference": "multiLine_1", "parameters": { "isRequired": false } }, { "messageInputId": NumberInt(1), "tag": "button", "type": "postback", "title": { "value": "Leave a message", "localizations": [ ] }, "parameters": { "actions": [ { "messageActionId": NumberInt(0), "name": "create-task", "parameters": { "sessionTtl": NumberInt(10000), "taskTypeId": -1 } }, { "messageActionId": NumberInt(2), "name": "open-template", "parameters": { "templateId": NumberInt(1) } }, { "messageActionId": NumberInt(5), "name": "enable-input-area" } ] } } ] } }) db.getCollection("templates").insert({ "templateId": NumberInt(1), "name": "Thank you message", "scope": { "type": "system" }, "assignments": { "type": "organization", "ids": [ 0, 3, 4 ] }, "content": { "type": "form", "elements": [ { "messageInputId": NumberInt(6), "tag": "paragraph", "type": "text", "text": { "value": "Thank you for your message. Someone will respond via email shortly.", "localizations": [ ] } }, { "messageInputId": NumberInt(1), "tag": "button", "type": "postback", "title": { "value": "Thank you", "localizations": [ ] }, "parameters": { "actions": [] } } ] } }) db.getCollection("templates").insert({ "name": "Pre-ChatForm w/Email", "scope": { "type": "system" }, "assignments": { "type": "organization", "ids": [ 0,3,4 ] }, "content": { "type": "form", "elements": [ { "messageInputId": 6, "tag": "paragraph", "type": "text", "text": { "value": "Please provide your updated contact information to begin a chat.", "localizations": [ ] } }, { "messageInputId": 5, "tag": "input", "type": "text", "placeholder": { "value": "First name", "localizations": [ ] }, "systemReference": "entity.firstName", "parameters": { "isRequired": false } }, { "messageInputId": 3, "tag": "input", "type": "email", "placeholder": { "value": "Email", "localizations": [ ] }, "systemReference": "entity.email", "parameters": { "isRequired": true } }, { "messageInputId": 2, "tag": "input", "type": "multi-line", "placeholder": { "value": "Reason for contacting us", "localizations": [ ] }, "systemReference": "multiLine_1", "parameters": { "isRequired": false } }, { "messageInputId": 1, "tag": "button", "type": "postback", "title": { "value": "Start chat", "localizations": [ ] }, "parameters": { "actions": [ { "messageActionId": 4, "name": "start-chat" }, { "messageActionId": 5, "name": "enable-input-area" } ] } } ] }, "templateId": 0 }) ``` ## change rake live chat event type [label] ```json= db.rakeLiveChat_EventTypes.update({ rakeLiveChat_EventTypeId: 10 }, { $set: { "select": [ { "name": "open", "conditionId": 0 }, { "name": "closed", "conditionId": 4 } ], "multiselect": null, "disabled": false, "name": "When workspace hours are", old: { "name": "Only during business hours", "select": [ { "name": "true", "conditionId": 0 }, { "name": "false", "conditionId": 4 } ], }, "second": null, "rakeLiveChat_EventTypeId": NumberInt(10), "__v": NumberInt(0), "orderId": NumberInt(2), "isAllowedForProactiveMessages": true, "isAllowedForTemplates": true, "isMultiTimesSelectable": false } }) ```