wingbot-mongodb v4.1.2
MongoDB plugin for wingbot.ai
Contains storage for tokens, chat states, bot config and chat logs.
API
Classes
Typedefs
StateStorage
Storage for chat states
Kind: global class
- StateStorage
- new StateStorage(mongoDb, collectionName, [log], isCosmo)
.addCustomIndex(index, options)- .getState(senderId, pageId) ⇒ Promise.<(State|null)>
- .getOrCreateAndLock(senderId, pageId, [defaultState], [timeout]) ⇒ Promise.<object>
- .getStates(condition, limit, lastKey) ⇒ Promise.<{Array.<data:State>, lastKey:string}>
- .saveState(state) ⇒ Promise.<object>
new StateStorage(mongoDb, collectionName, log, isCosmo)
Param | Type | Default | Description |
---|---|---|---|
mongoDb | mongodb.Db | Object | ||
collectionName | string | "states" | |
log | Object | console like logger | |
isCosmo | boolean | false |
stateStorage.addCustomIndex(index, options)
Deprecated
Add custom indexing rule
Kind: instance method of StateStorage
Param | Type |
---|---|
index | object |
options | object |
options.name | string |
stateStorage.getState(senderId, pageId) ⇒ Promise.<(State|null)>
Kind: instance method of StateStorage
Param | Type |
---|---|
senderId | string |
pageId | string |
stateStorage.getOrCreateAndLock(senderId, pageId, defaultState, timeout) ⇒ Promise.<object>
Load state from database and lock it to prevent another reads
Kind: instance method of StateStorage
Returns: Promise.<object> - - conversation state
Param | Type | Default | Description |
---|---|---|---|
senderId | string | sender identifier | |
pageId | string | page identifier | |
defaultState | object | default state of the conversation | |
timeout | number | 300 | given default state |
stateStorage.getStates(condition, limit, lastKey) ⇒ Promise.<{Array.<data:State>, lastKey:string}>
Kind: instance method of StateStorage
Param | Type | Default |
---|---|---|
condition | StateCondition | |
limit | number | 20 |
lastKey | string | null |
stateStorage.saveState(state) ⇒ Promise.<object>
Save the state to database
Kind: instance method of StateStorage
Param | Type | Description |
---|---|---|
state | object | conversation state |
BotTokenStorage
Storage for webview tokens
Kind: global class
- BotTokenStorage
- new BotTokenStorage(mongoDb, collectionName)
- ._collection : mongodb.Collection
- ._getCollection() ⇒ Promise.<mongodb.Collection>
- .findByToken(token) ⇒ Promise.<(Token|null)>
- .getOrCreateToken(senderId, pageId, createToken) ⇒ Promise.<(Token|null)>
new BotTokenStorage(mongoDb, collectionName)
Param | Type | Default |
---|---|---|
mongoDb | mongodb.Db | Object | |
collectionName | string | "tokens" |
botTokenStorage._collection : mongodb.Collection
Kind: instance property of BotTokenStorage
botTokenStorage._getCollection() ⇒ Promise.<mongodb.Collection>
Kind: instance method of BotTokenStorage
botTokenStorage.findByToken(token) ⇒ Promise.<(Token|null)>
Kind: instance method of BotTokenStorage
Param | Type |
---|---|
token | string |
botTokenStorage.getOrCreateToken(senderId, pageId, createToken) ⇒ Promise.<(Token|null)>
Kind: instance method of BotTokenStorage
Param | Type |
---|---|
senderId | string |
pageId | string |
createToken | Object |
ChatLogStorage
Storage for conversation logs
Kind: global class
new ChatLogStorage(mongoDb, collectionName, log, isCosmo, secret)
Param | Type | Default | Description |
---|---|---|---|
mongoDb | Db | Object | ||
collectionName | string | "chatlogs" | |
log | Object | console like logger | |
isCosmo | boolean | false | |
secret | string | Promise.<string> | null |
chatLogStorage.getInteractions(senderId, pageId, limit, endAt, startAt) ⇒ Promise.<Array.<object>>
Interate history all limits are inclusive
Kind: instance method of ChatLogStorage
Param | Type | Default | Description |
---|---|---|---|
senderId | string | ||
pageId | string | ||
limit | number | 10 | |
endAt | number | iterate backwards to history | |
startAt | number | iterate forward to last interaction |
chatLogStorage.log(senderId, responses, request, metadata) ⇒ Promise
Log single event
Kind: instance method of ChatLogStorage
Param | Type | Description |
---|---|---|
senderId | string | |
responses | Array.<object> | list of sent responses |
request | object | event request |
metadata | object | request metadata |
BotConfigStorage
Storage for wingbot.ai conversation config
Kind: global class
- BotConfigStorage
- new BotConfigStorage(mongoDb, collectionName)
- ._collection : Collection
- ._getCollection() ⇒ Promise.<Collection>
- .api([onUpdate], [acl]) ⇒ Object
- .invalidateConfig() ⇒ Promise
- .getConfigTimestamp() ⇒ Promise.<number>
- .updateConfig(newConfig, [id]) ⇒ Promise.<T>
- .setConfig(id, newConfig)
- .getConfig([id]) ⇒ Promise.<(object|null)>
new BotConfigStorage(mongoDb, collectionName)
Param | Type | Default |
---|---|---|
mongoDb | Db | Object | |
collectionName | string | "botconfig" |
botConfigStorage._collection : Collection
Kind: instance property of BotConfigStorage
botConfigStorage._getCollection() ⇒ Promise.<Collection>
Kind: instance method of BotConfigStorage
botConfigStorage.api(onUpdate, acl) ⇒ Object
Returns botUpdate API for wingbot
Kind: instance method of BotConfigStorage
Param | Type | Description |
---|---|---|
onUpdate | function | async update handler function |
acl | function | Array.<string> | acl configuration |
botConfigStorage.invalidateConfig() ⇒ Promise
Invalidates current configuration
Kind: instance method of BotConfigStorage
botConfigStorage.getConfigTimestamp() ⇒ Promise.<number>
Kind: instance method of BotConfigStorage
botConfigStorage.updateConfig(newConfig, id) ⇒ Promise.<T>
Kind: instance method of BotConfigStorage
Param | Type |
---|---|
newConfig | T |
id | string |
botConfigStorage.setConfig(id, newConfig)
Kind: instance method of BotConfigStorage
Param | Type |
---|---|
id | string |
newConfig | object |
botConfigStorage.getConfig(id) ⇒ Promise.<(object|null)>
Kind: instance method of BotConfigStorage
Param | Type |
---|---|
id | string |
AttachmentCache
Cache storage for Facebook attachments
Kind: global class
- AttachmentCache
- new AttachmentCache(mongoDb, collectionName)
- ._collection : mongodb.Collection
- ._getCollection() ⇒ Promise.<mongodb.Collection>
- .findAttachmentByUrl(url) ⇒ Promise.<(number|null)>
- .saveAttachmentId(url, attachmentId) ⇒ Promise
new AttachmentCache(mongoDb, collectionName)
Param | Type | Default |
---|---|---|
mongoDb | mongodb.Db | Object | |
collectionName | string | "attachments" |
attachmentCache._collection : mongodb.Collection
Kind: instance property of AttachmentCache
attachmentCache._getCollection() ⇒ Promise.<mongodb.Collection>
Kind: instance method of AttachmentCache
attachmentCache.findAttachmentByUrl(url) ⇒ Promise.<(number|null)>
Kind: instance method of AttachmentCache
Param | Type |
---|---|
url | string |
attachmentCache.saveAttachmentId(url, attachmentId) ⇒ Promise
Kind: instance method of AttachmentCache
Param | Type |
---|---|
url | string |
attachmentId | number |
AuditLogStorage
Storage for audit logs with signatures chain
Kind: global class
new AuditLogStorage(mongoDb, collectionName, log, isCosmo, secret, jwtVerifier)
Param | Type | Default | Description |
---|---|---|---|
mongoDb | Db | Object | ||
collectionName | string | "auditlog" | |
log | Object | console like logger | |
isCosmo | boolean | false | |
secret | string | Promise.<string> | null | |
jwtVerifier | string | Promise.<string> | null |
auditLogStorage._jwtVerify : JwtVerifier
Kind: instance property of AuditLogStorage
auditLogStorage.callback : AuditLogCallback
Kind: instance property of AuditLogStorage
auditLogStorage.log(event, user, meta, wid, type, level, date) ⇒ Promise
Add a log
Kind: instance method of AuditLogStorage
Param | Type | Description |
---|---|---|
event | TrackingEvent | |
user | User | |
meta | Meta | |
wid | string | workspace ID |
type | string | |
level | string | |
date | Date |
auditLogStorage.list(wid, fromSeq, limit) ⇒ Promise.<Array.<LogEntry>>
Kind: instance method of AuditLogStorage
Param | Type | Default | Description |
---|---|---|---|
wid | string | workspace id | |
fromSeq | number | 0 | for paging |
limit | number | 40 |
NotificationsStorage
Kind: global class
- NotificationsStorage
- new NotificationsStorage(mongoDb, collectionsPrefix, [log], isCosmo)
- ._collections : Map.<string, Promise.<mongodb.Collection>>
- ._getCollection(collectionName) ⇒ Promise.<mongodb.Collection>
- .pushTasks(tasks) ⇒ Promise.<Array.<Task>>
- .getUnsuccessfulSubscribersByCampaign(campaignId, [sentWithoutReaction], [pageId])
- .getTaskById(taskId) ⇒ Promise.<(Task|null)>
- .updateTask(taskId, data)
- .getSentTask(pageId, senderId, campaignId) ⇒ Promise.<(Task|null)>
- .getSentCampagnIds(pageId, senderId, checkCampaignIds) ⇒ Promise.<Array.<string>>
- .updateTasksByWatermark(senderId, pageId, watermark, eventType, ts) ⇒ Promise.<Array.<Task>>
- .upsertCampaign(campaign, [updateCampaign]) ⇒ Promise.<Campaign>
- .removeCampaign(campaignId) ⇒ Promise
- .incrementCampaign(campaignId, increment) ⇒ Promise
- .updateCampaign(campaignId, data) ⇒ Promise.<(Campaign|null)>
- .popCampaign([now]) ⇒ Promise.<(Campaign|null)>
- .getCampaignById(campaignId) ⇒ Promise.<(null|Campaign)>
- .getCampaignByIds(campaignIds) ⇒ Promise.<Array.<Campaign>>
- .getCampaigns(condition, [limit], [lastKey]) ⇒ Promise.<{Array.<data:Campaign>, lastKey:string}>
- .subscribe(senderId, pageId, tag) ⇒ Promise
- .unsubscribe(senderId, pageId, [tag]) ⇒ Promise.<Array.<string>>
- .getSubscribtionsCount(include, exclude, [pageId]) ⇒ Promise.<number>
- .getSubscribtions(include, exclude, limit, [pageId], lastKey) ⇒ Promise.<{data: Array.<Target>, lastKey: string}>
- .getSenderSubscribtions(senderId, pageId) ⇒ Promise.<Array.<string>>
new NotificationsStorage(mongoDb, collectionsPrefix, log, isCosmo)
Param | Type | Default | Description |
---|---|---|---|
mongoDb | mongodb.Db | Object | ||
collectionsPrefix | string | ||
log | Object | console like logger | |
isCosmo | boolean | false |
notificationsStorage._collections : Map.<string, Promise.<mongodb.Collection>>
Kind: instance property of NotificationsStorage
notificationsStorage._getCollection(collectionName) ⇒ Promise.<mongodb.Collection>
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
collectionName | string |
notificationsStorage.pushTasks(tasks) ⇒ Promise.<Array.<Task>>
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
tasks | object |
notificationsStorage.getUnsuccessfulSubscribersByCampaign(campaignId, sentWithoutReaction, pageId)
Kind: instance method of NotificationsStorage
Param | Type | Default |
---|---|---|
campaignId | string | |
sentWithoutReaction | boolean | false |
pageId | string | null |
notificationsStorage.getTaskById(taskId) ⇒ Promise.<(Task|null)>
Return Task By Id
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
taskId | string |
notificationsStorage.updateTask(taskId, data)
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
taskId | string |
data | object |
notificationsStorage.getSentTask(pageId, senderId, campaignId) ⇒ Promise.<(Task|null)>
Get last sent task from campaign
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
pageId | string |
senderId | string |
campaignId | string |
notificationsStorage.getSentCampagnIds(pageId, senderId, checkCampaignIds) ⇒ Promise.<Array.<string>>
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
pageId | string |
senderId | string |
checkCampaignIds | Array.<string> |
notificationsStorage.updateTasksByWatermark(senderId, pageId, watermark, eventType, ts) ⇒ Promise.<Array.<Task>>
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
senderId | string |
pageId | string |
watermark | number |
eventType | 'read' | 'delivery' |
ts | number |
notificationsStorage.upsertCampaign(campaign, updateCampaign) ⇒ Promise.<Campaign>
Kind: instance method of NotificationsStorage
Param | Type | Default |
---|---|---|
campaign | object | |
updateCampaign | object |
notificationsStorage.removeCampaign(campaignId) ⇒ Promise
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
campaignId | string |
notificationsStorage.incrementCampaign(campaignId, increment) ⇒ Promise
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
campaignId | string |
increment | object |
notificationsStorage.updateCampaign(campaignId, data) ⇒ Promise.<(Campaign|null)>
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
campaignId | string |
data | object |
notificationsStorage.popCampaign(now) ⇒ Promise.<(Campaign|null)>
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
now | number |
notificationsStorage.getCampaignById(campaignId) ⇒ Promise.<(null|Campaign)>
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
campaignId | string |
notificationsStorage.getCampaignByIds(campaignIds) ⇒ Promise.<Array.<Campaign>>
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
campaignIds | Array.<string> |
notificationsStorage.getCampaigns(condition, limit, lastKey) ⇒ Promise.<{Array.<data:Campaign>, lastKey:string}>
Kind: instance method of NotificationsStorage
Param | Type | Default |
---|---|---|
condition | object | |
limit | number | |
lastKey | object |
notificationsStorage.subscribe(senderId, pageId, tag) ⇒ Promise
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
senderId | string |
pageId | string |
tag | string |
notificationsStorage.unsubscribe(senderId, pageId, tag) ⇒ Promise.<Array.<string>>
Kind: instance method of NotificationsStorage
Param | Type | Default |
---|---|---|
senderId | string | |
pageId | string | |
tag | string | null |
notificationsStorage.getSubscribtionsCount(include, exclude, pageId) ⇒ Promise.<number>
Kind: instance method of NotificationsStorage
Param | Type | Default |
---|---|---|
include | Array.<string> | |
exclude | Array.<string> | |
pageId | string | null |
notificationsStorage.getSubscribtions(include, exclude, limit, pageId, lastKey) ⇒ Promise.<{data: Array.<Target>, lastKey: string}>
Kind: instance method of NotificationsStorage
Param | Type | Default |
---|---|---|
include | Array.<string> | |
exclude | Array.<string> | |
limit | number | |
pageId | string | null |
lastKey | * |
notificationsStorage.getSenderSubscribtions(senderId, pageId) ⇒ Promise.<Array.<string>>
Kind: instance method of NotificationsStorage
Param | Type |
---|---|
senderId | string |
pageId | string |
BaseStorage
Kind: global class
new BaseStorage(mongoDb, collectionName, log, isCosmo)
Param | Type | Default | Description |
---|---|---|---|
mongoDb | Db | Object | ||
collectionName | string | ||
log | Object | console like logger | |
isCosmo | boolean | false |
Example
const { BaseStorage } = require('winbot-mongodb');
class MyCoolDataStorage extends BaseStorage {
constructor (mongoDb, collectionName = 'myCoolData', log = console, isCosmo = false) {
super(mongoDb, collectionName, log, isCosmo);
this.addIndex({
foo: -1
}, {
name: 'foo_1'
});
this.addIndex({
bar: -1,
baz: 1
}, {
name: 'bar_-1_baz_1'
});
}
}
baseStorage._collection : Collection | Promise.<Collection>
Kind: instance property of BaseStorage
baseStorage.addFixtureDoc(...objects)
Insert defalt document to DB
Kind: instance method of BaseStorage
Param | Type |
---|---|
...objects | any |
baseStorage.addIndex(index, options)
Add custom indexing rule
Kind: instance method of BaseStorage
Param | Type |
---|---|
index | object |
options | mongodb.IndexOptions |
baseStorage._getCollection() ⇒ Promise.<Collection>
Returns the collection to operate with
Kind: instance method of BaseStorage
State : object
Kind: global typedef
Properties
Name | Type |
---|---|
senderId | string |
pageId | string |
state | object |
StateCondition : object
Kind: global typedef
Properties
Name | Type |
---|---|
search | string |
Token : object
Kind: global typedef
Properties
Name | Type |
---|---|
senderId | string |
pageId | string |
token | string |
Db : module:mongodb/lib/db
Kind: global typedef
Db : module:mongodb/lib/db
Kind: global typedef
Collection : module:mongodb/lib/collection
Kind: global typedef
Db : module:mongodb/lib/db
Kind: global typedef
TrackingEvent : object
Kind: global typedef
Properties
Name | Type | Default |
---|---|---|
type | string | "'audit'" |
category | string | |
action | string | |
label | string | |
payload | object |
User : object
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
id | string | |
senderId | string | |
pageId | string | |
jwt | string | jwt to check the authorship |
Meta : object
Kind: global typedef
Properties
Name | Type | Description | ||
---|---|---|---|---|
ip | string | |||
ua | string | |||
ro | string | referrer | origin |
LogEntry : object
Kind: global typedef
Properties
Name | Type | Default | Description | ||
---|---|---|---|---|---|
date | string | ISO date | |||
delta | number | time skew in ms if there was a write conflict | |||
eventType | string | "'audit'" | |||
category | string | ||||
action | string | ||||
label | string | ||||
payload | object | ||||
level | string | (Critical | Important | Debug) | |
ok | boolean | signature matches | |||
seq | number | sequence number | |||
type | string | (Error | Warn | Info) | |
user | User | ||||
wid | string | workspace id | |||
meta | Meta |
JwtVerifier ⇒ Promise.<boolean>
JWT Verifier
Kind: global typedef
Param | Type |
---|---|
token | string |
userId | string |
user | User |
AuditLogEntry : object
Kind: global typedef
Properties
Name | Type | Default | Description | ||
---|---|---|---|---|---|
date | string | ISO date | |||
eventType | string | "'audit'" | |||
category | string | ||||
action | string | ||||
label | string | ||||
payload | object | ||||
level | string | (Critical | Important | Debug) | |
type | string | (Error | Warn | Info) | |
user | User | ||||
wid | string | workspace id | |||
meta | Meta |
AuditLogCallback ⇒ Promise
Audit Log Callback
Kind: global typedef
Param | Type |
---|---|
entry | AuditLogEntry |
Target : Object
Kind: global typedef
Properties
Name | Type |
---|---|
senderId | string |
pageId | string |
Subscribtion : Object
Kind: global typedef
Properties
Name | Type |
---|---|
senderId | string |
pageId | string |
subs | Array.<string> |
Campaign : object
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
id | string | |
name | string | Tatgeting |
include | Array.<string> | |
exclude | Array.<string> | Stats |
sent | number | |
succeeded | number | |
failed | number | |
unsubscribed | number | |
delivery | number | |
read | number | |
notSent | number | |
leaved | number | |
queued | number | Interaction |
action | string | |
data | object | Setup |
sliding | boolean | |
slide | number | |
slideRound | number | |
active | boolean | |
in24hourWindow | boolean | |
startAt | number |
Task : Object
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
id | string | |
pageId | string | |
senderId | string | |
campaignId | string | |
enqueue | number | |
read | number | |
delivery | number | |
sent | number | |
insEnqueue | number | |
reaction | boolean | user reacted |
leaved | number | time the event was not sent because user left |
Db : module:mongodb/lib/db
Kind: global typedef
Collection : module:mongodb/lib/collection
Kind: global typedef
2 months ago
3 months ago
7 months ago
7 months ago
7 months ago
8 months ago
7 months ago
8 months ago
8 months ago
9 months ago
9 months ago
7 months ago
9 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago