# IM Message Handler

###### Identifier:

org.eclipse.ecf.presence.bot.imMessageHandler

###### Since:

1.0.0 milestone 6

###### Description:

This extension point allows message handler objects to be associated with imrobot instances.

###### Configuration Markup:

<!ELEMENT extension (handler+)>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED

>

<!ELEMENT handler EMPTY>

<!ATTLIST handler

imRobotId CDATA #REQUIRED

filterExpression CDATA #IMPLIED

class CDATA #REQUIRED

>

The im message handler

- imRobotId - Required imRobotId. The value of this field must match a imrobot id
- filterExpression - Optional filter expression. If filterExpression is provided, then chatroom messages will be filtered via given regular expression. If match, then the handleChatRoomMessage method will be called. If not matched, then the received message will be ignored.
- class - The class of the message handler instance to create. Must implement org.eclipse.ecf.presence.bot.IIMMessageHandler.

###### Examples:

       <extension
             point="org.eclipse.ecf.presence.bot.imMessageHandler">
          <handler
                imrobotid="org.eclipse.ecf.presence.imbot.defaultbot"
                class="org.eclipse.ecf.presence.imbot.DefaultIMMessageHandler">
          </handler>
       </extension>

Note that the given imrobotid=org.eclipse.ecf.presence.imbot.defaultbot must be previously defined via the imrobot extension point. Here is an example:

       <extension
             point="org.eclipse.ecf.presence.bot.imRobot">
          <imRobot
                connectID="slewis@ecf.eclipse.org"
                containerFactoryName="ecf.xmpp.smack"
                id="org.eclipse.ecf.presence.imbot.defaultbot"/>
          </imRobot>
       </extension>

###### API Information:

The class implementation provided in extension point must implement the following interface:

    public interface IIMMessageHandler extends IContainerAdvisor {

     /**
      * This method is called when a {@link IChatMessage} is received.
      *
      * @param message
      *            the {@link IChatMessage} received. Will not be
      *            <code>null</code>. Implementers should not block the
      *            calling thread. Any methods on the given <code>message</code>
      *            parameter may be called.
      */
     public void handleIMMessage(IChatMessage message);

    }

###### Supplied Implementation:

No supplied implementation.

Copyright (c) 2007 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html