Ten projekt automatyzuje przetwarzanie e-maili w systemie CDESK. Zapewnia pobieranie nowych e-maili, identyfikację konkretnych akcji na podstawie treści e-maili oraz wykonywanie operacji, takich jak tworzenie dyskusji lub wniosków na podstawie wyekstrahowanych informacji.
Skrypt został utworzony jako aplikacja Azure Function App, która stanowi alternatywę dla wersji lokalnej wykorzystującej Docker. Ponieważ działa w chmurze, logów aplikacji nie można przeglądać lokalnie, ale są dostępne w usłudze Azure. W tym podręczniku przedstawiono instrukcję krok po kroku dotyczącą tworzenia Function App za pomocą Visual Studio Code. W razie potrzeby, jeśli chodzi o inne metody, zapoznaj się z oficjalną dokumentacją firmy Microsoft.
Skrypt służy jako przykład przetwarzania danych w CDESK oraz automatyzacji procesu tworzenia obiektów. W tym przypadku chodzi o przetwarzanie e-maili i tworzenie wniosków wraz z dyskusją.
function_app.py
Główny punkt wejścia aplikacji. Uruchamia się co 5 minut, inicjuje połączenie z systemem CDESK, pobiera nowe e-maile, przetwarza je zgodnie z kodami akcji i zapewnia zakończenie sesji po ukończeniu.
ConnectionController.py
Zarządza logiką połączenia z API CDESK. Obsługuje proces logowania, utrzymuje sesję i wykonuje żądania GET i POST z niezbędnym uwierzytelnianiem.
ObjectController.py
Zawiera metody do interakcji z obiektami w CDESK, takimi jak e-maile i wnioski. Obejmuje funkcjonalność pobierania e-maili, przetwarzania poszczególnych e-maili oraz tworzenia dyskusji lub wniosków na podstawie treści e-maili.
LoggerController.yml
Służy do drukowania komunikatów logowania do logów aplikacji.
docker-compose.yml
Definiuje środowisko Docker do uruchomienia skryptu przetwarzania e-maili. Ustawia niezbędne zmienne środowiskowe do połączenia z systemem CDESK i określa konfiguracje sieciowe.
last_email_id.txt
Dokument z ID ostatniego przetworzonego e-maila.
Najpierw powinieneś mieć co najmniej 1 e-mail w sekcji Przetwarzanie wiadomości -> Przetwarzanie wiadomości z określoną treścią.
Ten e-mail (lub e-maile) powinien zawierać kombinację wielkich liter i cyfr o długości od 6 do 8 znaków. Ta kombinacja może być podana w temacie lub w treści e-maila i będzie reprezentować numer paczki, który przetworzy skrypt. E-mail może również zawierać nazwę miejsca docelowego (Miejsce docelowe: Testovacia ulica 11, Bratislava), które zostanie dodane do nowo utworzonego wniosku jako pole użytkownika.
Przykład tematu i treści e-maila:
Temat: Paczka ABC12345 gotowa do dostarczenia
Treść:
Szanowny Kliencie,
paczka ABC12345 jest gotowa do dostarczenia do miejsca docelowego: Testovacia ulica 11, Bratislava. Dziękujemy za korzystanie z naszych usług.
Najpierw będziesz potrzebować pola użytkownika, które będzie używane przez skrypt i które zostanie dodane do nowo utworzonego wniosku podczas przetwarzania e-maila. Aby utworzyć nowe pole, możesz postępować zgodnie z poniższymi krokami:



Po utworzeniu pola użytkownika konieczne będzie ustawienie w skrypcie następujących danych z CDESK (jako zmiennych środowiskowych w pliku docker-compose.yml):




Następnie znajdź żądane pole użytkownika, otwórz je i wyszukaj ID w adresie URL.
Znajdziesz je w menu / kafelkach -> Baza danych konfiguracji (lub CMDB) -> Pola zdefiniowane przez użytkownika -> Właściwości podstawowe
Do wizualizacji logów utworzonych przez ten skrypt powinno być ustawione mapowanie katalogu na lokalnym komputerze/serwerze. Tym katalogiem może być na przykład katalog /logs w aplikacji logs, specjalnie utworzony do tego celu.
W pliku docker-compose.yml zmień wartości wszystkich wymienionych zmiennych tak, aby odpowiadały danym w CDESK.
Uruchom polecenie docker-compose up –build –force-recreate, aby uruchomić kontener utworzony z odpowiedniego obrazu.
W kontenerze docker zobaczysz logi działającego skryptu, które pojawiają się co 5 minut (domyślne ustawienie crona w Dockerfile).
Uwaga: Cron – Cały ten skrypt, jeśli jest skonteneryzowany w Dockerze, jest ustawiony jako cron, który uruchamia się co 5 minut.
Inicjalizacja: Skrypt rozpoczyna od inicjalizacji połączenia z CDESK za pomocą ConnectionController.
Pobieranie e-maili: Następnie pobiera najnowsze e-maile z CDESK za pomocą ObjectController.
Przetwarzanie e-maili: Każdy e-mail jest przetwarzany na podstawie jego statusu (nieprzetworzone). Do akcji należy tworzenie dyskusji lub wniosków w CDESK zgodnie z treścią e-maila.
Czyszczenie: Na koniec skrypt zapewnia zamknięcie sesji z CDESK.
Podczas wykonywania skrypt zapisuje logi do logów docker, w tym komunikaty o inicjalizacji, bieżące aktualizacje oraz wszelkie błędy, które wystąpią podczas procesu. Logi te można monitorować w celu śledzenia postępu skryptu i rozwiązywania problemów.