Usage
object:Channel
channel object exposes trust-safe flexible Pub/Sub messaging properties, functions and events to build real-time event messaging / event driven applications at scale.
Concepts
- A message is attached to an event
- Group similar events into a channel
- Subscribe to a channel to receive all channel event messages.
- Publish event message to the channel and it will be sent to all the channel subscribers who are connected to dataBrdiges network and online.
- if you need to have an access controlled channel, prefix the channel name with pvt: , prs: and sys: .
- Note dataBrdiges have 2 septate libraries (client lib, server lib). You are reading the server library api document.
- Server lib uses app.key along with secret to get access to all channels including pvt: , prs: and sys: channels linked to the application.
- Whereas application using client library (client application) will always need to pass a trust-token to access restricted channels (pvt: prs: sys: ) . A trust-token is a JWT document created using a combination of channelname + sessionid + app.secret. Trust token can be created by application having access to app.key's secret.
- you can use your existing access control, authorization and session identification rule-set, process and methods to create a trust-token instructing the dataBrdiges router to accept the pvt: prs: and sys: channel subscription, connection of from client application.
- Trust-tokens allows you to enable secured, access controlled and compliance driven real-time event driven messaging in your existing and new initiative applications.
dataBrdiges library supports 4 types of channel. The namespace is the 4 characters preceding the channelName (pvt:,prs:,sys:
), identifying which type of channel the application is connecting to.
Channel Type | Channel Name Style | Description |
---|---|---|
Public | channelName | Public channel is used to send and receive messages that are to be publicly available. This channel type does not require any trust authorization token to subscribe. e.g channelName = mychannel |
Private | **pvt:**channeName | Private channels is restricted channel. e.g channelName = pvt:mychannel |
Presence | **prs:**channeName | Presence channels is a specialized private channel with additional feature of presence awareness. Subscribing to presence channel allows application to be notified of members joining / leaving the channel. e.g channelName = prs:mychannel |
System | **sys:**channeName | System channel is a specialized Presence channel to build command and control applications. Using System channel to create command and control server applications to send messages to devices and application using dataBrdiges library in **trust-safe manner **, build smart update configuration system and implement **trust-safe ** actions for remote and automated management. System channel allows application to send and receive messages with the server application (using dataBrdiges server library). e.g channelName = sys:systeminfo |
Subscribe to Channel
Application that subscribes to a channel will receive messages and can send messages.
subscribe()
The default method for subscribing to a channel involves invoking the channel.subscribe
function of your dataBrdiges object:
Parameter | Rules | Description |
---|---|---|
string | channelName ORpvt:channelName ORprs:channelName ORsys:channelName ORsys:* | channelName to which subscription to be done. |
Return Type | Description |
---|---|
object | channel object which events and related functions can be bound to. |
Application can directly work with dataBrdiges object without using Channel object.
Exceptions:
Source | Code | Description |
---|---|---|
DBLIB_CHANNEL_SUBSCRIBE | NETWORK_DISCONNECTED | Connection to dataBrdiges network is not active. |
DBLIB_CHANNEL_SUBSCRIBE | INVALID_CHANNELNAME | Applicable for below conditions 1. channelName is not defined. 2. channelName validation error, typeof() channelName is not type string3. channelName validation error, channelName fails a-zA-Z0-9\.:_- validation. |
DBLIB_CHANNEL_SUBSCRIBE | INVALID_CHANNELNAME_LENGTH | channelName validation error, length of channelName greater than 64 |
DBLIB_CHANNEL_SUBSCRIBE | CHANNEL_ALREADY_SUBSCRIBED | channelName is already subscribed. |
unsubscribe()
To unsubscribe from a subscribed channel, invoke the unsubscribe
function of your dataBrdiges object. unsubscribe
cannot be done on channel object.
Parameter | Rules | Description |
---|---|---|
string | channelName **OR* pvt:**channelName **OR prs:**channelName **OR **sys:**channelName* | *channel*Name to which un-subscription to be done. |
Return Type | Description |
---|---|
NA |
Exceptions:
Source | Code | Description |
---|---|---|
DBLIB_CHANNEL_UNSUBSCRIBE | NETWORK_DISCONNECTED | Connection to dataBrdiges network is not active. |
DBLIB_CHANNEL_UNSUBSCRIBE | CHANNEL_NOT_SUBSCRIBED | channelName is not subscribed. |
DBLIB_CHANNEL_UNSUBSCRIBE | UNSUBSCRIBE_ALREADY_INITIATED | unsubscription to the channel is already initiated and hence the current unsubscribe command exited with exception. |
Channel Information
isOnline()
dBridgeObject as well as channelObject provides a function to check if the channel is online. The best practice is to check the channel is online before publishing any message.
Parameter | Rules | Description |
---|---|---|
string | channelName **OR* pvt:**channelName **OR prs:**channelName **OR **sys:**channelName* | *channel*Name |
Return Values | Description |
---|---|
boolean | Is the current status of channel online or offline. |
list()
dBridgeObject provides a function to get list of successfully subscribed or connected channel.
Return Type | Description |
---|---|
array of dict | Array of channels subscribed or connected. |
Dictionary contains below information.
Key | Description |
---|---|
name | (string) channelName of subscribed or connected channel. |
type | (string) subscribed |
isonline | (boolean) Is the current status of channel online or offline. |
getChannelName()
channelObject provides a function to get the channelName.
Return Type | Description |
---|---|
string | channelName of subscribed channel. |
Publish to Channel
Publish event-message using the publish
function on an instance of the channel
object.
A message is linked to an event and hence event-message. dataBrdiges allows you to bind to various events to create rich event processing flows.
publish()
The default method for publishing user-defined events to a channel involves invoking the channel.publish
function of your channelObject for which it has connected to OR using dbridgeObject giving the channelName as parameter.
Note: channel.publish
is not allowed using channelObject subscribed to sys:*
channel.
// Using dbridgeObject
try {
dbridge.channel.publish(channelName, event, payload, excludeSessionId, sourceId, seqno);
} catch (err) {
console.log(err.source, err.code, err.message);
}
// Using channelObject
try {
channelObject.publish(event, payload, excludeSessionId, sourceId, seqno);
} catch (err) {
console.log(err.source, err.code, err.message);
}
// Best practice is to check the channel is online before publishing any message.
if (channelObject.isOnline()) {
try {
channelObject.publish(event, payload, excludeSessionId, sourceId, seqno);
} catch (err) {
console.log(err.source, err.code, err.message);
}
}
# Using dbridgeObject
try:
dbridge.channe.publish(channelName, event, payload, excludeSessionId, sourceId, seqno)
except dBError as e:
print(e.code, e.source, e.message)
# Using channelObject
try:
channelObject.publish(eventname, payload, excludeSessionId, sourceId, seqno)
except dBError as e:
print(e.code, e.source, e.message)
#// Best practice is to check the channel is online before publishing any message.
if channelObject.isOnline():
try:
channelObject.publish(eventname, payload, excludeSessionId, sourceId, seqno)
except dBError as e:
print(e.code, e.source, e.message)
// Using dbridgeObject
try {
dbridge.channel.publish(channelName, event, payload, excludeSessionId, sourceId, seqno);
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
// Using channelObject
try {
channelObject.publish(event, payload, excludeSessionId, sourceId, seqno);
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
// Best practice is to check the channel is online before publishing any message.
if (channelObject.isOnline()) {
try {
channelObject.publish(event, payload, excludeSessionId, sourceId, seqno);
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
}
Parameter | Description |
---|---|
channelName | (string) Channel name for which details are required. |
event | (string) event Name to which the message to be sent. event Name cannot start with dbridges: |
payload | (string) Payload to be sent with the event. |
excludeSessionId | (string) Excludes the event from being sent to a specific sessionid (connection). For example when a server application (example: chat server) sends event message on behalf of a specific session ( example: chat user) to a channel (example: chat group), the sessionID (example: chat user) will be excluded to receive its own message. |
sourceId | (string) Required in case of presence(prs: ) and system (sys: ) channel. When sending a message to a presence(prs: ) or system (sys: ) channel, application need to specify a message source by using this sourceId.For example when a server application (example: chat server) sends event message on behalf of a specific session ( example: chat user) to a channel (example: chat group), the sourceID (example: chat user information) can be attached using sourceID to the event message. This allows all message recipient to know who has sent the message. |
seqno | (string) [optional] Message sequence number. This is optional parameter. seqno can be used by applications to manage message queue processing by the subscribers. |
Return Values | Description |
---|---|
NA |
Exceptions:
Source | Code | Description |
---|---|---|
DBLIB_CHANNEL_PUBLISH | NETWORK_DISCONNECTED | Connection to dataBrdiges network is not active. |
DBLIB_CHANNEL_PUBLISH | INVALID_CHANNELNAME | Applicable for below conditions 1. channelName validation error, typeof() channelName is not type string 2. channelName validation error, channelName fails a-zA-Z0-9\.:_- validation. 3. channelName is sys:* 4. channelName is not defined. |
DBLIB_CHANNEL_PUBLISH | INVALID_CHANNELNAME_LENGTH | channelName validation error, length of channelName greater than 64 |
DBLIB_CHANNEL_PUBLISH | INVALID_SUBJECT | Applicable for below conditions 1. event validation error, event is not defined 2. event validation error, typeof() event is not type string |
Send Message to Members / sessionID
It's possible to send message to individual sessionId
using the channel.sendmsg
function on an instance of the channelObject or using dbridgeObject.
sendmsg()
The default method for send message user-defined events to a individual sessionId
involves invoking the channel.sendmsg
function of your channelObject for which it has connected to OR using dbridgeObject giving the channelName as parameter.
Note: channel.sendmsg
is not allowed using channelObject subscribed to sys:*
channel.
// Using dbridgeObject
try {
dbridge.channel.sendmsg(channelName, event, payload, toSessionId, sourceId, seqno);
} catch (err) {
console.log(err.source, err.code, err.message);
}
// Using channelObject
try {
channelObject.sendmsg(event, payload, toSessionId, sourceId, seqno);
} catch (err) {
console.log(err.source, err.code, err.message);
}
// Best practice is to check the channel is online before publishing any message.
if (channelObject.isOnline()) {
try {
channelObject.sendmsg(event, payload, toSessionId, sourceId, seqno);
} catch (err) {
console.log(err.source, err.code, err.message);
}
}
# Using dbridgeObject
try:
dbridge.channel.sendmsg(channelName, event, payload, toSessionId, sourceId, seqno)
except dBError as e:
print(e.code, e.source, e.message)
# Using channelObject
try:
channelObject.sendmsg( event, payload, toSessionId, sourceId, seqno)
except dBError as e:
print(e.code, e.source, e.message)
# Best practice is to check the channel is online before publishing any message.
if channelObject.isOnline():
try:
channelObject.sendmsg(event, payload, toSessionId, sourceId, seqno);
except dBError as e:
print(e.code, e.source, e.message)
// Using dbridgeObject
try {
dbridge.channel.sendmsg(channelName, event, payload, toSessionId, sourceId, seqno);
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
// Using channelObject
try {
channelObject.sendmsg(event, payload, toSessionId, sourceId, seqno);
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
// Best practice is to check the channel is online before publishing any message.
if {channelObject.isOnline()){
try {
dbridge.channel.sendmsg(channelName, event, payload, toSessionId, sourceId, seqno);
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
}
Parameter | Description |
---|---|
channelName | (string) Channel name for which details are required. |
event | (string) event Name to which the message to be sent. event Name cannot start with dbridges: |
payload | (string) Payload to be sent with the event. |
toSessionId | (string) sessionid where the message to be sent. |
sourceId | (string) Required in case of presence(prs: ) and system (sys: ) channel. When sending a message to a presence(prs: ) or system (sys: ) channel, application need to specify a message source by using this sourceId. For example when a server application (example: chat server) sends event message on behalf of a specific session ( example: chat user) to a channel (example: chat group), the sourceID (example: chat user information) can be attached using sourceID to the event message. This allows all message recipient to know who has sent the message. |
seqno | (string) [optional] Message sequence number. This is optional parameter. seqno can be used by applications to manage message queue processing by the subscribers. |
Return Values | Description |
---|---|
NA |
Exceptions:
Source | Code | Description |
---|---|---|
DBLIB_CHANNEL_SENDMSG | NETWORK_DISCONNECTED | Connection to dataBrdiges network is not active. |
DBLIB_CHANNEL_SENDMSG | INVALID_CHANNELNAME | Applicable for below conditions 1. channelName validation error, typeof() channelName is not type string 2. channelName validation error, channelName fails a-zA-Z0-9\.:_- validation. 3. channelName is sys:* 4. channelName is not defined. 5. channelType is prs: and sourceId is not provided.6. channelName contains : and first token is not pvt,prs,sys |
DBLIB_CHANNEL_SENDMSG | INVALID_CHANNELNAME_LENGTH | channelName validation error, length of channelName greater than 64 |
Binding to events
A message is linked to an event and hence event-message. dataBrdiges allows you to bind to various events to create rich event processing flows. An application needs to bind to event to process the received message.
You can use the following methods either on a channelObject, to bind to events on a particular channel; or on the dbridgeObject, to bind to events on all subscribed channels simultaneously.
bind
and unbind
Bind to "event" on channel: payload and metadata is received.
// Binding to channel events on channelObject using Anonymous function.
try {
channelObject.bind('eventName', (payload, metadata) => {
console.log(payload, metadata);
});
} catch(err){
console.log(err.source, err.code, err.message);
}
// Binding to channel events on dbridgeObject using Anonymous function.
try {
dbridge.channel.bind('eventName', (payload, metadata) => {
console.log(payload, metadata);
});
} catch(err){
console.log(err.source, err.code, err.message);
}
// Binding to channel events on channelObject using user function.
const myEventHandler = (payload, metadata) =>{
console.log(payload, metadata);
};
try {
dbridge.channel.bind('eventName', myEventHandler);
} catch(err){
console.log(err.source, err.code, err.message);
}
# Binding to channel events on channelObject
def eventFunction(payload , metadata):
print(payload , metadata)
try:
channelObject.bind('eventName', eventFunction)
except dBError as e:
print(e.code, e.source, e.message)
# Binding to channel events on dbridgeObject
try {
dbridge.channel.bind('eventName', eventFunction)
except dBError as e:
print(e.code, e.source, e.message)
// Binding to channel events on channelObject using Anonymous function.
Action<object,object> iChannelStatus;
try {
channelObject.bind('eventName', iChannelStatus = (object payload, object metadata) => {
Console.WriteLine("{0} , {1} " , payload, metadata);
});
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
// Binding to channel events on dbridgeObject using Anonymous function.
try {
dbridge.channel.bind('eventName', iChannelStatus = (object payload, object metadata) => {
Console.WriteLine("{0} , {1} " , payload, metadata);
});
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
// Binding to channel events on channelObject using user function.
public void channelStatus(object payload, object metadata){
Console.WriteLine("{0} , {1} " , payload, metadata);
}
Action<object,object> iChannelStatus = channelStatus;
try {
dbridge.channel.bind('eventName', iChannelStatus);
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
Parameter | Description |
---|---|
event | (string) event Name to which binding to be done. |
Callback parameters
payload:
(string)
Payload data sent by the publisher.
metadata (dict)
:
{
"channelname": "channelName" , // (string) channelName to which subscription is done.
"eventname": "event", // (string) eventName
"sourcesysid": "", // (string) Sender system identity, applicable only for presence or system channel.
"sqnum": "1", // (string) user defined, sent during publish function.
"sessionid": "", // (string) Sender sessionid, applicable only for presence or system channel.
"intime": 1645554960732 // (string) EPOC time of the sender at time of publish.
}
Exceptions:
Source | Code | Description |
---|---|---|
DBLIB_CONNECT_BIND | INVALID_EVENTNAME | Invalid Event name. Not in user-defined events or default events. |
DBLIB_CONNECT_BIND | INVALID_CALLBACK | If "callback function" is not declared or typeof() variable defined is not a "function". |
Unbind behavior varies depending on which parameters you provide it with. For example:
// Remove just `handler` of the `event` in the subscribed/connected channel
channelObject.unbind('event',handler);
// Remove all `handler` of the `event` in the subscribed/connected channel
channelObject.unbind('event');
//Remove all handlers for the all event in the subscribed/connected channel
channelObject.unbind();
// Remove `handler` of the `event` for all events across all subscribed/connected channels
dbridge.channel.unbind('event',handler);
// Remove all handlers of the `event` for all events across all subscribed/connected channels
dbridge.channel.unbind('event');
// Remove all handlers for all events across all subscribed/connected channels
dbridge.channel.unbind();
# Remove just `handler` of the `event` in the subscribed/connected channel
channelObject.unbind('event',handler)
# Remove all `handler` of the `event` in the subscribed/connected channel
channelObject.unbind('event')
# Remove all handlers for the all event in the subscribed/connected channel
channelObject.unbind()
# Remove `handler` of the `event` for all events across all subscribed/connected channels
dbridge.channel.unbind('event',handler)
# Remove all handlers of the `event` for all events across all subscribed/connected channels
dbridge.channel.unbind('event')
# Remove all handlers for all events across all subscribed/connected channels
dbridge.channel.unbind()
// Remove just `handler` of the `event` in the subscribed/connected channel
channelObject.unbind('event',handler);
// Remove all `handler` of the `event` in the subscribed/connected channel
channelObject.unbind('event');
//Remove all handlers for the all event in the subscribed/connected channel
channelObject.unbind();
// Remove `handler` of the `event` for all events across all subscribed/connected channels
dbridge.channel.unbind('event',handler);
// Remove all handlers of the `event` for all events across all subscribed/connected channels
dbridge.channel.unbind('event');
// Remove all handlers for all events across all subscribed/connected channels
dbridge.channel.unbind();
bind_all
and unbind_all
bind_all
and unbind_all
work much like bind
and unbind
, but instead of only firing callbacks on a specific event, they fire callbacks on any event, and provide that event in the metadata to the handler along with the payload.
// Binding to all channel events on channelObject
try {
channelObject.bind_all((payload, metadata) => {
console.log(payload, metadata);
});
} catch(err){
console.log(err.source, err.code, err.message);
}
// Binding to all channel events on dbridgeObject
try {
dbridge.channel.bind_all((payload, metadata) => {
console.log(payload, metadata);
});
} catch(err){
console.log(err.source, err.code, err.message);
}
# Binding to channel events on channelObject
def eventFunction(payload , metadata):
print(payload , metadata)
try:
channelObject.bind_all('event', eventFunction)
except dBError as e:
print(e.code, e.source, e.message)
# Binding to channel events on dbridgeObject
try {
dbridge.channel.bind_all('event', eventFunction)
except dBError as e:
print(e.code, e.source, e.message)
// Binding to all channel events on channelObject
try {
Action<object , object> ichannelstatus;
channelObject.bind_all(ichannelstatus = (payload, metadata) => {
Console.WriteLine("{0} , {1} " , payload, metadata);
});
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
// Binding to all channel events on dbridgeObject
try {
Action<object , object> ichannelstatus;
dbridge.channel.bind_all(ichannelstatus = (payload, metadata) => {
Console.WriteLine("{0} , {1} " , payload, metadata);
});
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
Callback out parameter payload, metadata
details are explained with each event below in this document.
Exceptions:
Source | Code | Description |
---|---|---|
DBLIB_CONNECT_BIND | INVALID_CALLBACK | If "callback function" is not declared or typeof() variable defined is not a "function". |
unbind_all
works similarly to unbind
.
// Remove just `handler` across the channel
channelObject.unbind_all(handler);
//Remove all handlers for the all event in the subscribed/connected channel
channelObject.unbind_all();
// Remove `handler` across the subscribed/connected channels
dbridge.channel.unbind_all(handler);
// Remove all handlers for all events across all subscribed/connected channels
dbridge.channel.unbind_all();
# Remove just `handler` across the channel
channelObject.unbind_all(handler)
#Remove all handlers for the all event in the subscribed/connected channel
channelObject.unbind_all()
# Remove `handler` across the subscribed/connected channels
dbridge.channel.unbind_all(handler)
# Remove all handlers for all events across all subscribed/connected channels
dbridge.channel.unbind_all()
// Remove just `handler` across the channel
channelObject.unbind_all(handler);
//Remove all handlers for the all event in the subscribed/connected channel
channelObject.unbind_all();
// Remove `handler` across the subscribed/connected channels
dbridge.channel.unbind_all(handler);
// Remove all handlers for all events across all subscribed/connected channels
dbridge.channel.unbind_all();
System events for channel object
There are a number of events which are triggered internally by the library, but can also be of use elsewhere. Below are the list of all events triggered by the library.
Below syntax is same for all system events.
// Binding to systemevent on channelObject
try {
channelObject.bind('dbridges:subscribe.success', (payload, metadata) => {
console.log( payload, metadata);
});
} catch(err) {
console.log(err.source, err.code, err.message);
}
// Binding to systemevent on dbridgeObject
try {
dbridge.channel.bind('dbridges:subscribe.success', (payload, metadata) => {
console.log( payload, metadata);
});
} catch(err) {
console.log(err.source, err.code, err.message);
}
# Binding to systemevent on channelObject
def eventFunction(payload , metadata):
print(payload , metadata)
try:
channelObject.bind_all('dbridges:subscribe.success', eventFunction)
except dBError as e:
print(e.code, e.source, e.message)
# Binding to systemevent on dbridgeObject
try:
dbridge.channel.bind_all('dbridges:subscribe.success', eventFunction)
except dBError as e:
print(e.code, e.source, e.message)
// Binding to systemevent on channelObject
try {
Action<object,object> isubscribeevent;
channelObject.bind('dbridges:subscribe.success', isubscribeevent = (payload, metadata) => {
Console.WriteLine("{0} , {1} " , payload, metadata);
});
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
// Binding to systemevent on dbridgeObject
try {
Action<object,object> isubscribeevent;
dbridge.channel.bind('dbridges:subscribe.success', isubscribeevent = (payload, metadata) => {
Console.WriteLine("{0} , {1} " , payload, metadata);
});
} catch (dBError err) {
Console.WriteLine("{0} , {1} , {2}" , err.source, err.code, err.message);
}
dbridges:subscribe.success
Callback parameters
payload:
null
metadata (dict)
:
{
"channelname": "channelName" , // (string) channelName to which subscription is done.
"eventname": "dbridges:subscribe.success",// (string) eventName
"sourcesysid": "", // (string) Sender system identity, applicable only for presence or system channel.
"sqnum": "1", // (string) user defined, sent during publish function.
"sessionid": "", // (string) Sender sessionid, applicable only for presence or system channel.
"intime": 1645554960732 // (string) EPOC time of the sender at time of publish.
}
dbridges:subscribe.fail
Callback parameters
payload: (dberror object)
{
"source": "dberror.Source" , // (string) Error source, Refer dberror: for details
"code": "dberror.Code", // (string) Error code, Refer dberror: for details
"message": "" // (string) Error message if applicable.
}
metadata (dict)
:
{
"channelname": "channelName" , // (string) channelName to which subscription is done.
"eventname": "dbridges:subscribe.fail",// (string) eventName
"sourcesysid": "", // (string)
"sqnum": "", // (string)
"sessionid": "", // (string)
"intime": // (string)
}
dbridges:channel.online
Callback parameters
payload:
null
metadata (dict)
:
{
"channelname": "channelName" , // (string) channelName to which subscription is done.
"eventname": "dbridges:channel.online",// (string) eventName
"sourcesysid": "", // (string)
"sqnum": "", // (string)
"sessionid": "", // (string)
"intime": // (string)
}
dbridges:channel.offline
Callback parameters
payload:
null
metadata (dict)
:
{
"channelname": "channelName" , // (string) channelName to which subscription is done.
"eventname": "dbridges:channel.offline",// (string) eventName
"sourcesysid": "", // (string)
"sqnum": "", // (string)
"sessionid": "", // (string)
"intime": // (string)
}
dbridges:channel.removed
Callback parameters
payload:
null
metadata (dict)
:
{
"channelname": "channelName" , // (string) channelName to which subscription is done.
"eventname": "dbridges:channel.removed",// (string) eventName
"sourcesysid": "", // (string)
"sqnum": "", // (string)
"sessionid": "", // (string)
"intime": // (string)
}
dbridges:unsubscribe.success
Callback parameters
payload:
null
metadata (dict)
:
{
"channelname": "channelName" , // (string) channelName to which subscription is done.
"eventname": "dbridges:unsubscribe.success",// (string) eventName
"sourcesysid": "", // (string)
"sqnum": "", // (string)
"sessionid": "", // (string)
"intime": // (string)
}
dbridges:unsubscribe.fail
Callback parameters
payload: (dberror object)
{
"source": "dberror.Source" , // (string) Error source, Refer dberror: for details
"code": "dberror.Code", // (string) Error code, Refer dberror: for details
"message": "" // (string) Error message if applicable.
}
metadata (dict)
:
{
"channelname": "channelName" , // (string) channelName to which subscription is done.
"eventname": "dbridges:unsubscribe.fail",// (string) eventName
"sourcesysid": "", // (string)
"sqnum": "", // (string)
"sessionid": "", // (string)
"intime": // (string)
}
dbridges:resubscribe.success
Callback parameters
payload:
null
metadata (dict)
:
{
"channelname": "channelName" , // (string) channelName to which subscription is done.
"eventname": "dbridges:resubscribe.success",// (string) eventName
"sourcesysid": "", // (string)
"sqnum": "", // (string)
"sessionid": "", // (string)
"intime": // (string)
}
dbridges:resubscribe.fail
Callback parameters
payload: (dberror object)
{
"source": "dberror.Source" , // (string) Error source, Refer dberror: for details
"code": "dberror.Code", // (string) Error code, Refer dberror: for details
"message": "" // (string) Error message if applicable.
}
metadata (dict)
:
{
"channelname": "channelName" , // (string) channelName to which subscription is done.
"eventname": "dbridges:resubscribe.fail",// (string) eventName
"sourcesysid": "", // (string)
"sqnum": "", // (string)
"sessionid": "", // (string)
"intime": // (string)
}
dbridges:participant.joined
This will be triggered only for presence (prs:)
and system (sys:)
channel subscription.
Callback parameters
payload: (dict)
{
"sessionid": "ydR27s3Z92yQw7wjGY2lX", // (string) Session id of the member who has subscribed/connected to channel
"libtype": "nodejs", // (string) Library Lang of the member who has subscribed/connected to channel
"sourceipv4": "0.0.0.0", // (string) IPv4 of the member who has subscribed/connected to channel
"sourceipv6": "::1", // (string) Not Applicable in this version
"sysinfo": '{"sysid":"nameofcaller"}' // (string) System Info of the member who has subscribed/connected to channel
}
metadata (dict)
:
{
"channelname": "prs:channelName" , // (string) channelName to which subscription is done.
"eventname": "dbridges:participant.joined",// (string) eventName
"sourcesysid": "nameofcaller", // (string) Sys id of the member who has subscribed/connected to channel
"sqnum": null, // (string)
"sessionid": "ydR27s3Z92yQw7wjGY2lX", // (string) Session id of the member who has subscribed/connected to channel
"intime": null // (string)
}
dbridges:participant.left
This will be triggered only for presence (prs:)
and system (sys:)
channel subscription.
Callback parameters
payload: (dict)
{
"sessionid": "ydR27s3Z92yQw7wjGY2lX", // (string) Session id of the member who has subscribed/connected to channel
"libtype": "nodejs", // (string) Library Lang of the member who has subscribed/connected to channel
"sourceipv4": "0.0.0.0", // (string) IPv4 of the member who has subscribed/connected to channel
"sourceipv6": "::1", // (string) Not Applicable in this version
"sysinfo": '{"sysid":"nameofcaller"}' // (string) System Info of the member who has subscribed/connected to channel
}
metadata (dict)
:
{
"channelname": "prs:channelName" , // (string) channelName to which subscription is done.
"eventname": "dbridges:participant.left",// (string) eventName
"sourcesysid": "nameofcaller", // (string) Sys id of the member who has subscribed/connected to channel
"sqnum": null, // (string)
"sessionid": "ydR27s3Z92yQw7wjGY2lX", // (string) Session id of the member who has subscribed/connected to channel
"intime": null // (string)
}
System events - payload (dberror object) - details:
Source | Code | Description |
---|---|---|
DBNET_CHANNEL_SUBSCRIBE | ERR_FAIL_ERROR | dataBrdiges network encountered error when subscribing to the channel. |
DBNET_CHANNEL_SUBSCRIBE | ERR_ACCESS_DENIED | dBrdige network reported access violation with access_token function during subscription of this channel. |
DBNET_CHANNEL_UNSUBSCRIBE | ERR_FAIL_ERROR | dataBrdiges network encountered error when unsubscribing to the channel. |
DBNET_CHANNEL_UNSUBSCRIBE | ERR_ACCESS_DENIED | dataBrdiges network reported access violation with access_token function during unsubscribing of this channel. |