Hack 89. IRC Your Web Application
Use Net_SmartIRC to have a conversation with your web application through your web server. Sometimes a web page is not the most convenient way to talk with an application. A lot of people are using instant messaging and chat systems (like IRC) to converse with each other. So why not allow them to have a conversation with your web application? Figure 9-8 illustrates the user and a bot having a conversation through an IRC server. The bot is run on the command line as a standalone PHP process. The Net_SmartIRC PEAR module [Hack #2] allows your web application to log into an IRC server and respond to commands. 9.5.1. The CodeSave the code in Example 9-8 as ircbot.php. Figure 9-8. The user and the bot talking over IRCExample 9-8. A simple IRC bot<?php include_once('Net/SmartIRC.php'); require_once('DB.php'); $dsn = 'mysql://root:password@localhost/books'; $db =& DB::Connect( $dsn, array( ) ); if (PEAR::isError($db)) { die($db->getMessage( )); } class dbbot { function listdata(&$irc, &$data) { global $db; $irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, 'Books: '); $res = $db->query( "SELECT name FROM book", array( ) ); while( $res->fetchInto( $row, DB_FETCHMODE_ASSOC ) ) { $irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, ' '. $row['name'] ); } } } $host = "localhost"; $port = 6667; $nick = "DBBot"; $chan = "#db"; $bot = &new dbbot( ); $irc = &new Net_SmartIRC( ); $irc->setUseSockets( TRUE ); $irc->registerActionhandler( SMARTIRC_TYPE_CHANNEL, '^list', $bot, 'listdata' ); $irc->connect( $host, $port ); $irc->login( $nick, 'Database bot', 0, $nick ); $irc->join( array( $chan ) ); $irc->listen( ); $irc->disconnect( ); ?> 9.5.2. Running the HackInstall the Net_SmartIRC PEAR module [Hack #2] and then run the ircbot.php script like this: % php ircbot.php Use your IRC client to connect to the IRC server specified in the script. Then join the #db channel and type the text "list" into the channel. As you can see in Figure 9-9, the IRC bot responds with a list of records from the books database. Figure 9-9. Talking with your application through IRCYour application will undoubtedly reference your own business logic and have a different set of commands and responses. You can add more commands by calling registerActionHandler( ) with other command handlers.
9.5.3. See Also
|