大家好,
我正在寻找设置一个在 Discourse 中更新帖子的机器人的最佳方法(或一份文档详尽的入门指南)。我们计划使用树莓派来检查一些开关的状态,并根据这些状态更新论坛中的帖子。
欢迎提供任何建议。提前感谢。
Richarde
Pravi
(PK)
2021 年6 月 26 日 18:44
2
要远程更新帖子,您必须配置邮件接收器,或者可以依赖 Discourse API。
谢谢 @Pravi
有没有适合新手的入门指南?
提前感谢
编辑:在思考 API 能带来的各种可能性后,我更倾向于采用该方案。
现在就开始着手查找相关设置信息……欢迎提供任何提示。
fzngagan
(Faizaan Gagan)
2021 年6 月 27 日 12:33
4
您可以使用此 gem 连接到 Discourse 并执行您需要的任何操作。
所以你想使用 Discourse API ?太棒了!让我们开始吧。
设置 Discourse 开发环境
请使用我们的 Windows 、macOS 或 Ubuntu 指南设置 Discourse 开发环境。
克隆 Discourse API Gem
现在您已经设置了 Discourse 开发环境,您的系统上应该已经安装了 Git 和 Ruby。您可以从控制台运行以下命令来安装 Discourse API gem:
git clone https://github.com/discourse/discourse_api.git ~/discourse_api
或者,您可以直接安装 gem:
gem install discourse_api
安装依赖项
打开 discourse_api 目录并输入:
bundle install
这将安装所有必需的 gem 依赖项。
生成 API 密钥
通过访问 /admin/api/keys 为您的 Discourse 实例生成一个 API 密钥,以便与 Discourse API 进行交互。
提供 API 凭据
既然您已经克隆了 …
Pravi
(PK)
2021 年6 月 27 日 12:35
5
我从未使用过 Discourse API,因此无法在 API 方面为您提供帮助。但我希望以下链接能帮助您入门。
https://meta.discourse.org/search?q=discourse%20api
Discourse API
请访问 Discourse API 文档网站以获取详细信息:
https://docs.discourse.org
身份验证
API 请求必须使用基于 HTTP Header 的身份验证。 将您的 Api-Key 和 Api-Username 作为 HTTP Header 传递。不支持通过查询参数或请求体进行身份验证(此功能已于 2020 年 4 月移除)。请参阅下面的 cURL 请求示例。
唯一仍然支持在查询参数中使用凭据的 API 端点是针对 RSS 源、邮件接收器端点和 ICS 路由的请求。
Content-Type 可以设置为 “application/x-www-form-urlencoded”、“multipart/form-data” 或 “application/json”。
以下是一个通过 cURL 发出的 POST 请求示例:
curl -X POST "http://127.0.0.1:3000/categories" \
-H "Content-Type: multipart…
https://meta.discourse.org/t/how-to-run-data-explorer-queries-with-the-discourse-api/120063/2
Discourse 由一个完整的 JSON api 支持。您在网站上可以做的任何事情也可以使用 JSON api 来完成。
API 的文档位于 docs.discourse.org 。您也可以使用 discourse_api Ruby gem 作为客户端库。但是,并非所有端点都有文档记录。
要确定如何使用 JSON API 完成某项操作,您可以遵循以下步骤。
示例:重新分类一个主题。
转到一个主题并开始编辑一个分类:
[image]
打开 Chrome 开发者工具,切换到 Network(网络)选项卡,选择 Fetch/XHR 过滤器:
[image]
执行操作
[image]
请求数据将显示在 “Payload”(负载)选项卡下
[image]
查看预览以确定结果
[image]
您现在拥有所需的所有信息。
端点是 https://try.discourse.org/t/online-learning/108.json
负载是使用 PUT 传递的
发送的参数是:category_id: 5
掌握了这些信息后,您就可以使…
我正在路上:
目前为止我所做的:
生成了一个 API 密钥
在 Postman 中编写了几个 Put 和 Get 请求,运行完美
将集合导出为 JSON 文件
我知道有一个用于该 API 的 Ruby 框架,但我更倾向于使用 Python,因为我已经在那里写过一些脚本了。
有人知道接下来该怎么做吗?
此致,
Richarde
好的,我刚刚发现了 pydiscourse,看起来效果相当不错
所以在 Postman 中设置一切步骤其实并非必要,但它有助于理解 API 的逻辑——所以也不算完全浪费时间
简而言之,如果你想通过 Python 与 Discourse 进行交互,可以使用 pydiscourse ,它基于以下作者的原始工作(列表可能不完整):
Marc Sibson
James Potter
Ben Lopatin
Daniel Zohar
Matheus Fernandes
Scott Nixon
Jason Dorweiler
Pierre-Alain Dupont
Karl Goetz
Alex Kerney
Gustav https://github.com/dkgv