# Listen to events

Rubens SDK provides an event-driven system that allows developers to listen for various events occurring within the application. By using callbacks, you can execute custom logic in response to these events. Below is a step-by-step guide on how to set up and use event listeners with callbacks in Rubens Roomle.

If you want to listen to the `update parameter` event of the configurator you can do this with the following line of code:

```typescript
roomlePlanner.getApi().callbacks.onUpdateParameters = (parameters) => {
  // send this event to your own event system, redux, RxJS or home grown
  // this should trigger all the updates you wan to do on a parameter update
};
```

All our events are prefixed with `on`. All the other methods are utility methods. For example `mute` and `unmute`. If you call `roomlePlanner.getApi().callbacks.mute()` there will be no events sent to you. With `unmute()` the events will be sent again.

Often we get the question why we not just provide an `addEventListener` and `removeEventListener`. We think the `callbacks` approach has three main advantages:

* discoverability: it's easy to discover all the events. With TypeScript you have code completion and for JavaScript user you have a nice overview during runtime
* type safety: in TypeScript every parameter is typed, therefore it's clear which parameter is passed to which event
* simplicity: why adding an event listener array and run through this array if the SDK user does only need one listener? Why looping through event listener if the event system of the SDK user does it again or more adjusted to the underlying application?

You can look up all available callbacks in this reference: [RoomlePlanner.RoomlePlannerCallback](/rubens/rubens-sdk/rubens-sdk-reference/interfaces/planner_core_src_roomle_planner.roomleplannercallback.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roomle.com/rubens/rubens-sdk/rubens-planner-room-designer/listen-to-events.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
