XMPP应用:用Google App Engine搭建聊天机器人
2009 9 4 02:40 PM 8837次查看
分类:Google App Engine 标签:Google App Engine, Python
API其实非常简单,主要是要了解XMPP是什么。但我懒得解释了,感兴趣的就去Google一下或看这几篇XMPP正式RFC标准文档吧。
由于Google Talk是基于这个协议的,而且GAE的XMPP API专门提供了在线查询功能,所以自然就用它了。
懒得过多介绍原理,所以大家自己看文档吧:Python,Java。
我只对Python感兴趣,因此下面的代码都是Python环境的。
首先是app.yaml的配置,得加上这行代码来启用XMPP支持:
inbound_services:
- xmpp_message
接着为XMPP的接收添加一个handler:
- url: /_ah/xmpp/message/chat/ # 只要包含这个地址即可,例如/.*也是可以的,但那就必须自己在程序里处理路径了
script: chat.py # 这个也是自己定义的,你也可以起诸如xmpp.py的文件名
再根据上面的配置,创建一个chat.py:
from google.appengine.api import xmpp
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class XMPPHandler(webapp.RequestHandler):
def post(self):
message = xmpp.Message(self.request.POST)
message.reply(message.body)
application = webapp.WSGIApplication([('/_ah/xmpp/message/chat/', XMPPHandler)])
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
然后将这个应用部署到GAE上去,服务器端就搭建好了。客户端就更简单了,只需要启动Google Talk,把正确的联系人添加上去,就可以聊天了。
由于我的应用程序id是keakon,所以我把keakon@appspot.com加为好友,便可以开始聊天了:
目前这个应用非常简单,就是你说什么,机器人就回什么。其他功能就自己去开发吧。
顺便介绍一个隐藏的API,因为文档中没有介绍。
这个东西是google.appengine.ext.webapp.xmpp_handlers,它里面有个CommandHandler类,可以替代webapp.RequestHandler。但必须自己改写message_received、text_message等方法。
它的作用就是提供了命令与参数,让你在和聊天机器人对话时,可以使用命令。
详细情况自己看看源码的注释吧,我去给这个应用加点好玩的东东~
向下滚动可载入更多评论,或者点这里禁止自动加载。