Непоследовательное поведение при вызове API REST Rocket Chat для отправки сообщения через C# - PullRequest
0 голосов
/ 22 апреля 2020

Я создал сервер Rocket Chat локально (версия 2.4.11) и пытаюсь отправить сообщение пользователю через REST API.

Программа написана на C#, и использует HttpWebRequest для создания каждого вызова, а затем класс WebResponse для получения каждого ответа, анализируя его содержимое (согласно данным JSON, согласно документации REST API Rocket Chat).

Мои вызовы в 4 раза, в таком порядке:

1 - LOGIN (URL-адрес « api / v1 / login », передавая JSON пользователя и пароль для «отправителя» «пользователь»

2 - IM.CREATE (URL « api / v1 / im.create », передавая X-Auth-Token и X-User- Идентификационные данные в заголовках и JSON для «имени пользователя» целевой учетной записи, чтобы создать или найти идентификатор комнаты для вызова следующего API с)

3 - SENDMESSAGE (" api / v1 / chat.sendMessage ", снова с заголовками X-Auth-Token и X-User-Id и JSON с идентификатором комнаты, предоставленным las t call, также с сообщением)

4 - LOGOUT (" api / v1 / logout ") с данными заголовка пользователя для завершения соединения / сеанса )

Когда я использую свою собственную учетную запись (ведьма была первой учетной записью с ролью ADMIN) для отправки на любую другую учетную запись, она работает, и сообщение отправляется - каждый шаг получает ответ в соответствии с документацией и переходит к следующему вызову - но когда я использую учетную запись бота (например, rocket.cat) или даже если я использую любую другую учетную запись, с пользовательскими ролями администратора (создала новую учетную запись с ролью ADMIN для проверки), вызовы не не работает после IM.CREATE, который возвращается без данных об ответе JSON.

Есть ли что-то, что мне нужно активировать при создании новой учетной записи, чтобы она могла работать (даже если роль ADMIN)? Это правильный порядок и API для отправки сообщения пользователю (не группе людей, а одному человеку в виде чата)?

ОБНОВЛЕНИЕ

Опубликовал проблему на GitHub (проект rocket chat) на REST API, ошибка 400, вызываемая после входа в систему # 17334

1 Ответ

0 голосов
/ 01 мая 2020

Итак, как оказалось, что-то, чего я не знал о возникновении этой ошибки - адрес получателя чувствителен к регистру, а имя учетной записи «пользователь» и «пользователь» не найдены API, если только соответствует точному случаю. Несмотря на то, что он передает API входа в систему (который не учитывает регистр), im.create нет, поэтому имя отправителя не обязательно должно быть Mach, но любой получатель должен.

...