Zum Inhalt springenSkip to content
ACP · HandbuchHandbook Zur KonsoleTo the console

ReferenzReference

Störungen nach Symptom, die Einstellungen, die Schnittstellen — und das Widget. Die Seite, die man nicht liest, sondern durchsucht.Failures by symptom, the settings, the interfaces — and the widget. The page you do not read but search.

Für alle, im Störungsfall. Nutzen Sie die Suche oben rechts oder die Taste /.For everyone, when something breaks. Use the search box at the top right, or the / key.

Symptom → UrsacheSymptom → cause#

Diese Tabelle enthält die Fehler, die beim Aufbau dieses Systems tatsächlich passiert sind — nicht die, die man sich ausdenken würde.This table holds the failures that actually happened while building this system — not the ones you would invent.

SymptomSymptomFast immerAlmost alwaysPrüfenCheck
Nach jedem Neustart sind alle abgemeldetEveryone is logged out after each restartACP_CONSOLE_SECRET ist nicht gesetzt — der Dienst erzeugt ein flüchtiges Geheimnis.ACP_CONSOLE_SECRET is unset — the service generates an ephemeral one.Das Protokoll beim Start sagt es ausdrücklich.The startup log says so explicitly.
Niemand kann sich anmelden, Dienst „nicht gesund"Nobody can sign in, service "not healthy"Die Kontodatei ist für den Dienstbenutzer unlesbar. Er scheitert geschlossen.The account file is unreadable to the service user. It fails closed.Eigentümer und Rechte der Datei.File owner and permissions.
Der Agent „kennt" eine Antwort nicht, die es gibtThe agent "does not know" an answer that existsDer Eintrag ist internal, oder seine Autorität ist context/signal.The record is internal, or its authority is context/signal.Zielgruppe und Autorität, in dieser Reihenfolge.Audience and authority, in that order.
Wir haben Wissen eingepflegt, nichts ändert sichWe entered knowledge, nothing changedEs sind Entwürfe. Nur Veröffentlichtes steuert einen Agenten.They are drafts. Only published records steer an agent.Der Bestand nach Status auf der Wissensübersicht.Stock by status on the knowledge overview.
Der Anrufpool ist leer, obwohl Kontakte da sindThe call pool is empty although contacts existKampagne im Entwurf, außerhalb der Anrufzeiten, oder keine datierte Vorbeziehung.Campaign is a draft, outside calling hours, or no dated prior relationship.Jede gesperrte Zeile nennt ihren Grund.Every blocked row states its reason.
Ein Dokument wird beim Hochladen abgelehntA document is rejected on uploadEs ist ein Scan ohne Textebene. Abgelehnt statt halb übernommen.It is a scan with no text layer. Rejected rather than half-ingested.Die Meldung nennt OCR ausdrücklich.The message names OCR explicitly.
Eine URL wird nicht geholtA URL is not fetchedSie zeigt ins eigene Netz oder hinter einen Login. Beides wird grundsätzlich verweigert.It points inside your own network, or behind a login. Both are refused outright.Öffentlich erreichbar? Ohne Anmeldung?Publicly reachable? Without signing in?
Links im Handbuch oder in der Doku enden im NichtsLinks in the handbook or docs go nowhereDie Seite wurde ohne abschließenden Schrägstrich aufgerufen; relative Links lösen dann gegen die Wurzel auf.The page was opened without a trailing slash; relative links then resolve against the site root./handbook leitet auf /handbook/ um — dem Redirect folgen./handbook redirects to /handbook/ — follow the redirect.

KonfigurationConfiguration#

VariableVariableBedeutungMeaning
ACP_ENVACP_ENVmock oder eine echte Betriebsart. mock braucht keine Zugangsdaten.mock or a real mode. mock needs no credentials.
ACP_CONSOLE_SECRETACP_CONSOLE_SECRETSigniert Sitzungs-Cookies. Ohne ihn überlebt keine Anmeldung einen Neustart.Signs session cookies. Without it no session survives a restart.
ACP_CONSOLE_USERSACP_CONSOLE_USERSPfad zur Kontodatei. Wird bei Änderung neu gelesen, ohne Neustart.Path to the account file. Re-read on change, with no restart.
ACP_DATA_ROOTACP_DATA_ROOTWurzel aller Mandantendaten. Jeder Mandant bekommt darunter sein eigenes Verzeichnis.Root of all tenant data. Each tenant gets its own directory beneath it.
ACP_REGIONACP_REGIONDatenresidenz, voreingestellt eu-central-1.Data residency, eu-central-1 by default.
ACP_CONFIDENTIAL_FRONTIERACP_CONFIDENTIAL_FRONTIERErlaubt vertraulichem Verkehr ein Frontier-Modell — nur bei EU-Region und Zero-Retention.Allows confidential traffic to a frontier model — only on an EU-region, zero-retention posture.
WarumWhy

Die Konfiguration wird pro Mandant aufgelöst und ist eingefroren. Kein Anfragebearbeiter kann verändern, was eine gleichzeitige Anfrage sieht — das ist der Grund, warum Mandantentrennung überhaupt haltbar ist.

Configuration is resolved per tenant and frozen. No request handler can mutate what a concurrent request sees — which is why tenant isolation holds at all.

RollenmatrixRole matrix#

