MS Graph v2 (od v5.7.102)

Cron MsGraphCreateProcessesFromMailCron2 (dále jen V2) zakládá případy z e-mailů načtených přes Microsoft Graph. Je nástupcem cronu MsGraphCreateProcessesFromMailCron (dále jen původní cron). Původní cron zůstává beze změny a běží dál – na V2 se přechází vědomě, až když se rozhodnete.

Článek je psaný pro konzultanty: co V2 přináší, jak na něj přejít a co znamená každý parametr.

Založení App Registration v Entra ID a získání ID složek je pro oba crony stejné, proto se zde neopakuje. Postup najdete v článku MS Graph – konfigurace cronu.

Dostupnost

Verze TAS

Dostupné od

Jak se nastavuje

Filtr typu zprávy a mapování hlaviček

5.7

5.7.102

ruční úprava JSON

ne

5.17

5.17.16

ruční úprava JSON

ne

5.19

5.19.5

formulář s validací

ano

Základ je na všech verzích stejný. Na 5.19 navíc:

  • se nastavení zadává ve formuláři, který chyby hlídá už při uložení,
  • uživatele, šablonu a hlavičku vybíráte ze seznamu místo psaní ID,
  • pole, která nedávají smysl, jsou skrytá (např. přípony příloh se ukážou až po zapnutí jejich filtru),
  • je k dispozici filtr typu zprávy (messageClass) a mapování hlaviček (headerMapping).
Na 5.7 a 5.17 nejsou pozvánky ani automatické odpovědi odfiltrované. Pozvánka na schůzku nebo odpověď „mimo kancelář“ tu založí případ jako běžná pošta. Pokud to zákazníkovi vadí, odfiltrujte je pravidlem přímo v poštovní schránce. Chyby v JSON (překlep v ID složky nebo šablony) se navíc ukážou až při běhu cronu, a to v souhrnu běhu.

Co je ve V2 jinak

Jedna chyba už neshodí celý běh

To je hlavní důvod, proč V2 vznikl. U původního cronu stačila jedna nedostupná schránka nebo jeden rozbitý e-mail a zbytek se v tom běhu nezpracoval. V2 zpracovává každou schránku i každý e-mail samostatně. Problém zapíše a pokračuje dál.

Souhrn po každém běhu

Po každém běhu přibude do logu jeden souhrnný záznam: kolik e-mailů se načetlo, zpracovalo, přeskočilo a selhalo. U každého neúspěšného e-mailu uvádí schránku, předmět, odesílatel a důvod. Celý log už procházet nemusíte.

Když v běhu byla alespoň jedna chyba, může navíc odejít:

  • souhrnný e-mail – jedna zpráva za celý běh (nastavení runSummary),
  • e-mail odpovědným za schránku – každý dostane jen chyby svých schránek (nastavení errorEmailAddresses u schránky). Když jeho schránky prošly bez chyby, nedostane nic.

Úspěšný běh žádný e-mail neposílá.

Kontrola nastavení před připojením

Než se V2 připojí ke schránce, zkontroluje její nastavení: přihlašovací údaje, ID složek, číselná ID procesu a kolidující přepínače příloh.

Ochrana proti dvojímu zpracování

Aktivní smí být vždy jen jeden z cronů MsGraphCreateProcessesFromMailCron a MsGraphCreateProcessesFromMailCron2 (včetně jejich klonů). Pokus uložit jako aktivní i druhý z nich skončí chybou. Když se to obejde zásahem do databáze, V2 si při startu všimne, že běží původní cron, přeskočí se a zapíše proč.

Další novinky

  • E-mail, u kterého se nepodařilo založit případ, zůstane nepřečtený ve vstupní složce a zkusí se znovu při dalším běhu.
  • Ignorování obrázků z podpisu – loga a bannery se nemusí ukládat jako dokumenty případu.
  • E-mail jako PDF – samotnou zprávu lze uložit k případu jako PDF.
  • Filtr typu zprávy (jen 5.19) – pozvánky, doručenky a odpovědi „mimo kancelář“ nezaloží případ.
  • Mapování hlaviček (jen 5.19) – vlastní hlavičku e-mailu lze uložit do proměnné.

Přechod z původního cronu

Při upgradu na verzi s V2 se cron V2 založí sám a předvyplní podle původního cronu: schránky, přihlašovací údaje, mapování, rozvrh i timeout. Založí se ale jako neaktivní, takže se nic samo nespustí a nic se nezpracuje dvakrát. Původní cron zůstává beze změny a běží dál.

