GTalk看起来是个很垃圾的聊天软件,但仔细研究,他的魅力在于他使用了XMPP开放协议,这样你可以使用各种各样的客户端来进行聊天。
freetalk就是其中一个客户端,他的优点在于可扩展性,你可以使用scheme语言来添加你想要的功能。
这里介绍的聊天机器人不是那种会跟你聊天的机器人,只是一种简化操作的方法,能实现远程控制,查字典,缩短URL,定位IP地址等,能提高工作效率,也可以纯键盘操作。
1.准备工作
你需要两个GTalk帐号。假设其中一个帐号为A,另一个为B。这里将B作为聊天机器人。A帐号中添加B为好友,添加后,要登录B帐号确认邀请。
2.安装freetalk
安装很easy,一句话:
sudo apt-get install freetalk
其他发行版那就下原版编译吧。
freetalk的主页:http://www.gnu.org/software/freetalk/
3.写配置文件
命令如下:
mkdir ~/.freetalk
将这个程序下载到刚才建立的目录中。
程序代码如下:
02 (ft-set-server! "talk.google.com") ;Google的聊天服务器,不用改
03 (ft-set-password! "passwd") ;Google帐号的密码
04 (ft-set-prompt! "#FreeTalk# ") ;命令提示符前缀,只是好看而已
05 (ft-set-sslconn! #t) ;启用加密,GTalk服务需要加密连接
06 (ft-set-port! 5223) ;设定端口号,不用改
07
08 (add-hook! ft-message-receive-hook ;添加接受消息的钩子
09 (lambda (time from nickname message)
10 (send-message-pipe from (string-append message " 2>&1"))))
最后一条命令其实是freetalk里定义的一个函数,他把输入的参数作为命令执行,并且把结果发送出去。
这里有个小的Linux技巧,命令 2>&1,将标准错误输出重定向到标准输出。因为自带的scheme函数不输出stderr,万一你的命令有错,而系统又不提示,那就不知道他在干嘛了。
4.运行freetalk
运行程序,一条命令就行了。
freetalk
这个程序会自动登录帐号B,现在你只要从帐号A中,打开对B的聊天窗口,在其中输入命令,他就会返回执行的结果。比如输入
ls /
这样就显示了所有根目录下的文件
其实这种远程控制也有个缺点,不能运行交互式的程序,比如VI,他只能执行你给的一条指令,不过对于内网的server,用这种方法就不需要进行端口映射了,很容易实现控制功能。
5.参考资料
Control your home appliance thru Internet via freetalk, Jabber/Google talk and X10 (需翻墙)
下一篇 搭建GTalk聊天机器人系列(2)——查字典、查IP、短地址缩减 将会介绍使用各种API来实现查字典,定位IP,缩短URL等功能。
2 comments