Łączenie załączników z dokumentami za pomocą join hooks: wyrażenia target i when, TTL i delay.
Czasami części dokumentu pochodzą z różnych źródeł. Pomyśl o fakturze XML przychodzącej przez Peppol i załączniku PDF dostarczonym osobno, lub o wielu załącznikach należących do tej samej faktury. Za pomocą join hook PSB automatycznie łączy te osobne zdarzenia w jeden dokument.
Join hook nasłuchuje na wielu tematach jednocześnie i rozpoznaje, które zdarzenia należą do siebie. Hook rozróżnia dwa typy zdarzeń:
Za pomocą wyrażeń określasz, które zdarzenie jest dokumentem głównym (target) i jak załączniki są dopasowywane (when). Gdy PSB znajdzie dopasowanie, łączy załączniki z dokumentem głównym i publikuje nowy temat.
Przebieg jest następujący:
SalesInvoiceReceived i AttachmentReceived)target, aby zidentyfikować dokument głównywhen, aby znaleźć dopasowanieSalesInvoiceJoined)Siła join hooks tkwi w wyrażeniach. Piszesz dwa wyrażenia: jedno do identyfikacji dokumentu głównego i jedno do dopasowywania załączników.
Wyrażenie target określa, czy zdarzenie jest dokumentem głównym. Często używanym wzorcem jest dopasowanie na podstawie tematu:
topic=="SalesInvoiceReceived"
Wyrażenie when łączy zdarzenie matching z właściwym zdarzeniem target. Tutaj porównujesz pola między zdarzeniem źródłowym (source) a zdarzeniem docelowym (target):
target.id == source.id && target.sender == source.sender
W tym przykładzie zdarzenia są dopasowywane, jeśli mają ten sam identyfikator dokumentu i tego samego nadawcę.
Uwaga: wszystkie wyrażenia muszą być zakodowane URL w adresie action. Wyrażenie
topic=="SalesInvoiceReceived"staje siętopic%3D%3D%22SalesInvoiceReceived%22. Nie zapomnij o tym, ponieważ PSB parsuje wyrażenia z query string.
Zarejestruj hook za pomocą API z akcją join://AddAttachment:
{
"id": "1",
"name": "join hook",
"action": "join://AddAttachment?target=topic%3D%3D%22SalesInvoiceReceived%22&when=target.id%20%3D%3D%20source.id%20%26%26%20target.sender%20%3D%3D%20source.sender&ttl=00:15:00&delay=00:30:00",
"topics": [
"AttachmentReceived",
"SalesInvoiceReceived"
],
"publishTopics": [
"SalesInvoiceJoined"
],
"isActive": true
}
Akcja ma następujący format:
join://AddAttachment?target={target-expression}&when={when-expression}&ttl={ttl}&delay={delay}
targetwhenttl1.00:00:00 (1 dzień)*JoinedErrordelayTablica topics hooka musi zawierać wszystkie tematy, na których join hook powinien nasłuchiwać. Obejmuje to tematy zarówno dla dokumentu głównego, jak i załączników.
Pole publishTopics określa, na jakim temacie publikowany jest połączony dokument. Możesz skonfigurować zwykły webhook lub e-mail hook na tym temacie, aby otrzymać wynik.
ttl (Time to Live) określa, jak długo PSB czeka na dopasowanie. Jeśli po upływie TTL brakuje dokumentu głównego lub załącznika, PSB publikuje temat błędu (*JoinedError). Dzięki temu możesz wykryć, kiedy zestaw jest niekompletny.
Ustaw TTL na wartość odpowiadającą oczekiwanemu czasowi realizacji. Jeśli załączniki zazwyczaj przychodzą w ciągu godziny, TTL 01:00:00 jest wystarczający.
Wskazówka: skonfiguruj webhook lub e-mail hook na temacie
*JoinedError. Dzięki temu otrzymasz sygnał, gdy brakuje załącznika lub faktury, i możesz podjąć działanie w odpowiednim czasie.
Bez delay łączenie rozpoczyna się, gdy tylko zdarzenie target i jedno zdarzenie matching zostaną znalezione. Jeśli oczekujesz wielu załączników do tego samego dokumentu, ustaw delay. PSB czeka określony czas po wykryciu zdarzenia target, a następnie łączy wszystkie załączniki dopasowane w tym okresie za jednym razem.
Załóżmy, że oczekujesz trzech załączników PDF do faktury i przychodzą one w ciągu 20 minut. Delay 00:30:00 zapewnia wystarczający margines na zebranie wszystkich załączników.
Organizacja otrzymuje faktury przez Peppol (temat SalesInvoiceReceived) i towarzyszące załączniki PDF osobnym kanałem (temat AttachmentReceived). Załączniki są dopasowywane na podstawie identyfikatora dokumentu i nadawcy. Po połączeniu kompletny dokument jest publikowany na SalesInvoiceJoined, po czym webhook przekazuje go do systemu ERP.
PSB odczytuje wyrażenia z query stringu URL join://AddAttachment. Znaki specjalne, takie jak =, ", spacje i &&, zaburzają parsowanie, jeśli nie zostaną zakodowane, na przykład topic%3D%3D%22SalesInvoiceReceived%22 zamiast surowej notacji.
ttl (Time to Live) to maksymalny czas oczekiwania na prawidłową kombinację zdarzeń target i matching. Jeśli czas upłynie bez dopasowania, PSB publikuje temat *JoinedError, dzięki czemu można zasygnalizować niekompletność zestawu i podjąć odpowiednie działania.
Należy użyć delay, gdy spodziewane jest przybycie wielu załączników w krótkim odstępie czasu: po wykryciu zdarzenia target PSB odczekuje czas delay, a następnie łączy wszystkie załączniki dopasowane w tym okresie za jednym razem. Bez delay łączenie rozpoczyna się natychmiast po znalezieniu jednego zdarzenia matching.
Potrzebujesz pomocy przy konfiguracji odpowiednich wyrażeń? Skontaktuj się z TechSupport pod adresem techsupport@econnect.eu. Pełna specyfikacja API jest dostępna na psb.econnect.eu.
Zobacz dokumentację API