Warning: session_start(): open(/var/lib/php/sessions/sess_pf4gversipi67c4272rpbem5mp, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
srecord BotConversationID(S dbID, long convoID) {}
concept Customer {
S cookie;
long lastPing;
BotConversationID botConversationID;
}
concept Message {
Customer customer;
S text;
bool unread;
}
concept IncomingMessage > Message {}
concept OutgoingMessage > Message {}
module MultiComm {
start {
dbIndexing(Customer, 'cookie);
dm_vmBus_onMessage_q chatBot_userPolling(voidfunc(O mc, virtual Conversation conv) {
Customer c = customerFromConv(conv);
if (c == null) ret;
});
dm_vmBus_onMessage_q chatBot_messageAdded(voidfunc(O mc, virtual Conversation conv, virtual Msg msg) {
Customer c = customerFromConv(conv);
if (c == null) ret;
S text = getString text(msg);
bool fromUser = getBool fromUser(msg);
if (fromUser)
cnew(IncomingMessage, customer := c, +text, unread := true);
else
cnew(OutgoingMessage, customer := c, +text);
});
}
visual
jhsplit(jCenteredSection("Customers",
makeConceptsTable(Customer)),
jCenteredSection("Messages",
makeConceptsTable(Message)));
Customer customerFromConv(virtual Conversation conv) {
S cookie = getString cookie(conv);
if (empty(cookie)) null;
Customer c = uniq(Customer, +cookie);
cset(c, lastPing := now(), botConversationID :=
BotConversationID(programID(mc), getLong id(conv));
ret c;
}
}