Přeskočit obsah

Datové schránky - Technická reference

Entity

1. DataBoxAccount

Reprezentuje připojení k účtu ISDS. * Rozsah: Administrace * Klíčová pole: * login (Varchar): Login do ISDS. * password (Password): Šifrované heslo. * dev (Boolean): Přepíná mezi koncovými body Produkčního a Testovacího prostředí. * users (Link): Uživatelé oprávnění používat tento účet.

2. DataBoxMessage

Reprezentuje jednu zprávu (odeslanou nebo přijatou). * Klíčová pole: * dmId (Varchar): Unikátní ID zprávy ISDS. * status (Enum): Draft (Koncept), Sending (Odesílá se), Sent (Odesláno), Delivered (Doručeno), Received (Přijato). * from (Varchar): ID odesílatele (ISDS ID). * to (Varchar): ID příjemce. * attachments (Link): Propojené entity Attachment (soubory). * dataBoxAccountId (Link): Účet použitý pro tuto zprávu.

Architektura služby

Základní logika: Espo\Modules\DataBox\Tools\DataBox\Service

Tato služba zajišťuje veškeré interakce s API českých Datových schránek.

Metody

  • checkDataBox(string $id, int $daysBack = 90)

    • Orchestrátor pro synchronizaci. Volá checkDataBoxReceived a checkDataBoxSent.
    • $id: ID DataBoxAccount.
    • $daysBack: Jak daleko do minulosti kontrolovat zprávy (výchozí 90 dní).
  • createMessage(tRecord $messageRecord, ...)

    • Vstup: Objekt tRecord (z knihovny Defr\CzechDataBox).
    • Proces:
      1. Extrahuje metadata (Odesílatel, Příjemce, Anotace).
      2. Získá přílohy přes getReceivedDataMessageAttachmentsRaw.
      3. Dekóduje obsah base64 a vytvoří entity CRM Attachment.
      4. Vytvoří entitu DataBoxMessage.
      5. Zavolá applyFilters() (vlastní logické hooky).
      6. Zavolá noteDataBoxMessageReceived() pro aktualizaci Activity Streamu.
  • send(DataBoxMessage $message, User $user)

    • Proces:
      1. Ověří oprávnění uživatele pro DataBoxAccount.
      2. Sestaví objekt DataMessage.
      3. Zavolá api->sendDataMessage().
      4. Aktualizuje stav na Sent.
      5. Přidá poznámku "Sent" do Activity Streamu.
  • noteDataBoxMessageReceived/Sent

    • Vytvoří entitu Note propojenou s nadřazeným záznamem (např. Účet, Kontakt).
    • Používá DefaultParentFinder k určení, s kterou entitou propojit (na základě shody ID ISDS).

Integrační knihovna

Modul spoléhá na PHP knihovnu dfr/czech-data-box (zabalenou v Espo\Modules\DataBox\Tools\CzechDataBox\DataBox).

  • Namespace: Defr\CzechDataBox\Api
  • Klíčové třídy:
    • tRecord: Reprezentuje záznam zprávy.
    • DataMessage: Reprezentuje payload pro odesílání.