AktionActionviewerviewersupervisorsupervisorleaderleaderadminadmin
Fläche und Verläufe lesenRead floor and transcriptsjayesjayesjayesjayes
Übernehmen und sprechenTake over and speakneinnojayesjayesjayes
Freigaben entscheidenDecide approvalsneinnojayesjayesjayes
Wissen anlegen und freigebenCreate and release knowledgeneinnojayesjayesjayes
Konten des eigenen Teams anlegenCreate own-team accountsneinnoneinnojayesjayes
Mandant, Schlüssel, AbrechnungTenant, keys, billingneinnoneinnoneinnojayes

API in KürzeThe API in brief#

Versioniert im Pfad: ein brechender Wechsel erscheint als /v2, bestehende Anbindungen laufen weiter. Innerhalb von v1 gilt: Felder kommen hinzu, sie verschwinden nie und werden nie umgewidmet.Versioned in the path: a breaking change ships as /v2 and existing integrations keep working. Within v1 the promise is: fields may be added, never removed or repurposed.

Ein Schlüssel gehört einem System. Eine Sitzung gehört einer Person. Keines funktioniert auf der Fläche des anderen.A key belongs to a system. A session belongs to a person. Neither works on the other's surface.

Authorization: Bearer acp_sk_<key-id>_<secret>
EndpunktEndpointZweckPurpose
GET /v1/healthGET /v1/healthDer einzige Endpunkt ohne Authentifizierung.The only unauthenticated endpoint.
GET /v1/conversationsGET /v1/conversationsGespräche dieses Mandanten. Der Mandant kommt aus dem Schlüssel, nie aus einem Parameter.This tenant's conversations. The tenant comes from the key, never from a parameter.
POST /v1/conversations/{id}/messagesPOST /v1/conversations/{id}/messagesNachricht senden, Antwort des Agenten erhalten.Send a message, get the agent's reply.
POST /v1/knowledgePOST /v1/knowledgeErzeugt einen Entwurf. Einen Veröffentlichen-Endpunkt gibt es nicht.Creates a draft. There is no publish endpoint.
GET /v1/knowledge-searchGET /v1/knowledge-searchSucht wie ein Kundengespräch — internes Material kommt nie zurück.Retrieves as a customer conversation would — internal material never comes back.
POST /v1/webhooksPOST /v1/webhooksEndpunkt registrieren; das Signaturgeheimnis wird genau einmal zurückgegeben.Register an endpoint; the signing secret is returned exactly once.
AchtungCareful

Ein Gespräch eines anderen Mandanten antwortet 404, nie 403. Beim WebSocket reist der Schlüssel als Parameter, weil Browser keine Header setzen können — er wird geprüft, bevor die Verbindung angenommen wird.

Another tenant's conversation answers 404, never 403. On the WebSocket the key travels as a parameter because browsers cannot set headers — it is validated before the socket is accepted.

API-Schlüsselverwaltung.
Schlüsselausgabe. Der Klartext erscheint genau einmal; gespeichert wird nur ein Hash.
API key management.
Key issuance. The plaintext appears exactly once; only a hash is stored.

Das Widget einbettenEmbedding the widget#

<script src="https://acp.example/static/widget/acp-widget.js"
        data-key="acp_pk_..." data-lang="de" async></script>
  • Es trägt einen öffentlichen Einbettungsschlüssel, nie einen API-Schlüssel. Ihn zu besitzen erlaubt genau eines: ein Gespräch zu beginnen, und nur von der eingetragenen Domain.It carries a public embed key, never an API key. Holding it permits exactly one thing: starting a conversation, and only from the registered origin.
  • Shadow DOM — die einbettende Seite kann das Widget nicht kaputtstylen, und das Widget nicht die Seite.Shadow DOM — the host page cannot break the widget's styling, and the widget cannot restyle the host.
  • Offenlegung zuerst — serverseitig geliefert und angezeigt, bevor jemand tippen kann.Disclosure first — server-supplied and shown before anyone can type.
  • textContent, nie innerHTML — Modellausgabe darf in einer fremden Seite nicht ausführbar werden.textContent, never innerHTML — model output must not become executable in someone else's page.

Die Farbgebung kommt aus --acp-*-Variablen, die durch die Shadow-Grenze vererbt werden. White-Labelling ist eine Token-Überschreibung, nie ein CSS-Umbau.Colour comes from --acp-* variables, which inherit through the shadow boundary. White-labelling is a token override, never a CSS rewrite.

WeiterlesenFurther reading#

IntegrationsmaterialIntegration material
/integration/ — Funktionsumfang, Voraussetzungen, Fahrplan./integration/ — features, requirements, roadmap.
VertrauensseiteTrust page
/trust/ — öffentlich, für Kundinnen und Aufsicht./trust/ — public, for customers and regulators.
Dieses Handbuch als MarkdownThis handbook as Markdown
docs/handbook/de/ und docs/handbook/en/ — mit Bildern, zum Import ins Wiki.docs/handbook/de/ and docs/handbook/en/ — with images, ready to import into a wiki.
Screenshots neu erzeugenRegenerate the screenshots
scripts/handbook_fixture.py startet die Beispieldaten, scripts/handbook_shots.py fotografiert sie.scripts/handbook_fixture.py serves the sample data, scripts/handbook_shots.py photographs it.