Benachrichtigungen
E-Mail-Zusammenfassungen und Webhooks für Gespräche, die Aufmerksamkeit brauchen, einschließlich Signaturprüfung.
Hearl kann Ihr Team benachrichtigen, sobald ein Gespräch Aufmerksamkeit braucht. Richten Sie das auf der Seite Benachrichtigungen ein. Nur Inhaber und Admins können diese Einstellungen ändern.
Wann Benachrichtigungen gesendet werden
Hearl prüft alle 15 Minuten. Ein Gespräch wird aufgenommen, wenn:
- sein Plattformstatus Noch keine Antwort oder Nutzer hat nachgefasst lautet
- sein Bearbeitungsstand noch Nicht begonnen ist
- die KI es als zu Ihrem Produkt gehörig beurteilt hat, ohne unsichere Einschätzungen
- seine Priorität mindestens dem von Ihnen festgelegten Minimum entspricht: alles, Mittel und höher oder nur Hoch
Jedes Gespräch wird pro Status einmal gemeldet. Wurde es als Noch keine Antwort gemeldet und der Nutzer fasst später nach, wird es erneut als Nutzer hat nachgefasst gemeldet.
Aktivieren Sie E-Mail senden und fügen Sie Empfänger hinzu. Lassen Sie die Liste leer, um alle Workspace-Mitglieder per E-Mail zu benachrichtigen. Jede Adresse ist möglich, etwa ein gemeinsames Support-Postfach, bis zu 20 Empfänger.
Jede Prüfung sendet eine Zusammenfassung mit bis zu 10 Gesprächen und einem Link zu den übrigen im Posteingang. Wählen Sie unter Sprache Englisch oder Chinesisch.
Webhook
Geben Sie einen Endpunkt ein. Er muss eine öffentliche https-URL sein. Hearl erkennt gängige Chat-Bots an ihrer Adresse und sendet das Nachrichtenformat, das sie erwarten:
| Adresse | Gesendet als |
|---|---|
hooks.slack.com |
Slack-Nachricht |
feishu.cn, larksuite.com |
Feishu-Textnachricht |
qyapi.weixin.qq.com |
WeCom-Markdown-Nachricht |
oapi.dingtalk.com |
DingTalk-Markdown-Nachricht |
discord.com, discordapp.com |
Discord-Nachricht |
| Jede andere URL | Generisches JSON (siehe unten) |
Die Seite zeigt, welche Art erkannt wurde. Test senden sendet ein Beispiel, und die Seite zeigt das Ergebnis des letzten Versands. Eine Anfrage, die länger als 8 Sekunden dauert, gilt als Zeitüberschreitung.
Generisches JSON
{
"event": "conversations.needs_attention",
"workspace": { "id": "org_123", "name": "Acme" },
"text": "*2 conversations need attention* · Acme\n• [reddit] Sync stopped working after 2.3 — No reply yet <https://…>",
"conversations": [
{
"id": "c_8f2a",
"platform": "reddit",
"product": "Acme",
"title": "Sync stopped working after 2.3",
"author": "some_user",
"url": "https://www.reddit.com/r/…",
"status": "待回复",
"priority": "高",
"category": "故障",
"inbox_url": "https://hearl.org/app?c=c_8f2a"
}
],
"sent_at": "2026-11-08T09:15:00.000Z"
}
| Feld | Beschreibung |
|---|---|
event |
conversations.needs_attention oder test für Test senden. |
workspace |
Die id und der name des Workspace. |
text |
Eine fertig postbare Zusammenfassung. Slack liest nur dieses Feld. |
conversations |
Jedes Gespräch in diesem Versand. |
sent_at |
Zeitpunkt des Versands im Format ISO 8601. |
platform ist x, reddit oder hn. status, priority und category sind stabile Codes auf Chinesisch, sodass Ihr Code unabhängig von der Sprache Ihres Workspace darauf abgleichen kann:
| Feld | Code | Bedeutung |
|---|---|---|
status |
待回复 |
Noch keine Antwort |
status |
用户有新回复 |
Nutzer hat nachgefasst |
priority |
高 / 中 / 低 |
Hoch / Mittel / Niedrig |
category |
故障 |
Fehler |
category |
求助 |
Frage |
category |
功能建议 |
Funktionswunsch |
category |
价格 |
Preise |
category |
负面反馈 |
Kritik |
category |
正面反馈 |
Lob |
category |
购买咨询 |
Kaufinteresse |
category |
其他 |
Sonstiges |
Signatur prüfen
Wenn Sie einen Webhook-Endpunkt speichern, erstellt Hearl dafür einen Signaturschlüssel. Sie können ihn auf der Seite Benachrichtigungen anzeigen oder erneuern. Die Anfrage enthält diesen Header:
X-Hearloop-Signature: sha256=<hex>
<hex> ist der HMAC-SHA256 des rohen Anfragetexts, mit Ihrem Signaturschlüssel als Schlüssel, als Hex in Kleinbuchstaben. Berechnen Sie ihn über genau die Bytes, die Sie empfangen haben, bevor Sie das JSON parsen, und vergleichen Sie in konstanter Zeit.
import { createHmac, timingSafeEqual } from "node:crypto";
import express from "express";
const app = express();
const secret = process.env.HEARL_WEBHOOK_SECRET;
app.post("/hearl", express.raw({ type: "application/json" }), (req, res) => {
const expected = "sha256=" + createHmac("sha256", secret).update(req.body).digest("hex");
const received = req.get("x-hearloop-signature") ?? "";
const ok =
received.length === expected.length &&
timingSafeEqual(Buffer.from(received), Buffer.from(expected));
if (!ok) return res.status(401).end();
const payload = JSON.parse(req.body.toString("utf8"));
console.log(payload.event, payload.conversations.length);
res.status(200).end();
});
app.listen(3000);import hashlib
import hmac
import json
import os
from flask import Flask, abort, request
app = Flask(__name__)
SECRET = os.environ["HEARL_WEBHOOK_SECRET"].encode()
@app.post("/hearl")
def hearl():
body = request.get_data()
expected = "sha256=" + hmac.new(SECRET, body, hashlib.sha256).hexdigest()
received = request.headers.get("X-Hearloop-Signature", "")
if not hmac.compare_digest(received, expected):
abort(401)
payload = json.loads(body)
print(payload["event"], len(payload["conversations"]))
return "", 200Geben Sie einen beliebigen 2xx-Status zurück, um den Versand zu bestätigen.