menu

天魔窟

勇往直前

Avatar

PHP Jabber Chatbot: PIMB 修改记录

nirvana 0.8 计划集成现在的 emoTag,也就是抄袭 Twitter,但是希望能支持出 Web 界面以外的更新方式,比如说通过 Google Talk。

这就需要写一个 Chatbot(聊天机器人)。

我的网站空间不支持自己安装后台程序,所以只能考虑 web-based 的。Google Talk 是基于著名的 XMPP/Jabber 协议,网上也早就有现成的 PHP Jabber Client 类。

昨天搜索到一个叫做 PIMB 的框架,它对一个比较流行的 PHP Jabber 类做了封装和扩展,提供了一种比较简单的 Chatbot 编写方式,同时自带 Bot 管理界面,是今年1月份更新的,最新支持 Google Talk,看介绍挺不错的,但不知道为什么配套的 Bug Tracker 和论坛都很冷清。

下载了一份把玩,才发现问题不少。最严重的问题就是不支持中文,一旦输入中文,Bot 就立刻掉线。

好在代码量不大,我改了一上午,目前基本没有什么问题了。特此记录一下,方便同好参考。

第一个问题是它的一些前台 HTML 文件里用的是 PHP 的简短格式 <?= xxx ?>,默认配置的 PHP 环境并不支持,所以建议改成标准的 <?php echo(xxx); ?>。

然后就是中文支持了,问题的关键在于它在处理 XML 数据是用了 htmlentities 和 htmlspecialchars 这样的编码函数,而这些函数如果不添加更多参数的话,默认是不支持双字节编码的!所以当输入中文后,XML 数据就变得不合法了。因为这个程序用了一些 Ajax 的东西,所以 debugging 也挺麻烦。因此你需要 search & replace 所有的这些编码函数,给它们加上 ENT_COMPAT 以及 UTF-8 等参数,具体参看 PHP 手册。

然后就 OK 了。这个机器人总的来看还是很不错的,我想想怎么把它用的更好吧。

现在还没有写任何代码,所以暂时不公布 Bot 的地址,等公布以后大家可以在 Google Talk 里添加它为好友。

如果试验效果不错,再看看能不能加上 MSN 的支持。

学习了~~哈哈,不知道到时候能不能看源代码

想不出来怎么用?

在gtalk上给bot聊天咩?

然后就在网页上自动出现了?

楼上正解!

CK,上下MSN看我给你的留言,我有点事需要你帮下忙.谢谢

评论已关闭