Luicid
(Luicid)
2 Octubre, 2023 06:06
1
Hola,
Estoy creando un plugin y necesito enviar algo al correo electrónico de un usuario.
Uso
creator = PostCreator.new(test_user, {
target_recipients: "someone@toto.com",
archetype: Archetype.private_message,
subtype: TopicSubtype.system_message,
title: "Hola sujeto de prueba",
raw: "Este es el mensaje. ¿Funciona?"
})
test_user es administrador
Pero cada vez que intento enviar usando esto, obtengo el error:
El tema está vacío
¿Alguna idea?
Según las especificaciones, eso debería tomar un nombre de grupo o un nombre de usuario:
it "can send a message to a group" do
Group.refresh_automatic_groups!
group = Group.create(name: "test_group", messageable_level: Group::ALIAS_LEVELS[:nobody])
user1 = user
group.add(user1)
post "/posts.json",
params: {
raw: "I can haz a test",
title: "I loves my test",
target_recipients: group.name,
archetype: Archetype.private_message,
}
expect(response).not_to be_successful
# allow pm to this group
group.update_columns(messageable_level: Group::ALIAS_LEVELS[:everyone])
post "/posts.json",
params: {
fab!(:topic) { Fabricate(:topic) }
it "errors when creating a private post" do
user_2 = Fabricate(:user)
post "/posts.json",
params: {
raw: "this is the test content",
archetype: "private_message",
title: "this is some post",
target_recipients: user_2.username,
topic_id: topic.id,
}
expect(response.status).to eq(422)
expect(response.parsed_body["errors"]).to include(I18n.t("create_pm_on_existing_topic"))
end
end
context "with errors" do
it "does not succeed" do
2 Me gusta
Luicid
(Luicid)
2 Octubre, 2023 07:44
3
Hola Robert,
Eso es extraño porque en el front-end, Discourse usa una carga útil como esta y está funcionando (probado con mi correo electrónico privado):
raw: De nuevo un contenido de mensaje aquí.
title: Hola, general Kenobi
archetype: private_message
target_recipients: j.doe@something.com
Me pareció extraño que esperáramos un nombre de grupo en el backend
1 me gusta
RGJ
(Richard - Communiteq)
2 Octubre, 2023 10:52
4
TL;DR usa target_emails en lugar de target_recipients
Ten en cuenta que target_recipients es un parámetro de PostsController, no un argumento para PostCreator.
Ese controlador calcula si los destinatarios son usuarios, grupos o direcciones de correo electrónico y luego finalmente lo pasa como target_emails a NewPostsManager y termina en TopicCreator.
5 Me gusta
system
(system)
Cerrado
1 Noviembre, 2023 13:00
6
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.