# 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
}
})
```