用Python或Go创建集成Google Talk的聊天机器人

2 投票
3 回答
2840 浏览
提问于 2025-04-17 14:58

这个问题以前以不同的形式被问过很多次,
不过因为随着时间的推移,情况发生了很大变化,而现有的回答也不太令人满意,所以我决定再问一次。

我想做一个聊天机器人,让我们的团队能够回答问题和接受指令(大致上像Github的hubot那样),我希望这个机器人能在Google Talk服务上运行(就是Gmail和其他地方的聊天服务),而且我更想用Python或Go来实现,选择AWS而不是Google App Engine。

我的问题是,最近一年里有没有活跃开发的Python或Go的Google聊天客户端库?
关于聊天机器人的实现,任何建议都非常感谢。

我的计划是让一个Google Talk客户端一直运行,等待人们跟它对话,并理解他们的消息和指令(而不是运行一个服务器来处理用户认证等问题)。

3 个回答

2

我知道的唯一一个可能符合这个条件的就是 mattn / go-xmpp

3

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

2

Google Talk使用的是一种简单的XMPP协议,唯一的特别之处在于,它需要一些非标准的认证方式才能作为客户端登录到他们的服务器(当时使用的是X-GOOGLE-TOKEN这种SASL机制,现在据说是OAuth2)。不过,gtalk服务器之间的通信是可以正常工作的,不需要做任何修改。

值得注意的是,你也可以考虑自己搭建一个XMPP服务器,因为有很多免费的XMPP服务器可供选择(比如ejabberd、prosody、openfire和jabberd2),而且还有免费的支持XMPP的网页聊天客户端(例如JWChat),这样你就可以让人们直接通过网页界面聊天。

至于库,我听说在为Python编写网络应用时,使用Twisted框架是比较流行的,所以可以看看有哪些可用的资源。 @jnml提到的go-xmpp似乎连XMPP核心RFC中规定的基本要求都不支持。

撰写回答