| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- EVAPI Module
- Daniel-Constantin Mierla
- <[email protected]>
- Edited by
- Daniel-Constantin Mierla
- <[email protected]>
- Copyright © 2014 asipto.com
- __________________________________________________________________
- Table of Contents
- 1. Admin Guide
- 1. Overview
- 2. Dependencies
- 2.1. Kamailio Modules
- 2.2. External Libraries or Applications
- 3. Parameters
- 3.1. workers (int)
- 3.2. bind_addr (str)
- 3.3. netstring_format (int)
- 4. Functions
- 4.1. evapi_relay(evdata)
- 4.2. evapi_async_relay(evdata)
- 4.3. evapi_close()
- 5. Event routes
- 5.1. evapi:connection-new
- 5.2. evapi:connection-closed
- 5.3. evapi:message-received
- 6. Exported pseudo-variables
- List of Examples
- 1.1. Set workers parameter
- 1.2. Set bind_addr parameter
- 1.3. Set netstring_format parameter
- 1.4. evapi_relay usage
- 1.5. TCP message
- 1.6. evapi_async_relay usage
- 1.7. evapi_evapi usage
- Chapter 1. Admin Guide
- Table of Contents
- 1. Overview
- 2. Dependencies
- 2.1. Kamailio Modules
- 2.2. External Libraries or Applications
- 3. Parameters
- 3.1. workers (int)
- 3.2. bind_addr (str)
- 3.3. netstring_format (int)
- 4. Functions
- 4.1. evapi_relay(evdata)
- 4.2. evapi_async_relay(evdata)
- 4.3. evapi_close()
- 5. Event routes
- 5.1. evapi:connection-new
- 5.2. evapi:connection-closed
- 5.3. evapi:message-received
- 6. Exported pseudo-variables
- 1. Overview
- The EVAPI module can be used to create an event message flow from
- Kamailio to any application that can connect to a TCP socket. The
- remote application can also issue messages received by Kamailio.
- There is no protocol definition, it is all up to the author of the
- routing script. Events can be generated for any event in Kamailio. For
- 3rd party transaction control, a transaction can be automatically
- suspended when sending the event, to be resumed at a later point, maybe
- triggered by an incoming message on the event socket.
- 2. Dependencies
- 2.1. Kamailio Modules
- 2.2. External Libraries or Applications
- 2.1. Kamailio Modules
- The following modules must be loaded before this module:
- * tm - (optional) needed only by evapi_async_relay()
- 2.2. External Libraries or Applications
- The following libraries or applications must be installed before
- running Kamailio with this module loaded:
- * libev
- 3. Parameters
- 3.1. workers (int)
- 3.2. bind_addr (str)
- 3.3. netstring_format (int)
- 3.1. workers (int)
- Number of worker processes to be started to handle incoming messages
- from remote applications.
- Default value is 1.
- Example 1.1. Set workers parameter
- ...
- modparam("evapi", "workers", 2)
- ...
- 3.2. bind_addr (str)
- Local IP and port to listen on for incoming TCP connections.
- Default value is "127.0.0.1:8448".
- Example 1.2. Set bind_addr parameter
- ...
- modparam("evapi", "bind_addr", "1.2.3.4:8228")
- ...
- 3.3. netstring_format (int)
- Control if messages on the socket (to and from clients) are
- encapsulated in netstring format.
- Default value is 1 (netstring format).
- Example 1.3. Set netstring_format parameter
- ...
- modparam("evapi", "netstring_format", 0)
- ...
- 4. Functions
- 4.1. evapi_relay(evdata)
- 4.2. evapi_async_relay(evdata)
- 4.3. evapi_close()
- 4.1. evapi_relay(evdata)
- Relay the event data give as parameter to connected applications. The
- format on the network is netstring with evdata payload.
- This function can be used from ANY_ROUTE.
- Example 1.4. evapi_relay usage
- ...
- evapi_relay("{ \"event\": \"test\",\n \"data\": { \"fU\": \"$fU\" }\n}");
- ...
- The above exaple will send the following message over tcp:
- Example 1.5. TCP message
- ...
- 47:{
- "event": "test",
- "data": { "fU": "test" }
- },
- ...
- 4.2. evapi_async_relay(evdata)
- Relay the event data give as parameter to connected applications. The
- format on the network is netstring with evdata payload. Before
- evaluating the parameter, the request processing is suspended using tm
- module.
- This function can be used from REQUEST_ROUTE.
- Example 1.6. evapi_async_relay usage
- ...
- evapi_async_relay("{ \"event\": \"suspend\",\n \"data\":"
- " { \"index\": \"$T(id_index)\", \"label\": \"$T(id_label)\" }\n}");
- ...
- 4.3. evapi_close()
- Close evapi current client connection.
- This function can be used from ANY_ROUTE.
- Example 1.7. evapi_evapi usage
- ...
- event_route[evapi:connection-new] {
- if($evapi(srcaddr)!="127.0.0.1") {
- evapi_close();
- exit;
- }
- }
- ...
- 5. Event routes
- 5.1. evapi:connection-new
- 5.2. evapi:connection-closed
- 5.3. evapi:message-received
- 5.1. evapi:connection-new
- If defined, the module calls event_route[evapi:connection-new] when a
- new client is connected.
- ...
- event_route[evapi:connection-new] {
- xlog("new connection from $evapi(srcaddr):$evapi(srcport)\n");
- }
- ...
- 5.2. evapi:connection-closed
- If defined, the module calls event_route[evapi:connection-closed] when
- a client connection is closed.
- ...
- event_route[evapi:connection-closed] {
- xlog("connection closed by $evapi(srcaddr):$evapi(srcport)\n");
- }
- ...
- 5.3. evapi:message-received
- If defined, the module calls event_route[evapi:message-received] when a
- message is received from a client.
- ...
- event_route[evapi:message-received] {
- xlog("received [$evapi(msg)] from $evapi(srcaddr):$evapi(srcport)\n");
- }
- ...
- 6. Exported pseudo-variables
- * $evapi(srcaddr) - source ip
- * $evapi(srcport) - source port
- * $evapi(msg) - received event message
- * $evapi(conidx) - internal connection index
- Exported pseudo-variables are documented at
- http://www.kamailio.org/wiki/.
|