# Release 1.4.11
## 1.4.10.1
- JS API for widget (prev release, not tested properly)
- New proactive message logic (widget on different tabs is one instance)
- preview\unfurl of links
- Change logic for sending end session message
### Update
#### Services
- worker-service
- core-service
- admin-service
- widget-service
- modules
#### Bucket
1. Update on bucket parameters.json for NICE inContact
2. Update on bucket connector.js for NICE inContact
3. Update on bucket parameters.json for Rake user app
#### Modules
1. Update module NICE inContact
2. Update module Rake user app
## 1.4.10.2
Date on PROD: 2020.04.28
- https://chatbots-studio.atlassian.net/browse/W5GOL-2045
### Update
#### Services
- worker-service
- core service
- NICE inContact module
- Rake user app module
- admin-service
- widget-service
#### DB
```javascript=
db.getCollection("rakeLiveChat_EventTypes").insert({
"select": [
{
"name": "true",
"conditionId": 0
},
{
"name": "false",
"conditionId": 4
}
],
"multiselect": null,
"disabled": false,
"name": "Only during business hours",
"second": null,
"rakeLiveChat_EventTypeId": NumberInt(10),
"__v": NumberInt(0)
})
db.rakeLiveChat_EventTypes.update(
{},
{ $set: {"orderId": null} },
false,
true
)
```
## 1.4.10.3
- API for return offline user
- Localization for admin-service and rake user app
- each label will be have tooltipId
- if label not have text, we hide tooltip
- research about localization service
- Statistic updated on events
- JS API for widget (prev release, not tested properly)
- Build out a prototype site with api demo and widget
- [Moqups](https://app.moqups.com/ahOJDX97Xj/view/page/ab5cdc977)
- Need UI for admin service
- test mode
- we not use bot logic, maybe. Echo mode
- Rake project will have bot "Demo". This bot will be used for demostration how JS API works
- Web site will be hosted on widget-service
- we need UI prototype for creating web-site
- [Inspiration](https://developers.livechat.com/docs/extending-ui/extending-chat-widget/javascript-api/?a=VPsUDBx-cG)
### Update
#### Google bucket
For JS API demo mode upload on bucket index.html
#### Services
- stats-service
- change structure for calculating missed chats
- worker-service
- add message watcher logic
- core-service
- change logic on request about module event end
- add new message watcher
- widget-service
- add js demo page
- admin-service
- localization
- user profile
- redis-rabbitmq-handler
- add message watcher logic
- user-app module
- change request to core for end event
- event trigger logic
- add new actions
#### DB
- clean stats collections
```javascript=
db.events.insertOne({
"systemEventId": 90,
"name": "session must be handeled"
})
db.events.insertOne({
"systemEventId": 91,
"name": "session was handeled"
})
db.events.insertOne({
"systemEventId": 92,
"name": "Localization was updated"
})
db.events.insertOne({
"systemEventId": 93,
"name": "Localization status was changed"
})
db.systemConfigs.updateMany({}, {
$set: {
"systemEventId": {
"localization": {
"valueUpdated": 92,
"statusUpdated": 93
}
},
},
}
})
db.actions.insertOne({
"actionId": 1,
"name": "send request"
})
db.sessionTypes.insertOne({
"sessionTypeId": 2,
"name": "notification",
sessionTtl: 1 * 60 * 1000,
isSearchCacheEnabled: false,
"__v": NumberInt(0)
})
db.sessionTypes.update(
{ sessionTypeId: 0 },
{
$set: {
sessionTtl: 5 * 60 * 1000,
isSearchCacheEnabled: true,
}
}
);
db.sessionTypes.update(
{ sessionTypeId: 1 },
{ $set: { isSearchCacheEnabled: false } }
)
```
- add in system config
```javascript=
{
languageCode: 'en'
botId
systemEventId,
workers: {
userApp: {
url: "https://..."
}
}
```
update color for rake platform
```
$set: {
"__v": 0,
"name": "Rake",
"platformId": 4,
"reportColor": "#eeeeee",
"systemName": "botkit",
"userApp": {
"name": "System"
}
}
```
- add in localizations all records from uat db
- add in languages all records from uat db
## 1.4.10.4
- Separate rake user app platform from main worker
- New message API
- edit message
> search engine
- delete message
> search engine
- Transfer session to another agent
> Already have webhook fo this. Need testing with rake-user-app team after his implementation
> Add render on widget side sysytem event about aggent assigne and leave conversation
>
### DB
1) add worker url for platfrom collection
## 1.4.10.5
### Feature list
- (UAT deploy date:) Relation between collections inContactAgents(and other) and entities 1 to many
- (UAT deploy date:) Role system for admin panel (must be discussed, research)
- update core service
- update workers service
- update statistic service
- update admin service
- API key system user
- api key will be saved in collection systemUsers
- [role system](https://docs.google.com/spreadsheets/d/1awaJSECOO8uSMsKqXThCOoIbM024uGT_XCJsnQkfDaQ/edit?ts=5afe3d3c#gid=1276652108)
- token for system user must be longer(uuid/v4)
- generate for each API-system-user email and password, entity record
- use current structure of systemUser-permission
- use logic with refresh tokens and OAuth for generating first
- systemUserTypes: systemUser || API user
- entityTypeId: Rake system user
- (UAT deploy date:) Double message from module
- (UAT deploy date:) Documentation service
- (UAT deploy date:) Alternative mode for widget(use parent local storage)
- (UAT deploy date:) Allow * in allowed domains
- (UAT deploy date:) Move logic from rake user app backend to rake user app worker
- Create functionality for reactions
### Bug fix
- https://chatbots-studio.atlassian.net/browse/W5GOL-2352
- https://chatbots-studio.atlassian.net/browse/W5GOL-2378
- Facebook page access token verification
### Service to update
- core
- main worker
- admin service
- widget
- event trigger logic
- module(admin panel)
- cloud function unzip
---
## Feature List.
- Log system
- Documentation
- Describe flow for proactive message
- Update DB documentation
- Event trigger logic
### Integrations
- [integrations project] Google business integration on rake user app side
- new sevice
- back end
- front end
- message API(closed beta)
- [integrations project] Platform email
### FOR NEW DEPLOY
```json=
db.events.insert([
{
"systemEventId" : 101,
"name" : "Session transfer failed"
},
/* 2 createdAt:22.06.2020, 12:27:58*/
{
"systemEventId" : 102,
"name" : "Session transfer expired"
},
/* 3 createdAt:11.06.2020, 09:46:40*/
{
"systemEventId" : 100,
"name" : "Session transfer accepted"
},
/* 4 createdAt:11.06.2020, 09:46:40*/
{
"systemEventId" : 99,
"name" : "Session transfer canceled"
},
/* 5 createdAt:11.06.2020, 09:46:40*/
{
"systemEventId" : 98,
"name" : "Session transfer declined"
},
/* 6 createdAt:11.06.2020, 09:46:40*/
{
"systemEventId" : 97,
"name" : "Session transfer started"
},])
```
```json=
db.eventTriggers.update({ _id: ObjectId("{{ID}}") }, {
$set: {
"eventTriggerId": 2,
"eventIds": [
94,
95,
96,
97,
98,
99,
100,
102
],
"filters": [
{
"filterOperatorId" : 1,
"filterId" : 2,
"arguments" : [
"{{transferInfo.toEntityTypeId}}",
9
]
}
],
"customFilter": "1",
"actions": [
{
"id": 2,
"arguments": []
}
]
}
})
db.entities.update({ $and: [{ profileImage: {$exists: true}}, {profileImage: null }]}
,
{$set:{profileImage: {}}},
{ multi: true, upsert: false}
```
# 1.4.10.5
```json=
db.actions.insert([{ "actionId" : 3,
"name" : "send to rabbit queue"}])
db.events.insert([
{
"systemEventId" : 103,
"name" : "Billing feature utilization"
},
{
"systemEventId" : 104,
"name" : "Billing plan update"
},
{
"systemEventId" : 105,
"name" : "Billing add on added"
},
{
"systemEventId" : 106,
"name" : "Billing add on removed"
},
db.eventTriggers.insert([
{
"eventTriggerId": 3,
"eventIds": [
103,
104,
105,
106
],
"filters": [
{
}
],
"customFilter": "1",
"actions": [
{
"id": 3,
"arguments": []
}
]
}
])
```