Wir verwenden eine gehostete Discourse-Instanz und nutzen das bereitgestellte Automatisierungs-Plugin mit seinen Skripten und Triggern. Wir haben jedoch Probleme beim Empfang von PMs aus dem Skript „PM mit Data Explorer-Ergebnissen planen“.
Es sieht so aus, als ob der Automatisierungs-Trigger funktioniert und die Data Explorer-Abfrage ausgeführt wird (diese Abfrage funktioniert und liefert Ergebnisse, wenn sie manuell ausgeführt wird). Wir erhalten jedoch keine PMs danach. Ich habe versucht, mich selbst als Empfänger und auch die Gruppe „Admin“ zu verwenden, aber in beiden Fällen werden keine PMs empfangen.
Ich bin mir nicht sicher, ob ich hier etwas Offensichtliches übersehe, aber jede Hilfe wäre willkommen.
Nach weiterer Untersuchung glaube ich, dass es mit der Art der Abfrage zusammenhängen könnte, die Sie ausführen möchten. Ich habe es gerade mit einer sehr einfachen Abfrage versucht und konnte sie ausführen und eine PM senden. Könnten Sie mitteilen, wie Ihre Abfrage lautet?
Vielen Dank, dass Sie sich darum gekümmert haben.
Die Abfrage ist nicht ganz einfach und sieht so aus:
WITH
ua AS (
SELECT target_topic_id, COUNT(id) FROM user_actions
WHERE action_type = 15
GROUP BY target_topic_id
)
SELECT
t.id,
t.title,
t.created_at,
t.last_posted_at,
t.views,
t.posts_count,
t.user_id,
t.last_post_user_id
FROM topics t
INNER JOIN users us ON us.id = t.user_id
LEFT JOIN ua ON ua.target_topic_id = t.id
WHERE t.deleted_at IS NULL
AND t.closed = false
AND t.archived = false
AND t.visible = true
AND ua.target_topic_id IS NULL
AND us.username_lower != 'system'
AND t.created_at > now() - INTERVAL '7' DAY
ORDER BY created_at DESC
Wie ich schon sagte, sie läuft manuell und liefert Ergebnisse.
Ich glaube, es hat etwas mit der user_id-Magie zu tun, die der Daten-Explorer macht, wenn er sie von bloßen IDs in benutzbare Links umwandelt. Wenn ich Ihren Bericht so ausführe, wie er ist, gibt er einen Fehler aus, genau wie Sie ihn sehen. Aber wenn ich sowohl t.user_id als auch t.last_post_user_id aus der SELECT-Anweisung entferne, funktioniert er.
Wenn ich diese in einfache Benutzernamen umwandle, scheint es auch über die Automatisierung ordnungsgemäß zu funktionieren:
WITH
ua AS (
SELECT target_topic_id, COUNT(id) FROM user_actions
WHERE action_type = 15
GROUP BY target_topic_id
)
SELECT
t.id,
t.title,
t.created_at,
t.last_posted_at,
t.views,
t.posts_count,
us.username,
u2.username
FROM topics t
INNER JOIN users us ON us.id = t.user_id
LEFT JOIN ua ON ua.target_topic_id = t.id
JOIN users u2 ON u2.id = t.last_post_user_id
WHERE t.deleted_at IS NULL
AND t.closed = false
AND t.archived = false
AND t.visible = true
AND ua.target_topic_id IS NULL
AND us.username_lower != 'system'
AND t.created_at > now() - INTERVAL '7' DAY
ORDER BY created_at DESC
Wir haben jedoch auch jemanden mit mehr Wissen gebeten, sich das genauer anzusehen.
Obwohl ich separat nicht sicher bin, ob Ihre Abfrage das tut, was Sie wollen. Hat es etwas mit der Lösung zu tun, da ich viele PMs in meinen Ergebnissen sehe?
Danke, ich werde es mit Änderungen an der Benutzer-ID versuchen.
Ich habe diese Abfrage ursprünglich nicht geschrieben, daher muss ich noch feststellen, ob sie uns überhaupt das liefert, was wir wollen, also werde ich sie wahrscheinlich neu schreiben.
related = relations.dig(colrender[col_index].to_sym) if col_index < colrender.size
Die if-Bedingung am Ende ist falsch: colrender soll spärlich sein, nicht dicht gepackt. Sie wird Nullen enthalten, wenn einige, aber nicht alle Spalten zusätzliche Rendering-Daten liefern.
Die korrekte Prüfung wäre wahrscheinlich unless colrender[col_index].nil?
Außerdem scheint dieser Code die Rendering-Typen url, reltime und html zu vernachlässigen, da es sich nicht um ActiveRecord-Klassen handelt.
Was mich betrifft, scheint es, dass ich dieses Automatisierungsskript nicht erfolgreich auslösen kann, unabhängig von der Data Explorer-Abfrage. Zum Beispiel: