用Python或Go创建集成Google Talk的聊天机器人
这个问题以前以不同的形式被问过很多次,
不过因为随着时间的推移,情况发生了很大变化,而现有的回答也不太令人满意,所以我决定再问一次。
我想做一个聊天机器人,让我们的团队能够回答问题和接受指令(大致上像Github的hubot那样),我希望这个机器人能在Google Talk服务上运行(就是Gmail和其他地方的聊天服务),而且我更想用Python或Go来实现,选择AWS而不是Google App Engine。
我的问题是,最近一年里有没有活跃开发的Python或Go的Google聊天客户端库?
关于聊天机器人的实现,任何建议都非常感谢。
我的计划是让一个Google Talk客户端一直运行,等待人们跟它对话,并理解他们的消息和指令(而不是运行一个服务器来处理用户认证等问题)。
3 个回答
我知道的唯一一个可能符合这个条件的就是 mattn / go-xmpp。
Google Talk服务是基于XMPP的,但它使用了一些开放但不标准的扩展,不过这些扩展并不是连接所必需的。任何符合标准的客户端都应该可以正常工作。
引用自https://developers.google.com/talk/open_communications#developer
我是一名即时通讯客户端的开发者。如何连接到Google Talk服务?
只要你遵循XMPP规范的要求,就可以连接到Google Talk服务。
连接Google Talk并没有什么特别的要求,只需要支持XMPP-Core和XMPP-IM就可以了。为了兼容旧系统,它甚至支持SASL PLAIN机制。
目前在Go语言中对XMPP的支持并不好,有几个项目在进行中,但都还没有准备好投入生产使用,而且很多项目已经被放弃。选择一些成熟的Python库是最好的选择。
如果不想想太多,我会选择Twisted Words或者Wokkel。
Google Talk使用的是一种简单的XMPP协议,唯一的特别之处在于,它需要一些非标准的认证方式才能作为客户端登录到他们的服务器(当时使用的是X-GOOGLE-TOKEN
这种SASL机制,现在据说是OAuth2)。不过,gtalk服务器之间的通信是可以正常工作的,不需要做任何修改。
值得注意的是,你也可以考虑自己搭建一个XMPP服务器,因为有很多免费的XMPP服务器可供选择(比如ejabberd、prosody、openfire和jabberd2),而且还有免费的支持XMPP的网页聊天客户端(例如JWChat),这样你就可以让人们直接通过网页界面聊天。
至于库,我听说在为Python编写网络应用时,使用Twisted框架是比较流行的,所以可以看看有哪些可用的资源。 @jnml提到的go-xmpp
似乎连XMPP核心RFC中规定的基本要求都不支持。