Možnosti vytváření úkolů v Mattermost
Tento dokument popisuje funkci, která poskytuje potřebná data pro vytváření úkolů v systému Mattermost integrovaném s EspoCRM. Slouží jako pomocný mechanismus pro získání seznamů uživatelů, projektů a priorit úkolů, které jsou potřebné pro správné vytvoření nového úkolu z Mattermostu.
Popis funkce
Funkce MattermostCreateTaskOptions je speciální vstupní bod (entry point) v EspoCRM, který je navržen pro komunikaci s integrací Mattermost. Jeho hlavním účelem je poskytnout klientovi (Mattermost) všechny potřebné informace pro vytvoření nového úkolu v EspoCRM. To zahrnuje:
- Seznam aktivních uživatelů - Umožňuje přiřadit úkol konkrétnímu uživateli.
- Seznam aktivních projektů - Umožňuje přiřadit úkol k existujícímu projektu (pokud je modul Projektů v EspoCRM aktivní).
- Seznam priorit úkolů - Poskytuje dostupné možnosti priorit pro nový úkol, přeložené do aktuálního jazyka uživatele.
Jak to funguje
Když uživatel v Mattermostu iniciuje vytvoření nového úkolu, integrace pošle požadavek na tento vstupní bod. Systém nejprve zkontroluje, zda má uživatel potřebná oprávnění (čtení uživatelů, projektů a vytváření úkolů). Pokud ano, připraví a vrátí požadovaná data ve formátu JSON.
Důležitou funkcí je také podpora lokalizace - pokud je v URL parametru locale, systém se pokusí najít odpovídající jazyk a vrátit překlady (např. názvy priorit) v požadovaném jazyce.
Závislosti
Tato funkce spoléhá na několik klíčových komponent EspoCRM:
- Systém oprávnění (
Acl) pro kontrolu přístupových práv - Správce entit (
EntityManager) pro práci s databází - Jazykový systém (
Language) pro překlady - Metadata systému (
Metadata) pro konfiguraci
Technické informace
Třída MattermostCreateTaskOptions
Namespace: Espo\Modules\Mattermost\EntryPoints
Implementuje rozhraní EntryPoint.
Konstruktor
public function __construct(
private readonly Acl $acl,
private readonly EntityManager $entityManager,
private readonly Language $language,
private readonly Metadata $metadata,
) {}
Metoda run
Hlavní metoda, která zpracovává požadavek:
- Kontrola oprávnění pomocí
Acl:
if (
!$this->acl->checkScope('User', Acl\Table::ACTION_READ)
|| !$this->acl->checkScope('Project', Acl\Table::ACTION_READ)
|| !$this->acl->checkScope('Task', Acl\Table::ACTION_CREATE)
) {
throw new ForbiddenSilent('Not enough permissions to get task create data.');
}
- Lokalizace:
$locale = $request->getQueryParam('locale');
if ($locale) {
// Logika pro nalezení a nastavení jazyka
}
-
Získání dat:
-
Seznam uživatelů (aktivní, typ regular/admin, seřazeno podle jména)
-
Seznam projektů (pokud existuje entita Project)
-
Seznam priorit úkolů s překlady
-
Vrácení odpovědi jako JSON:
$response
->setHeader('Content-Type', 'application/json')
->writeBody(
Json::encode([
'userList' => $userList->getValueMapList(),
'projectList' => $projectList->getValueMapList(),
'taskPriorityList' => $taskPriorityList,
])
);
Výjimky
ForbiddenSilent- Pokud uživatel nemá potřebná oprávněníJsonException- Pokud dojde k chybě při kódování JSON
Použité konstanty
Z Acl\Table:
ACTION_READACTION_CREATE