B-iggy
(B Iggy)
05.Июль.2020 09:16:58
1
Привет, ребята,
Я поискал, но не смог найти нужное направление.
Хочу автоматически публиковать ответ внутри темы сразу после того, как я отправил коммит в репозиторий GitHub — автоматически через вебхук.
Я работаю с Integromat и уже успешно сделал нечто подобное с темами .
Я настроил API в Discourse, вебхук в GitHub и сценарий HTTP POST в Integromat, но мне не хватает последнего элемента, чтобы всё заработало.
Моя текущая попытка выглядит так, но она не работает.
Думаю, дело в том, что Discourse не знает, что делать с POST-запросом.
Я имею в виду, что есть /new-message? и /new-topic?, но нет /new-reply?
Возможно, это что-то элементарное, заранее спасибо за помощь!
bartv
(Bart )
05.Июль.2020 09:37:42
2
Вы можете узнать, как составить свой запрос, проведя реверс-инжиниринг API Discourse. По сути, вам нужно открыть инструмент разработчика для сети, отправить ответ в тему и посмотреть, что происходит «под капотом»:
Discourse is backed by a complete JSON api. Anything you can do on the site you can also do using the JSON api.
The API is documented at docs.discourse.org . You can also use the discourse_api Ruby gem as a client library. However, not every endpoint is documented.
To determine how to do something with the JSON API here are some steps you can follow.
Example: recategorize a topic.
Go to a topic and start editing a category:
[image]
Open Chrome dev tools, switch to the Network tab, select …
B-iggy
(B Iggy)
05.Июль.2020 09:42:47
3
Огромное спасибо, @bartv
Прямо сейчас это делаю
Единственный вопрос: все ли поля обязательны для выполнения POST-запроса ответа? Их довольно много, и некоторые поля, как мне кажется, невозможно заполнить динамически, либо они подвержены ошибкам! (например, id:)
Например, в Zapier я однажды успешно создал POST-вебхук для темы, используя только эти поля данных
bartv
(Bart )
05.Июль.2020 09:44:30
4
Сомневаюсь, что все они обязательны. Просто попробуй
B-iggy
(B Iggy)
05.Июль.2020 10:16:51
5
Просто для информации: проблема не в полях данных, а в некорректном CSRF.
Смотрите здесь:
API requests with the Content-Type as “application/json” often receive an unhelpful message like “BAD CSRF”, so we should improve the error messaging so that it provides more details as to why they are receiving this error message.
@blake , это значит, что мне нужно установить api_username и api_key в заголовке?
Мой текущий прогресс, который не работает:
blake
(Blake Erickson)
06.Июль.2020 15:47:31
6
Да, вам нужно установить Api-Username и Api-Key в заголовке. Обязательно замените _ на -. Также необходимо убрать учётные данные из тела запроса.
B-iggy
(B Iggy)
06.Июль.2020 16:35:18
7
Отлично, большое спасибо @blake !
Это именно то, что нужно.
Для тех, кто, как и я, искал решение часами через Google и поиск, ответ именно здесь: