Blackhole Real-time HTTP Websocket Events
Binding to events
The binding syntax is the same used throughout all Crossbar applications, since it is the same as AMQP's binding syntax.
Here are a non-exhaustive list of bindings provided per default callback module:
* bh_call
:
* call.CHANNEL_CREATE.*
* call.CHANNEL_ANSWER.*
* call.CHANNEL_DESTROY.*
* call.CHANNEL_BRIDGE.*
* bh_conference
:
* conference.event.*.*
* conference.command.*
* bh_fax
:
* fax.status.*
Writing your own bindings
Blackhole callback modules provide bindings to Kazoo events. If however you do not find a callback module that provides the bindings you are looking for, you can easily add your own!
- Copy bh_skel into
bh_mymodule.erl
- Make sure the module name is prefixed by
bh_
- Make sure that it resides in the
modules/
directory - Now to make it listen to the events you want:
- Your Blackhole callback module has to export the following functions:
handle_event/2
- Receives an
EventJObj
from AMQP - Then, one can do some pre-processing of the data (validation, normalization, ...)
- And conditionally forward it down the Websockets pipe, calling
fun blackhole_data_emitter:emit/3
- Receives an
{add,rm}_amqp_binding/2
- These two functions bind/unbind the Websocket consumer to the corresponding Blackhole producer.
- The bindings are added when the Blackhole app starts
- And removed when it stops
- Your Blackhole callback module has to export the following functions: