Skip to main content

使用Http的方式发送消息

在社区中有很多小伙伴都想要一个功能:能否通过 restful api的方式来让机器发送消息。

在此章节当中将展示如何通过浏览器、curl或者python requests等方式让机器人主动发送消息。

实现方式

在最新版本python-wechaty中已经基于Quart内置了Http服务的能力。

而在插件中使用HTTP服务的方式非常简单,只需要在blueprint函数中注册路由函数即可。

tip

Quart是Flask的协程版本,作者也是Flask的原班人马,从简单易用的角度出发,故选用此框架。

代码实践

examples/http-bpt.py
from __future__ import annotationsfrom quart import Quartfrom wechaty import WechatyPlugin, Contactclass HttpBotPlugin(WechatyPlugin):    async def blueprint(self, app: Quart) -> None:        @app.route("/api/plugins/http_bot/say/<something>")        async def say_something(something: str) -> None:            contact: Contact = self.bot.Contact.load('<some-contact-id>')            await contact.say(something)

核心代码,仅仅是以上高亮部分,核心还是路由注册的代码。

消息发送

通过以上代码即可暴露出/api/plugins/http_bot/say/<something>路由,可通过http get的方式来调用。

例如通过curl的方式来发送文本消息:

curl http://localhost:5000/api/plugins/http_bot/say/你在干嘛呢?