Pripravujeme pre Vás novú dokumentáciu, aktuálny stav nájdete tu

SKRYPT CDESK DO PRZETWARZANIA

E-MAILI (WERSJA AZURE)

Przegląd

Ten projekt automatyzuje przetwarzanie e-maili w ramach systemu CDESK. Obejmuje pobieranie nowych e-maili, identyfikowanie konkretnych akcji na podstawie treści e-maili oraz wykonywanie operacji, takich jak tworzenie dyskusji lub wniosków na podstawie uzyskanych informacji.

Skrypt został utworzony jako Azure Function App, jako alternatywa dla lokalnej, skonteneryzowanej w Dockerze wersji. Ponieważ działa w chmurze, logów aplikacji nie można wyświetlić za pomocą aplikacji lokalnej; zamiast tego są dostępne w usłudze Azure. Ten podręcznik zawiera 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.

Ten skrypt służy jako przykład przetwarzania danych w CDESK oraz automatyzacji tworzenia obiektów – w tym przypadku przetwarzania e-maili i tworzenia wniosków wraz z dyskusją.

Pliki

function_app.py

Główny punkt wejścia aplikacji. Skrypt uruchamia się co 5 minut, inicjuje połączenie z CDESK, pobiera nowe e-maile, przetwarza każdy e-mail zgodnie z kodem akcji, a po zakończeniu się wylogowuje.

ConnectionController.py

Obsługuje połączenie z API CDESK. Zarządza procesem logowania, utrzymuje sesję i wykonuje żądania GET i POST z niezbędnym uwierzytelnianiem.

ObjectController.py

Zawiera metody do interakcji z obiektami CDESK, takimi jak e-maile i wnioski. Obejmuje funkcje pobierania e-maili, ich przetwarzania oraz tworzenia dyskusji lub wniosków na podstawie treści e-maila.

LoggerController.yml

Służy do drukowania komunikatów logów do logów aplikacji funkcyjnej.

docker-compose.yml

Definiuje środowisko Docker do uruchomienia skryptu przetwarzania e-maili. Ustawia niezbędne zmienne środowiskowe do połączenia z CDESK i określa konfiguracje sieciowe.

last_email_id.txt

Dokument zawierający ID ostatniego przetworzonego e-maila.

Ustawienia i konfiguracja

Tworzenie e-maili

Najpierw musisz mieć co najmniej jeden e-mail w sekcji Przetwarzanie wiadomości -> Przetwarzanie wiadomości z określoną kombinacją treści.

 

Ten e-mail 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 treści e-maila i będzie reprezentować numer paczki, który przetworzy skrypt. Ponadto e-mail może zawierać słowa o miejscu docelowym (np. Miejsce docelowe: Testovacia 11, Bratislava), które zostaną dodane do nowo utworzonego wniosku jako pole własne.

Przykład e-maila:

Temat: Wiadomość o wysyłce NK123455

Treść:  Wiadomość o wysyłce NK123455. Miejsce docelowe: Nová 34, Bratislava. Użyte wyłącznie do celów testowych.

Pole użytkownika dla wniosku

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: 

  1. Utwórz nowy testowy wniosek lub otwórz dowolny istniejący wniosek. 
  2. W dolnej części strony wniosku kliknij przycisk Dodaj pola użytkownika.
  3. W prawym górnym rogu kliknij przycisk Proste pole użytkownika.
  4. Wypełnij dane według własnych preferencji i kliknij Zapisz.

Wymagane dane z CDESK

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):

  • CDESK_LOGIN – Twoja nazwa logowania do konta CDESK
  • CDESK_PASSWORD – Twoje hasło do konta CDESK
  • CDESK_SERVER – Twój serwer CDESK (na przykład cdeskportal.eu)
  • COMPANY_ID – ID firmy, pod którą będą tworzone wnioski
  • STATUS – status utworzonego wniosku (domyślnie ustawiony na 10 – „Przyjęte“)
  • SOLVER_ID – ID użytkownika, który zostanie przydzielony jako rozwiązujący wniosek. ID rozwiązującego znajdziesz w profilu użytkownika (prawy górny róg w CDESK -> Mój profil).
  • SLA_ID – ID rekordu Service Level Agreement (SLA). ID SLA znajdziesz w menu lub kafelkach SLA/SLO -> Lista SLA.
  • CUSTOM_PROPERTY_ID – ID pola użytkownika

    Znajdziesz je w menu / kafelkach -> Baza danych konfiguracji (lub CMDB) -> Pola zdefiniowane przez użytkownika -> Pola użytkownika.

    Następnie wyszukaj żądane pole użytkownika, otwórz je i w adresie URL znajdź jego ID.