Postup přepnutí

  1. Otevřete cron MsGraphCreateProcessesFromMailCron2 a projděte předvyplněné nastavení podle tabulek parametrů níže. Zkontrolujte hlavně runSummary, kam budou chodit souhrnné e-maily.
  2. Deaktivujte původní cron MsGraphCreateProcessesFromMailCron.
  3. Aktivujte MsGraphCreateProcessesFromMailCron2.
  4. Po prvním běhu zkontrolujte v logu souhrnný záznam.
Pořadí je důležité. Dokud je aktivní původní cron, V2 aktivovat nejde.

Jak ověřit převedené nastavení

V servisní konzoli spusťte:

sys.msGraphConvertParamsForCron2()

Funkce vrátí nastavení původního cronu převedené do struktury V2 a nic přitom nezmění. Poslouží k porovnání nebo ke zkopírování do V2. Konkrétní cron (např. klon) převedete podle jeho ID:

sys.msGraphConvertParamsForCron2(42)

Klony původního cronu

Pokud máte původní cron naklonovaný pro více konfigurací, migrace klony nepřevádí. Jen je vypíše do update logu. U každého klonu:

  1. převeďte jeho nastavení funkcí sys.msGraphConvertParamsForCron2(ID_klonu),
  2. naklonujte cron V2 a vložte do něj výsledek,
  3. deaktivujte klon původního cronu a aktivujte klon V2.

Co se při převodu změní

Původní cron

V2

přepínače přímo na schránce

přesunuté do items[].config

errorEmailAddress (jedna adresa)

errorEmailAddresses (seznam adres)

ignoreAttachments

ignoreAllAttachments

–

nový blok runSummary. Když má instance nastavené adresy pro chyby cronů, vyplní se jimi a souhrnný e-mail se zapne.

–

nový blok messageClass s výchozím filtrem (jen 5.19)

Příklad nastavení

Jedna schránka pro faktury. Odpovědná účetní dostává chyby své schránky, podpora dostává souhrn celého běhu a obrázky z podpisů se neukládají.

{
    "amountOfEmailByRun": 100,
    "runSummary": {
        "log": true,
        "sendEmail": true,
        "emailAddresses": ["podpora@firma.cz"]
    },
    "items": [
        {
            "auth": {
                "type": "secret",
                "emailAddress": "faktury@firma.cz",
                "tenantId": "00000000-0000-0000-0000-000000000000",
                "clientId": "00000000-0000-0000-0000-000000000000",
                "clientSecret": "{{vault:msgraph-faktury}}"
            },
            "folders": {
                "in": { "id": "ID_VSTUPNI_SLOZKY" },
                "out": { "id": "ID_VYSTUPNI_SLOZKY" }
            },
            "process": {
                "user_id": 1,
                "tproc_id": 25,
                "header_id": 3
            },
            "config": {
                "errorEmailAddresses": ["ucetni@firma.cz"],
                "ignoreInlineAttachments": true
            },
            "mapping": {
                "sender": { "value": "from.emailAddress.address", "option": "optional" },
                "mailSubject": { "value": "subject", "option": "optional" },
                "mailBody": { "value": "body.content", "option": "optional" }
            }
        }
    ]
}
Další schránku přidáte jako další položku v poli items. Na 5.19 použijte ve formuláři tlačítko pro zkopírování položky a upravte jen to, co se liší.

Parametry

Sloupec Povinné:

  • Ano – bez vyplnění se schránka nezpracuje a důvod se objeví v souhrnu,
  • Ne – můžete vynechat, použije se výchozí hodnota,
  • Podmíněně – povinné jen v situaci popsané u parametru.

U nepovinných parametrů je smazání klíče totéž jako nastavení výchozí hodnoty. Formulář na 5.19 si některé klíče drží i s prázdnou hodnotou, to nevadí.

Hlavní úroveň

Parametr

Povinné

Výchozí

Co dělá

amountOfEmailByRun

Ne

100

Kolik e-mailů se za jeden běh načte z každé schránky. Při 0 nebo vynechání se použije 100.

runSummary

Ne

viz níže

Souhrn běhu v logu a e-mailem.

items

Ano

–

Seznam schránek. Když je prázdný, cron nemá co zpracovávat.

runSummary – souhrn běhu

Parametr

Povinné

Výchozí

Co dělá

log

Ne

true

Zapíše souhrn do logu: součty a u každého neúspěšného e-mailu schránku, předmět, odesílatele a chybu.

sendEmail

Ne

false ve formuláři

Pošle souhrn e-mailem, jen když v běhu byla alespoň jedna chyba. Jedna zpráva za celý běh. Souhrn nechodí jen tehdy, když je zde výslovně false.

emailAddresses

Podmíněně

[]

