内容摘要 连接几乎所有的 PHP 应用程序到 IRC 服务器并使信息随处可用
内容摘要 连接几乎所有的 PHP 应用程序到 IRC 服务器并使信息随处可用
有一个免费的模块可以用于将 PHP 应用程序连接到 IRC 服务器,并对消息作出响应。为了说明如何使用该模块,本文向您展示如何在 PHP 中创建一个 IRC 聊天机器人(bot)(bot 是 automatic robot 的简称),用于向您告知按邮政编码查询的天气情况。
您不断想要与您的 PHP 程序进行交谈?您痴迷于即时消息?如果是这样,我可以为您提供一个模块!该模块存在于 PHP 扩展及应用资料库(PHP Application and Extension Repository,PEAR)中,用于将 PHP 应用程序连接到 Internet 中继聊天(Internet Relay Chat,IRC)服务器,并对服务器的消息作出响应。实际上,PEAR 模块是将 PHP 应用程序变成 bot。
|
聊天机器人(bot)的意义在于,您能够通过经常使用的机制 —— 即时消息 —— 与其进行通信。如果您总是在聊天室中,那么现在不需要离开聊天室就可以得到当地的天气信息。本文向您展示如何在 PHP 中创建一个 IRC 聊天机器人(bot),用于以向您告知按邮政编码查询的天气情况。
假如您不熟悉 IRC 系统,可以从这里入门。IRC 系统由两部分组成:服务器和客户机。服务器创建数个虚拟信道供用户登录并互相通信。信道被给予一个熟悉的名称,以与对话的主题匹配。
通过指定主机名称、端口号和所需的别名,将 IRC 客户机软件连接到服务器。客户机在成功地连接到服务器之后,就能够加入任何数目的信道并开始发送和接收消息。要发送消息,只需在一个文本框中输入消息,并按 Enter 键,就跟任何其他的即时消息客户机一样。然后客户机发送消息到服务器,服务器然后将消息广播到加入该信道的所有其他的客户机。IRC 客户机软件对所有的操作系统及便携设备可用。
聊天机器人(bot)可以像其他的客户机那样运行。它们连接到服务器,然后加入一个或多个信道。一般而言,聊天机器人(bot) 不会自主地发出消息。更确切地说,它们侦听信道中来自用户的符合特定格式的消息。聊天机器人(bot)发出消息以响应这些特定格式的请求。
本文中 聊天机器人(bot)查找的用户消息以 weather 开始,后跟邮政编码。(但是一开始,我仅查找 weather 以使例子简单。)
从安装几个 PEAR 模块开始。PEAR 是用户提供的模块组成的资料库。这些模块涵盖了读写不同类型的文件、使用不同的 Web 服务、科学模块以及更多内容。
PEAR 的一个主要功能是,站点为 Microsoft® Windows®、Linux® 以及 Mac OS X 操作系统提供了脚本,使您能够通过计算机的命令行方便地安装 PEAR 模块。下面是我在 Windows 命令提示窗口下的会话,通过该会话安装了 Net_SmartIRC 模块:
|
|
创建 IRC 聊天机器人(bot)的下一个步骤是设置聊天机器人(bot)能够登录的服务器。您可能已经使聊天机器人(bot) 登录到了一个公共服务器,但是我建议先安装一个本地服务器用于测试。
我选择运行 Windows 版本的 “beware ircd” 服务器(beware ircd 服务器还有一个 Linux 版本)。我查看了几台服务器,发现这一台是最容易使用的。安装 beware ircd 服务器很简单,我将其安装在 C:ircd 目录下。从该目录下,我通过打开命令提示符并键入如下命令,运行该服务器:
|
注意:无需更改任何配置。
但是如何知道服务器是否正在运行呢?要进行验证,需要安装 IRC 客户机。
要测试本地服务器,并且与聊天机器人(bot)进行通信,需要安装 IRC 客户机。我选择安装用于 Windows 的常见的 mIRC 客户机(在撰写本文时,V6.16 是最新版本)。您可以选择适合您的平台的客户机。
安装 mIRC 客户机后,我从 Startstart mIRC 应用程序。接着使用 Connect 命令连接到 localhost。我使用菜单中的 join 命令,连接到 #weather 信道,如图 1 所示。

连接信道后,将显示如图 2 所示的窗口。从这里我可以与其他人或者是聊天机器人(bot)交谈。

现在,服务器已在本地运行,IRC 客户机已安装好并在运行,并且安装了 PEAR 模块,我就可以编写接收我所在地区的天气状况的 PHP 聊天机器人(bot) 了。
我将创建脚本的几个版本。每一个版本都会添加更多的函数。PHP 聊天机器人(bot)脚本的第一个版本如清单 2 所示。在该脚本中,我登录到 IRC 服务器并创建了一个对特殊类型的消息作出响应的类。该模块专门用于为 IRC 创建 聊天机器人(bot)。
|
脚本中重要的部分是 registerActionhandler 方法,该方法连接到具有特殊动作字符串和方法的 bot 对象。^weather 字符串是一个正则表达式,如果该字符串与进入 IRC 信道的任何文本类型相匹配,那么将调用动作处理器。
脚本中其他重要的部分是 Weatherbot 类中的 weather 方法。该方法对天气请求作出响应,并且传回(在此时)“Yeah, weather”。(在本文的结尾部分,它将告诉您天气状况。)
要启动脚本,我使用下列命令在命令提示符下运行它:
|
脚本注册到本地 IRC 服务器,并开始进行无限循环。
图 3 展示了注册到服务器的 weather 聊天机器人(bot)。同时也展示了我在文本窗口中输入 weather 并按 Enter 键。

Weather 聊天机器人(bot)接着能够以固定的字符串 Yeah, weather 作出响应。
这是一个好的开始。现在,如何获得天气状况呢?
[1] [2]
编辑 webmaster