Następnie wyszukaj żądane pole użytkownika, otwórz je i w adresie URL znajdź jego ID.

  • CUSTOM_PROPERTY_BASEPROPERTY_ID – baseproperty ID pola użytkownika

Znajdziesz je w menu / kafelkach -> Baza danych konfiguracji (lub CMDB) -> Pola zdefiniowane przez użytkownika -> Właściwości podstawowe

  • CUSTOM_PROPERTY_NAME – Nazwa pola użytkownika (w tym przykładzie domyślnie Target place)
  • TEST – dezaktywuje kontrolę certyfikatu przy wysyłaniu żądań, zmieniać tylko podczas lokalnego testowania ze względów bezpieczeństwa (domyślnie False)
  • SCRIPT_NAME – Nazwa skryptu, która będzie używana w logach

Ponadto, do wizualizacji logów generowanych przez ten skrypt konieczne jest ustawienie mapowania woluminu do katalogu na lokalnym komputerze lub serwerze. Tym katalogiem może być /logs w aplikacji do logów, który został specjalnie utworzony do tego celu.

Kroki konfiguracji
Krok 1: Instalacja wymaganych rozszerzeń w Visual Studio Code
  1. Otwórz Visual Studio Code. Przejdź do widoku Rozszerzenia, klikając ikonę Rozszerzenia na pasku Activity Bar z boku lub naciskając Ctrl+Shift+X. 

Wyszukaj i zainstaluj następujące rozszerzenia:

  • Azure Functions od Microsoft
  • Python od Microsoft
  • Azure Account od Microsoft

Krok 2: Logowanie do Azure i utworzenie „remote function app resource“
  1. Przejdź do zakładki Azure (Ctrl+Shift+A).
  2. Kliknij prawym przyciskiem na Function App -> Create Function App in Azure.
    1. Postępuj zgodnie z monitami, które poproszą Cię o utworzenie Function App:

    Nazwa: dowolna nazwa zasobu, na przykład my-email-processing-script

    Runtime stack: Jeśli to możliwe, wybierz nowszą wersję Pythona, na przykład Python 3.11.

    Lokalizacja zasobów: Wybierz lokalizację, która jest geograficznie blisko Ciebie.

Krok 3: Przygotowanie i wdrożenie lokalnego skryptu
  1. W karcie rozszerzenia Azure w VS Code kliknij w przestrzeni roboczej ikonę błyskawicy, aby utworzyć aplikację funkcyjną.
  2. Wybierz interpreter Pythona (np. 3.11) i anuluj dalszy wybór, gdy zostaniesz poproszony o wybór szablonu funkcji (naciśnij Esc).
  3. Wdróż aplikację za pomocą ikony chmury.
Krok 4: Ustawienie zmiennych środowiskowych w Azure Portal
  1. Przejdź na https://portal.azure.com/ i znajdź nowo utworzoną aplikację funkcyjną.
  2. W aplikacji funkcji przejdź do Ustawienia -> Zmienne środowiskowe i dodaj wszystkie zmienne środowiskowe wspomniane wcześniej w tym przewodniku.
  3. Twój skrypt jest gotowy do uruchomienia. Jeśli chcesz wyświetlić logi, przejdź na górze do karty Overview, gdzie w sekcji Essentials znajdziesz wyzwalacz swojej aplikacji (domyślnie nazwany timer_trigger), i kliknij Invocations and more.

Procedura pracy

Uwaga: Cron – Cały ten skrypt, jeśli jest skonteneryzowany w Dockerze, jest ustawiony jako cron, który uruchamia się co 5 minut.

  1. Inicjalizacja: Skrypt łączy się z CDESK za pomocą ConnectionController.
  2. Pobieranie e-maili: Pobiera nowe e-maile za pomocą ObjectController.
  3. Przetwarzanie e-maili: Tworzy wnioski lub dyskusje na podstawie treści e-maila.
  4. Zakończenie: Skrypt kończy sesję z CDESK.

Monitorowanie i logi

Podczas działania skrypt generuje logi, które można śledzić w docker logs. Logi te zawierają komunikaty inicjalizacyjne, aktualizacje postępu oraz ewentualne błędy.