Global listeners

Global listeners, just like flow listeners, help your bot pick up relevant pieces of information from user inputs, even when these things have not been explicitly prompted for. You can think of a listener as a fly on the wall, silently listening and registering things. However, global listeners listen to any input in a conversation, whereas flow listeners only listen to inputs that trigger or pass through a particular flow.

When to use a global listener

It can be very tempting to use a global listener any time you want to pick something up from an input. For example, you could create a global listener that stores the name of a user in a global variable 'userName' whenever a name is encountered in an input. However, this is generally not a good practice. Because the global listener operates on each input, it might accidentally overwrite 'userName' with any name, like the name of the user's sister for example. In general it is best to use a flow listener for the flow where you specifically anticipate to receive a particular detail and only use global listeners to listen for things that transcend flows.


Global listeners are made up of the same parts as flow listeners: a condition and an operation. The condition determines what patterns should be listened for, e.g. a postive sentiment. The operation defines what should happen when the condition is met, for example updating a counter or adding an annotation. An example of a global listener that counts the number inputs in a conversation that express a positive sentiment could look like this:

Global listener example

You manage global listeners in the Globals area of your solution:

Manage global listeners

Pre or post matching

There are two types of global listeners, pre matching listeners and post matching listeners.

  • Pre listeners - Pre matching listeners listen to inputs before Teneo tries to match the input to a trigger or transition. This makes them best suited when you want to do things that are important during matching. For example, you can use them to add annotations that can then influence if a particular trigger or transitions should match. For example, a pre-listener can annotate a postal code in an input and a language condition might say 'you should only match if a postal code is present in the input'. Because the annotation is added before Teneo tries to match the language condtions, the annotation will be taken into account.
  • Post listeners - Post matching listeners listen to inputs after Teneo found a matching trigger or tranistion. You can't use these to do things that are important during the matching process, because by the time the post listeners are executed, the matching process is already completed. You can use them to for example check if the currently triggered flow was stored in a particular folder, like the "Summer Campaign" folder. If true, the listener would then perform the task specified in the listener's operation.

You can find more details about the order in which Teneo executes listeners (and other tasks) in the Input processing path reference.

Was this page helpful?