IRCBridgeModule

Configuring IRCBridgeModule
allows you to relay chat from your OpenSimulator region to an IRC channel and vice versa. You can use this module to


 * make in-world chat available via a text-only interface such as IRC
 * control objects from IRC channels
 * use in-world objects to control bots attached via IRC

can be used in three modes:


 * in traditional mode where we relay all in-world chat from all regions to a single IRC channel on a single server, or
 * in multi-channel mode where we can relay in-world chat from a specific region to a specific channel (or even to a specific server)
 * in object chat relay mode where we only relay chat to and from private in-world channels

In addition, we can send commands to  from in-world objects to re-configure

Traditional IRCBridge mode
In the traditional  mode ("traditional" because that was the original   modus operandi) all in-world avatar chat from all regions is relayed to a specific IRC chat channel on a specific server. Chat from an avatar is reported by an OpenSimulator powered IRC bot in the IRC channel. Chat originating on the IRC channel is reported via "voice of god" in all regions (voice of god meaning that the in-world avatars will "hear" the chat but won't be able to see the originator anywhere in the region).

To configure  for traditional mode operation use the following configuration section in your file (modifying as necessary, of course):

[IRC] enabled = true ; you need to set this otherwise it won't connect server = some.irc.server.net nick   = OpenSimBot user   = "USER OpenSimBot 8 * :I'm an OpenSim to IRC bot" channel = #opensim port = 6667 relay_chat = true report_clients = true

commands_enabled = false command_channel = 4711 access_password = WuffWuff

relay_private_channels = false relay_private_channel_out = 4712 relay_private_channel_in = 4713

msgformat = "PRIVMSG {0} :<{1} in {2}>: {3}"
 * fallback_region = name of "default" region
 * MSGformat fields : 0=botnick, 1=user, 2=region, 3=message
 * must start with "PRIVMSG {0} : " or irc server will get upset
 * for : :
 * for : - :
 * msgformat = "PRIVMSG {0} : {1} [{2}]: {3}"
 * for : - from :
 * msgformat = "PRIVMSG {0} : {3} - from {1}"

Let’s go through the list of configuration options:

Multi-channel mode
With multi-channel mode we can configure  to relay chat from different regions into different IRC channels — or even into different IRC channels on different IRC servers!

The following  configuration file extract configures  to relay chat from region A into IRC channel

channel = "#opensim-[%region]-[%host]"

Let’s take a closer look at what’s going on here: allows us to apply run-time variable substitution (a quite powerful mechanism).

In all of these examples, the square brackets are eliminated by the substitution process. The '%' prefix indicates that this is a run-time variable. A value in square-brackets and not preceded by '%' indicates that the value may have been supplied as a value in the IRC ini configuration. For example, the existing mechanism for naming the channel could be made unnecessary complicated by specifying:

channel  = “[channelid]” channelid = “#my-irc-channel”

The substitution process is exhaustive, so a configuration variable name may be constructed from run-time values.

To illustrate this, assume that the .ini file contains:

channel = “[#[%region]]”
 * 1) brief1 = “#chatter-1”
 * 2) brief2 = “#chatter-2”

Then region brief1 will be connected to channel #chatter-1, brief2 will be connected to #chatter-2, and all other regions will connect to channels with names identical to their region names. This is a trivial example, but becomes more meaningful when we consider all of the other parameters that might need to be unique per region (server, port etc). Using this mechanism we can create an ini file that has unique settings for all aspects of IRC for each region.

The following run-time values are available to this process:

Finally, a more comprehensive example of a configuration file; we are assuming that we have two regions, Wonky and Borked:

channel   = “[%region]” server    = “[[%region]-server]” port       = “[[%region]-port]” nick       = “[[%region]-nick]”

Wonky-server = irc1.server.org Wonky-port  = 1234 Wonky-nick  = WonkyBot

Borked-server = irc2.anotherserver.net Borked-port  = 1234 Borked-nick  = BorkedBot

The Wonky region will connect to IRC channel via port 1234 of IRC server  and will appear as WonkyBot. Our Borked region will connect to IRC channel via port 1234 of IRC server using the nickname BorkedBot.

Object chat relay mode
In object chat relay mode  relays messages from and to in-world channels.

To configure  for this mode you need to use the following configuration:

[IRC] enabled = true ; you need to set this otherwise it won't connect server = some.irc.server.net nick   = OpenSinBot channel = #opensin port = 6667 relay_chat = false report_clients = false

commands_enabled = false command_channel = 4711

relay_private_channels = true relay_private_channel_out = 4712 relay_private_channel_in = 4713

access_password = WuffWuff

msgformat = "PRIVMSG {0} :<{1} in {2}>: {3}"
 * fallback_region = name of "default" region
 * MSGformat fields : 0=botnick, 1=user, 2=region, 3=message
 * must start with "PRIVMSG {0} : " or irc server will get upset
 * for : :
 * for : - :
 * msgformat = "PRIVMSG {0} : {1} [{2}]: {3}"
 * for : - from :
 * msgformat = "PRIVMSG {0} : {3} - from {1}"

The important configuration variables here are:

Your in-world objects then need to use LSL code along the following lines:

llSay(command_channel, “access_password,from,message”);

to send messages to the IRC channel.

In-World configuration
The last feature worth mentioning is that you can control  from in-world by sending commands on a specific command channel.

To enable this feature you need to use the following configuration instructions:

commands_enabled = true command_channel = 4711

understands the following commands:

irc_admin XmlRpc method
supports one XmlRpc method that allows you to obtain the configuration for a specific region. To enable this method you need to enable the  module.

expects two parameters:

it will return

here is sample python code showing how to invoke :

import xmlrpclib s = xmlrpclib.Server('http://opensim.zurich.ibm.com:9000/admin') print s.irc_admin(dict(password = 'c00lstuff', region = 'zurela'))

{'channel': '#opensim-lotus3d-zurela-opensim.zurich.ibm.com', 'connected': True, 'enabled': True, 'nickname': 'lotus3dbot66', 'port': '', 'server': 'zurich.irc.ibm.com', 'success': True, 'user': "USER OpenSimBot 8 * :I'm an OpenSimulator to IRC bot"}