Send/SMS… Sametime plugin

Using a couple of developerWorks articles (Extending the Lotus Sametime client with an LDAP directory lookup plug-in and Extending IBM Lotus Sametime Connect V7.5 with an SMS messaging plug-in) for inspiration I wrote a SMS plugin for the embedded Lotus Sametime client in Lotus Notes. The action goes in the Send menu when right-clicking a contact.

The plugin picks up the cellphone number from Domino Directory, supports sending to multiple contacts in one go and uses our exiting SMS gateway for sending the SMS’es (via e-mail). The hardest part was finding the menu path to use to stick the action where I wanted it. For others you should use where slotX is either slot1, slot2 or slot3 depending on where in the Send menu you want the action.

Once I’ve made it configurable which server to use for Domino Directory and how the SMS should be sent (which domain) I’ll probably make it publicly available.

Further reading

Properly signed XTAF dictionaries now available for Notes 8.5.x

The wait has been long but I just got word (via Christian Henseler) that IBM yesterday released properly signed XTAF dictionaries for Notes 8.5.1. In case you’re wondering “XTAF dictionaries” are the common dictionaries shared by Lotus Notes, Lotus Sametime and Lotus Symphony. Additional language dictionaries has been available for a while but the Eclipse feature wasn’t signed so it was troublesome to install on client machines. The Eclipse features are now properly signed and they are easy to add to an update site and roll out using a widget catalog.

The bundle you need to grab from PartnerWorld or Passport Advantage is “IBM Lotus Notes XTAF Dictionaries 8.5.1 for Windows and Linux Multilingual (CZHE3ML)”.

Sametime 8.5

Lotus Sametime 8.5 Beta for the new meeting rooms have been added to and it looks great.

“Sametime 8.5 Meetings are an entirely new way to collaborate with others online. Sametime Meetings are incredibly easy to use. Fully integrated into the Connect client you already use for chat, they make it simple to join a meeting with a single click; invite others by dragging their names from the contact list; upload materials via drag and drop; even share your screen from the Macintosh operating system. Of course, not everyone can participate via a Sametime Connect client, so 8.5 includes a zero-download, firewall friendly browser client as well.

Sametime Meetings are also different. Meeting rooms are reservationless and don’t require scheduling. They can be instantly created and linked to calendar invitations from Lotus Notes and Microsoft Outlook. Sametime Meeting Rooms can be persistent. You can use the same room over and over for regular meetings and keep frequently used materials on hand during the course of the project.

Learn more about it by going here. Stay tuned for more Sametime capabilities to be available on Lotus Greenhouse soon.”

A serious blow for AppDev on Notes – the proof of entitlement for Lotus Sametime is seriously screwed up!

As you probably know you are entitled to a Lotus Sametime Entry license when you have a “Lotus Notes for Collaboration” license. This is really great and a real selling point for Notes since Sametime is a “first class citizen” in the Notes 8.x client as it provides you with awareness throughout the client and in custom applications including sidebar plug-ins. It also allows for awareness in web pages using either Sametime Links (stlinks) or the newer and much better Sametime webapi (as used in Lotus Connections 2.x).

So now comes the problem – have you ever read the PoE or Proff of Entitlement for Lotus Sametime as it pertains to the Lotus Notes for Collaboration license? Probably not. Read below and weep!! (or read the full document – the text for “IBM Lotus Notes for Collaboration” is on page 2 of that document)

“A valid POE for the IBM Lotus Notes for Collaboration does not include the right to:
1. … (omitted for brevity)
2. … (omitted for brevity)
3. Enable or use IBM Lotus Sametime Limited capabilities beyond the default settings in the Program as provided to You, or as established by policy within IBM Lotus Sametime server, including without limitation: Lotus Sametime Connect client, IBM Lotus Sametime Web conferencing capabilities, access from a mobile device, use of IBM Lotus Sametime Gateway, voice chat, video chat, file transfer, geographic location awareness, IBM Lotus Sametime toolkits or APIs, or plug-ins and applications built using the IBM Lotus Sametime unique APIs available in the IBM Lotus Sametime toolkits, with the exception of the chat logging service provider interface.

A POE for IBM Lotus Notes for Collaboration includes all rights granted hereunder for IBM Lotus iNotes for Collaboration.”

So this is lawyer speak and quite convoluted but in essence it says that a Lotus Notes for Collaboration licensed user may

  • use Sametime for chat and awareness using the default settings on the server (meaning no custom business card or photo)
  • not use file transfer
  • not use any Lotus Sametime API besides the chat logging API

The first two are IMO hopeless restrictions but the last one is really, really, really, really bad! It’s beyond words actually. It means that you as a developer must require that a user has a Sametime Standard license in order to use Sametime awareness in your own applications. To be fair it could be that this is only the case for sidebar applications and SWT based composite application components and doesn’t pertain to forms/views (though you could argue that they use an API as well). Another thing that this entails is that you may not use Sametime awareness in Lotus Connections as it uses a API to do the awareness (Sametime webapi). I just checked the PoE for Lotus Connections and no further Sametime entitlement is extended there.

So what does this mean for me as an application developer? Well it means that the sidebar applications I’m developing have to distinguish between Sametime users and make sure that Sametime functionality is only exposed to Sametime Standard license holders. How do I do that? Not sure as I don’t know of an API which tells me which Sametime license the current user has. Oh – and it has to be a Notes API as I otherwise technically violate the license agreement on behalf of the user.

