As others have said, Jabber may be a good way to go. What you could do is have your daemon connected to a Jabber server as a client, just like any other client connects to a Jabber server. Connecting to a Jabber server is the same for a non-interactive application like your daemon as it would be for an interactive chat session.

At that point, whenever your daemon wishes to send a message to someone, just have it do a lookup to see if that particular person is online, and what their status is. In Jabber terms, you're checking for that person's "presence". Included with the Net::Jabber module is one called Net::Jabber::Presence which you can use to detect a person's online status. This allows you to not only know if they are online, but you can detect whether they have their client set to something like "Do not Disturb" or "Extended Away". Perhaps, in one or both of those cases, you may wish to send an email versus giving them an IM.

There are already some Jabber clients written in Perl. A few examples are:

http://www.jabbercentral.org/clients/view.php?id=1007327470 - Perl Jabber Bot
http://www.jabbercentral.org/clients/view.php?id=962065957 - Jarl, Perl Jabber Client
http://www.jabbercentral.org/clients/view.php?id=1015797608 - pJab, Perl Console Client

Good luck!
-Eric

In reply to Re: Experiences with IM support? by andreychek
in thread Experiences with IM support? by Mur

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.