MsGraphCheckUnprocessedMailsCron - Kontrola nezpracovaných mailů
Cron MsGraphCheckUnprocessedMailsCron je hlídací (kontrolní) úloha, která hlídá, jestli se e-maily zpracované přes integraci Microsoft Graph opravdu proměnily v případy v TAS. Když najde e-mail, ke kterému žádný případ nevznikl, upozorní na to určené administrátory e-mailem. Slouží tedy jako pojistka proti tichým výpadkům zpracování pošty.
MsGraphCreateProcessesFromMailCron). Zde jde pouze o kontrolu, že vše, co se má zpracovat, se opravdu zpracovalo.K čemu to slouží (v kostce)
Zpracování příchozí pošty v TAS funguje zjednodušeně takto:
- Do sledované schránky přijde e-mail.
- TAS ho podle nastavení zpracuje a založí z něj případ.
- Zpracovaný e-mail se přesune do složky „out" (odbavené).
Cron MsGraphCheckUnprocessedMailsCron se pak dívá do složky „out" a ověřuje, že ke každému e-mailu v ní existuje odpovídající případ. Pokud e-mail ve složce leží, ale případ k němu neexistuje, znamená to problém (chyba zpracování, špatné nastavení mapování apod.) — a cron pošle report.
Jak cron pracuje
- Načte konfiguraci z tabulky cronů v databázi.
- Připojí se k schránce přes Microsoft Graph a stáhne e-maily ze složky „out" za zadané období.
- Vytáhne z e-mailů hodnoty podle nastaveného mapování (odesílatel, předmět, tělo…).
- Porovná tyto hodnoty proti proměnným existujících případů dané šablony.
- Najde nespárované e-maily — tedy ty, ke kterým žádný případ neexistuje.
- Pošle HTML report na zadané adresy, pokud nějaké nespárované e-maily našel.
- Zaloguje průběh do aplikačních logů.
Vlastnost | Hodnota |
Plánování | Každou hodinu ( |
Timeout | 600 sekund (10 minut) na jeden běh |
Zpracování | Každá schránka zvlášť — chyba jedné neblokuje ostatní |
Výchozí stav | Neaktivní — je nutné ho ručně zapnout v administraci |
Konfigurace
Konfigurace se ukládá jako JSON do parametrů cronu v administraci. V poli items může být více schránek — každá se zpracovává nezávisle.
Ukázka reálné konfigurace (citlivé údaje jsou zkrácené):
{
"items": [
{
"numberOfDays": "10",
"reportAddresses": [
"frantisek.brych@neit.group"
],
"auth": {
"emailAddress": "vytezovana_adresa@teamassistant.app",
"tenantId": "103bsdf-a80a-...",
"clientId": "sdfsdsdfds-140249...",
"clientSecret": "Msdfsdfsdfsdf-...",
"type": "secret"
},
"folders": {
"out": {
"id": "AAMkAD...AAA="
}
},
"process": {
"user_id": "1",
"tproc_id": "1786",
"header_id": "2043"
},
"mapping": {
"_mail": {
"value": "mail",
"isConstant": true
},
"mailBody": "body.content",
"mailSubject": {
"value": "subject",
"option": "optional"
}
}
}
]
}clientSecret je heslo aplikace — nikdy ho nesdílej, neposílej v e-mailu ani nedávej do verzovacího systému. Do reportů a při hlášení chyb ho vždy začerni.Parametry jedné schránky
Parametr | Povinný | Popis |
| Ano | Kolik dní zpět se kontrolují e-maily i případy. Např. |
| Ano | Seznam e-mailových adres, kam se posílá report o nespárovaných e-mailech. Musí být alespoň jedna. Při více adresách je první v poli „To", ostatní jako skrytá kopie. |
| Ano | E-mailová adresa sledované schránky v Microsoft 365 (tzv. vytěžovaná adresa). |
| Ano | ID tenanta v Azure AD (Microsoft Entra). Najdeš v Azure Portal → Microsoft Entra ID → Properties. |
| Ano | Application (client) ID registrované aplikace v Azure Portal. |
| Ano (u | Hodnota klientského tajemství (secret) z registrace aplikace. Citlivý údaj. |
| Ano | Způsob přihlášení. Pro automatický běh cronu použij |
| Ano | ID složky „out" v Microsoft Graph, kam se přesouvají zpracované e-maily. Právě tuto složku cron kontroluje. |
| Ano | ID uživatele TAS, pod kterým se případy zakládají. |
| Ano | ID šablony procesu. Cron páruje e-maily proti případům založeným z této šablony. |
| Ano | ID hlavičky (skupiny) procesu — dále zpřesňuje, které případy se do porovnání zahrnou. |
| Ano | Určuje, které hodnoty z e-mailu se vytáhnou a proti kterým proměnným případu se porovnávají. Viz níže. |
numberOfDays, tproc_id, header_id, user_id) lze v konfiguraci zapsat i jako text v uvozovkách (např. "10", "1786") — jak je vidět v ukázce z testu. TAS si je přečte správně.Mapování polí e-mailu
V objektu mapping se říká: „vezmi tuto hodnotu z e-mailu a porovnej ji proti proměnné případu se stejným názvem". Klíč vlevo je název proměnné případu, hodnota vpravo určuje, odkud z e-mailu se údaj bere.
Jednoduché mapování — název proměnné → pole e-mailu:
"mailBody": "body.content"
Do proměnné mailBody se vezme obsah těla e-mailu.
Rozšířené mapování — s doplňkovými volbami:
"mailSubject": {
"value": "subject",
"option": "optional"
}Do proměnné mailSubject se vezme předmět e-mailu, přičemž option: "optional" znamená, že pole je nepovinné (může chybět).
Konstanta — pevná hodnota pro každý e-mail:
"_mail": {
"value": "mail",
"isConstant": true
}Při isConstant: true se do proměnné _mail nevkládá hodnota z e-mailu, ale pevný řetězec "mail". Slouží k odlišení nebo označení záznamů.
Nejčastější pole e-mailu k mapování:
from— adresa odesílatele,subject— předmět,body.content— text těla,toRecipients/ccRecipients— příjemci / kopie.
Předpoklady na straně Azure
Cron čte poštu přes Microsoft Graph API. Než ho zapneš, musí být připravené:
- Registrace aplikace v Azure Portal — vytvořená App Registration s oprávněním
Mail.Read(případněMail.ReadWrite), typ Application, nikoli Delegated. - Klientský secret — vygenerovaný, pokud používáš
type: "secret". Poznamenej si Application ID a Tenant ID. - Přístup ke schránce — servisní aplikace musí mít oprávnění ke sledované schránce (typicky přes Exchange Admin Center).
- Síť — server TAS musí mít odchozí HTTPS přístup na
https://graph.microsoft.com(TCP 443).
Zapnutí a monitoring
Cron je po nasazení neaktivní. Zapíná se v administraci: Administrace → Crony, vyber „Check unprocessed MS Graph mails" a aktivuj ho.
Ve stejné obrazovce sleduješ:
- Stav — Aktivní / Neaktivní,
- Poslední běh — čas posledního spuštění,
- Další běh — plánovaný čas,
- Poslední chyba — „Y" značí chybu v posledním běhu, „N" úspěch.
Průběh se také zapisuje do aplikačních logů. Ukázky:
Úspěšný běh (nic k řešení)
INFO: No unprocessed MS Graph mails found
mailCount: 125
processCount: 125
Nalezené nespárované e-maily (odešle se report)
WARNING: Found 3 unprocessed MS Graph mails
failedMails: [
{ subject: "Objednávka #12345" },
{ subject: "Faktura-2024-06" }
]
Řešení nejčastějších problémů
Příznak | Pravděpodobná příčina a řešení |
„No report addresses defined…" | Pole |
Chyba přihlášení / „Unknown credentials type" | Špatná hodnota |
Report hlásí všechny e-maily jako nezpracované | Nejčastěji špatné |
„Folder Not Found" / neplatné | ID složky je špatné nebo složka byla smazána. Správné ID zjistíš přes Microsoft Graph Explorer: |
Timeout (běh delší než 10 minut) | Schránka má příliš mnoho e-mailů nebo je pomalá síť. Sniž |
Cron neběží / chybí záznamy v logu | Cron je nejspíš neaktivní. Zkontroluj stav v administraci a ověř síťový přístup na |
Updated
by Frantisek Brych