Kam souhrn chodí. Na 5.19 je povinné, když je sendEmail zapnuté, a pole se zobrazí až po jeho zapnutí. Když zůstane prázdné, souhrn jde na adresy pro chyby cronů z konfigurace instance.

Na 5.7 a 5.17 (JSON) pozor: když klíč sendEmail smažete, souhrn se posílá. Když necháte emailAddresses prázdné, jde na adresy pro chyby cronů z konfigurace instance. Pokud souhrnný e-mail nechcete, nastavte výslovně "sendEmail": false.

items[].auth – přihlášení ke schránce

Parametr

Povinné

Výchozí

Co dělá

emailAddress

Ano

–

Adresa schránky. Na 5.19 se podle ní pojmenovává položka v seznamu schránek.

tenantId

Ano

–

ID tenanta (adresáře) v Microsoft Entra ID.

clientId

Ano

–

ID aplikace (client ID) z App Registration.

clientSecret

Podmíněně

–

Povinné při type: "secret". Místo hesla v čitelné podobě doporučujeme odkaz do trezoru ve tvaru {{vault:nazev}}.

type

Ano

secret

secret nebo dedicated. Jiná hodnota je chyba.

scope

Ne

[]

Volitelné rozsahy oprávnění.

items[].folders – složky

Parametr

Povinné

Co dělá

in.id

Ano

Složka, ze které se e-maily načítají.

out.id

Ano

Složka, kam se e-maily po zpracování přesunou.

items[].process – jaký případ se zakládá

Parametr

Povinné

Co dělá

user_id

Ano

Uživatel, pod kterým se případ založí.

tproc_id

Ano

Šablona, ze které případ vznikne.

header_id

Ano

Hlavička, pod kterou případ spadá.

holderData

–

Jen pro čtení. Plní se za běhu podle mapování, cokoli sem zapíšete, se ignoruje.

user_id, tproc_id a header_id musí být čísla. Na 5.19 je vybíráte ze seznamu, takže je špatně zadat nejdou.

items[].config – chování schránky

Parametr

Povinné

Výchozí

Co dělá

errorEmailAddresses

Ne

[]

Odpovědní za tuto schránku. Po běhu s chybou dostane každá adresa e-mail jen s chybami svých schránek. Funguje nezávisle na runSummary.

setEmailProcessedOnError

Ne

true

Co udělat s e-mailem, když se případ založil, ale nespustilo se jeho workflow. Zapnuto: e-mail se označí jako přečtený a přesune do výstupní složky. Vypnuto: zůstane nepřečtený a každý další běh z něj založí další chybný případ.

ignoreAllAttachments

Ne

false

K případu se nenahraje žádná příloha.

ignoreSpecificAttachments

Ne

false

Přeskočí jen přílohy s příponami z ignoredAttachmentTypes. Nejde kombinovat s ignoreAllAttachments.

ignoredAttachmentTypes

Podmíněně

[]

Přípony, které se přeskočí, např. .p7s (elektronický podpis). S tečkou i bez, na velikosti písmen nezáleží. Při zapnutém ignoreSpecificAttachments musí obsahovat alespoň jednu příponu.

ignoreInlineAttachments

Ne

false

Neukládá obrázky vložené v těle zprávy (loga v podpisu, bannery). V těle e-mailu zůstanou vidět. Běžné přílohy (faktura v PDF nebo JPG) to neovlivní.

attachEmailAsPdf

Ne

false

Uloží samotný e-mail k případu jako PDF Mail_<datum>_<odesílatel>.pdf v jazyce aplikace. Obrázky nahradí textovou poznámkou a vypíše názvy příloh, takže PDF zůstane malé. Když se PDF vytvořit nepodaří, jen se to zaloguje a e-mail se zpracuje dál.

ignoreAttachmentErrors

Ne

true

Chyby při zpracování příloh zpracování e-mailu nezastaví.

ignoreVariablesUpdateAndUseDataHolder

Ne

true

Proměnné případu se neplní přímo, data z e-mailu se uloží do holderData.

useEmailObjectInDataHolder

Ne

false

Do holderData se uloží celý objekt e-mailu.

Obrázky z podpisu vs. přípony: ignoredAttachmentTypes s .jpg přeskočí každý JPG, tedy i naskenovanou fakturu. Na loga v podpisu proto použijte ignoreInlineAttachments, které běžné přílohy pustí dál.
attachEmailAsPdf znatelně prodlužuje běh cronu, protože se PDF generuje pro každý e-mail. Zapínejte ho jen tam, kde to zákazník opravdu potřebuje.

items[].messageClass – filtr typu zprávy (jen 5.19)

Parametr

Povinné

Výchozí

Co dělá

enabled

Ne

true

