!7 sclass 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 {} cmodule MultiComm { start { dbIndexing(Customer, 'cookie); dm_vmBus_onMessage_q chatBot_userPolling(voidfunc(O mc, virtual Conversation conv) { S cookie = getString cookie(conv); if (empty(cookie)) ret; Customer c = uniq(Customer, +cookie); cset(c, lastPing := now()); }); } visual jhsplit(jCenteredSection("Customers", makeConceptsTable(Customer)), jCenteredSection("Messages", sexyTable())); }