Zum Inhalt springen
Hearl
Esc
↑↓navigieren↵öffnen⌘Jvorschau
Auf dieser Seite

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.

E-Mail

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 "", 200

Geben Sie einen beliebigen 2xx-Status zurück, um den Versand zu bestätigen.

War diese Seite hilfreich?