Případ vznikne jen z povolených typů zpráv. Ostatní se zapíšou do logu a přesunou do výstupní složky. E-mail, jehož typ nejde zjistit, se zpracuje vždy.

allowedPrefixes

Ne

["IPM.Note"]

Typy zpráv, které se zpracují. IPM.Note je běžná pošta. Pozvánky (IPM.Schedule.*) a doručenky (REPORT.*) tím vypadnou.

ignoredClasses

Ne

["IPM.Note.Rules.OofTemplate.Microsoft"]

Konkrétní typy, které se odmítnou, i když odpovídají povolenému typu. Výchozí hodnota je automatická odpověď „mimo kancelář“.

Prázdný seznam neznamená „nepovolit nic“. Prázdné allowedPrefixes nebo ignoredClasses se chová jako výchozí seznam. Když chcete zpracovávat úplně všechno, vypněte filtr přes enabled: false.

items[].mapping – co se uloží do proměnných

Klíč je název proměnné procesu, hodnota je cesta do e-mailu, nebo objekt { "value": …, "option": …, "isConstant": … }.

Cesta

Význam

from.emailAddress.address

odesílatel

subject

předmět

body.content

tělo e-mailu (HTML)

toRecipients

příjemci

attachmentErrors

zvláštní klíč – seznam chyb u příloh jako text ve formátu JSON

U údajů, které v e-mailu nemusí být vždy, používejte "option": "optional". Chybějící údaj se pak uloží jako prázdná hodnota a zpracování e-mailu kvůli němu neselže.
"sender": { "value": "from.emailAddress.address", "option": "optional" }

items[].headerMapping – hlavičky do proměnných (jen 5.19)

Nepovinné. Klíč je název proměnné, hodnota internetMessageHeaders načte hlavičku se stejným názvem, jako má proměnná.

"headerMapping": {
    "X-Header-Company": "internetMessageHeaders"
}

Příklad naplní proměnnou X-Header-Company z hlavičky X-Header-Company.

Parametry messageClass a headerMapping můžete v JSON na 5.7 a 5.17 klidně nechat. Nic nerozbijí, jen se nepoužijí.

Řešení potíží

Cron V2 nejde aktivovat

Pravděpodobně je aktivní původní cron MsGraphCreateProcessesFromMailCron nebo některý jeho klon. Aktivní smí být jen jeden z nich. Nejdřív deaktivujte původní cron.

Cron běží, ale nezakládá případy

Najděte v logu souhrnný záznam posledního běhu. Když je chyba v nastavení schránky, souhrn napíše konkrétně co, například auth.clientSecret is missing for type 'secret' nebo folders.in.id is missing. Druhá možnost: cron zjistil, že je aktivní původní cron, přeskočil se a zapsal to do logu.

Nechodí souhrnný e-mail

Souhrnný e-mail chodí jen po běhu, ve kterém byla alespoň jedna chyba. Úspěšný běh žádný e-mail neposílá. Dál zkontrolujte, že runSummary.sendEmail není false a že je v runSummary.emailAddresses správná adresa, případně že má instance nastavené adresy pro chyby cronů.

Souhrnný e-mail chodí na adresu, kterou nikdo nesleduje

Když je runSummary.emailAddresses prázdné, souhrn jde na adresy pro chyby cronů z konfigurace instance. Doplňte vlastní adresy, nebo souhrn vypněte přes "sendEmail": false.

Z pozvánek a odpovědí „mimo kancelář“ vznikají případy

Na 5.19 zkontrolujte, že má schránka messageClass.enabled zapnuté. Na 5.7 a 5.17 filtr není, odfiltrujte tyto zprávy pravidlem v poštovní schránce.

Nastavení příloh nejde uložit

ignoreAllAttachments a ignoreSpecificAttachments nemůžou být zapnuté současně: buď se přeskakují všechny přílohy, nebo jen vybrané typy. Při zapnutém ignoreSpecificAttachments musí být v ignoredAttachmentTypes alespoň jedna přípona.

Z jednoho e-mailu vzniká při každém běhu nový chybný případ

Schránka má setEmailProcessedOnError vypnuté, takže e-mail se neúspěšným workflow zůstává ve vstupní složce. Zapněte ho, aby se takový e-mail po chybě přesunul do výstupní složky.

Cron běží pomalu

Nejčastější příčinou je zapnuté attachEmailAsPdf, protože se PDF generuje pro každý e-mail. Druhá je vysoká hodnota amountOfEmailByRun.

Frantisek Brych Updated by Frantisek Brych

MS Graph - konfirurace cronu

MS Graph - příprava schránky - Legacy

Contact

Team assistant (opens in a new tab)

Powered by HelpDocs (opens in a new tab)