Consider an Internet-of-Things (IoT) system that monitors a number of multi-valued events through multiple sensors sharing the same bandwidth. Each sensor measures data correlated to one or more events, and communicates to the fusion center at a base station using grant-free random access whenever the corresponding event is active. The base station aims at detecting the active events, and, for each active event, to determine a scalar value describing each active event's state. A conventional solution based on Separate Source-Channel (SSC) coding would use a separate codebook for each sensor and decode the sensors' transmitted packets at the base station in order to subsequently carry out events' detection. In contrast, this paper considers a potentially more efficient solution based on Joint Source-Channel (JSC) coding via a non-orthogonal generalization of Type-Based Multiple Access (TBMA). Accordingly, all sensors measuring the same event share the same codebook (with non-orthogonal codewords), and the base station directly detects the events' values without first performing individual decoding for each sensor. A novel Bayesian message-passing detection scheme is developed for the proposed TBMA-based protocol, and its performance is compared to conventional solutions.