Who came up with this? What sense does it make to provide less functionality in API than in the UI? I really don’t get it. If I had anything to say at all the restriction on API’s in the client should be lifted. It is these API’s that makes the platform strong and feel coherent since applications running on the platform can leverage the platform.

So from being really psyched about the appdev perspective in Notes as it pertains to Sametime and how Sametime could be used throughout the client I’m now really bummed out. From a customer standpoint it’s going to be difficult to tell them that many of the demos that IBM do require a Sametime Standard license. And then we have our own applications where we have to informing and making sure they understand what they may use based on the license they hold.


(As always I could be wrong about this but I have just been through IBM Lotus here in Denmark which says I have understood the PoE correctly so I’m probably right.)

Sametime business card data cache

The Sametime client has a cache of the information it has fetched from the business card (aka blackbox) system on a per user basis. This is both the textual data and the image data. In case your Sametime client displays stale data you can do one of two things:

  1. Right-click the contact and select “Refresh Person Info”. This will make Sametime refetch the data from the Sametime server.
  2. Clear the cache from disk.

In some cases option 1 wont work although it’s far far the easiest. I have seen this when changing the person image format (e.g. from jpg til gif). In this case you may need to clear the cache from disk.

So where is this cache? Well if you open the “” directory beneath your Notes data directory you’ll see a directory per Sametime community you’re connected to. In each of these directories you’ll find

  • an .index file containing a list of the known users
  • an XML file per user with person info
  • a picture, if any, of the user

If you want to purge the cache for a community you can close the Notes client, clear the contents of the .index file (you may be able to delete the file altogether but I haven’t tried) and delete the xml and image files. When you restart Notes and hover over a Sametime contact the client will refetch the business card data.


Sametime blackboxes and CommonField tag – keep your eyes open!

I have written quite a couple of posts about Sametime blackboxes over time on how to write your own and how to configure multiple blackboxes to fetch business card data from multiple sources. I wrote some articles in THE VIEW on the matter and I wrote the backbox used on the Bleedyellow site to fetch business card from Lotus Connections.

One of the critical pieces in the Sametime blackbox puzzle is the <CommonField CommonFieldName=”fieldname”/> tag from the userinfoconfig.xml (the file used to configure the blackbox system). This tag is used to indicate to the blackbox subsystem which field from the primary blackbox should be used to identify the user being queried in subsequent blackboxes. Unfortunately I have seen over the last couple of implementations I have done that this tag cannot be relied upon anymore.

In the last two implementations I have done I’m seeing that the UID from the context being sent to the secondary (and tertiary) blackbox is the distinguished name (i.e. the LDAP DN or Notes DN) rather than the e-mail address is specified in userinfoconfig.xml. These implementations are primarily based on Domino 8.0.2 and Sametime 8.0.1. In these implementations I have had to write code to “re-lookup” the e-mail address in LDAP based on the DN.

I’m trying to get IBM to react to this fact but no luck so far. I’ll keep you posted…

Developing plug-ins for Notes 8.0.x, Notes 8.5, Sametime 8.0.x and Sametime 7.5.x

I received an e-mail from Dirk Jebing on my blog post on deploying TwitNotes in Sametime and how I was having deployment problems due to an exception being thrown. This is a long time ago but Dirk now found the solution which actually turned out to be a close cousin to my Cross compiling sidebar plugins for Notes 8.0.x and Notes 8.5 post.

Hi Mikkel,

at least for my plugin I could solve this! The two steps I did (perhaps it may help you):
1) I realized that I build my plugin with sametime 8.01 SDK. So I changed that (that did not help at all)
2) In the sametime logs my eye fell on an UnsupportedClassVersionError. So I changed the compiler compliance level (which stood on 5.0) to 1.4, as it has been with Sametime SDK 7.5.1. And now it works!

Cya, Dirk

So the lesson is to always watch for the JDK level of the client you’re developing for…

Show ‘n Tell Thursday: SWT drag’n’drop in Notes 8.0.x and Notes 8.5 (19 February 2009)

This weeks SnTT post is about adding drag’n’drop of Lotus Sametime buddies in the Notes 8.0.x Standard and Notes 8.5 Standard client in SWT plug-ins. Unfortunately the Sametime API for dragging buddies around changed between Sametime 8.0.0 and Sametime 8.0.1 so you have to take this into account when developing drag’n’drop functionality that works across Notes 8.0.x and Notes 8.5. Read on…

As mentioned in my Drag’n’drop in SWT components post drag’n’drop uses a socalled Transfer classes to signal which types of data a drag source delivers and a drop target accepts. To allow Sametime buddies to dropped on your component you use PersonGroupTransfer class but this class changed package from Sametime 8.0.0 to Sametime 8.0.1… 😦

In Sametime 8.0.0 (Notes 8.0.x) the class is and in Sametime 8.0.1 (Notes 8.5) the class is (do not mind that the Sametime 8.0.0 class is in an “internal” package as it is exported from the plug-in). This means that if you develop a plug-in that needs to run on both Notes 8.0.x and Notes 8.5 you need to factor the drag’n’drop support out into two separate plug-ins and match based on perfect version numbers of the plug-in.

It’s a bit cumbersome but it works fine.