API создания приглашений не отправляет письма

Привет,

Я отправлял приглашения через API (Discourse API Docs). Когда я делаю это в Postman, я получаю письмо с приглашением. Но при реализации в Laravel письмо не приходит.

Вот ответ от API в Laravel. Я заметил, что поле emailed имеет значение false.

В ответе от Postman поле emailed равно true.

Есть какие-то советы? Спасибо.

Кто-то другой уже сообщал об этом.

Посмотрите эту тему:

Да, это была другая ошибка, которая уже была исправлена. Сейчас проблема в том, что мы не получаем письма, хотя вызов API проходит успешно.

Не уверен, нужно ли что-то дополнительно включить? Потому что при вызове API через Postman письма приходят, а в созданном нами Laravel-приложении — нет.

Привет, @yburhaniel,

Это уже старая тема, но у меня возникла похожая проблема. API-запрос к invite.json генерирует ссылки-приглашения, но не отправляет письмо. В то же время, если тот же пользователь, к которому привязан API-ключ, приглашает других через интерфейс, письмо отправляется как обычно.

Как вы решили это в тот раз?

Вы установили send_email?

Я использую код на Python примерно так:

invitation = {
          "email": u.mail,
          "group_ids": valid_group_ids(u.groups),
          "send_email": True,
}

site.invites.post(data=invitation)

Не могли бы вы показать код, который используете вы?

Привет @thoka,

Спасибо за ваш ответ. Неужели всё так просто? Это была бы отличная новость!

В данном случае я использую Zapier, но с объектом, который создал, следуя этой документации по API. Возможно, это не та документация, или я что-то упускаю.

Я пробовал много разных параметров, но последний вариант был таким:

{
"email": "email@email.com",
"skip_email": false,
"custom_message": "Добро пожаловать на форум",
}

Также я только что попробовал со следующим набором параметров. К сожалению, это не привело к отправке приглашения:

{
"email": "email@email.com",
"skip_email": false,
"send_email": true,
"custom_message": "Добро пожаловать на форум",
}

Но, возможно, свойства, которые я указал, всё ещё каким-то образом неверны.

Я всегда использую Reverse engineer the Discourse API, чтобы применять те же параметры, что и в интерфейсе.

Хорошо, спасибо, что обратили на это внимание. Это инстинкт, который приходит с опытом работы в Discourse, я думаю. :slight_smile: В любом случае, раз вы об этом сказали, всё теперь имеет смысл.

Давайте попробую, и я вернусь сюда с результатами!

@thoka

К сожалению, проблема сохраняется: статус OK 200, но генерируется только ссылка для приглашения.

В API от UI дополнительно были установлены явные свойства expires_at и max_redemptions_allowed.

Кстати, я использую пользователя system через интеграцию. Это может быть проблемой? Хотя, думаю, я также пробовал использовать реального «человеческого» пользователя для тестирования.

Если вы создаете приглашения через интерфейс, всё работает как ожидалось?

@thoka

Да, это загадка, через UI всё работает без проблем.

Хотя я заметил, что даже если я отправляю приглашение из раздела «Профиль / Приглашения» пользователя system, в письме с приглашением всё равно указано, что приглашение отправил я (мой пользователь).

Попробуйте использовать административный API-ключ для вашего имени пользователя.
Через API вы должны получить такое же поведение, как и через интерфейс.