# Élő órák

> Zoom, Google Meet és Google Classroom integráció a kurzusokhoz.

## Zoom-integráció

A **Zoom-integráció** addonnal az oktatók és az adminisztrátorok élő órákat és megbeszéléseket tarthatnak a Zoomon keresztül. A Zoom ingyenes és fizetett fiókja is használható, a Zoom fizetett funkcióit viszont külön kell megvásárolni.

Bekapcsolás: **Tutor LMS Pro → Addons**, **Zoom-integráció** kapcsoló. Csak ezután jelenik meg a **Zoom** menüpont a háttérfelületen.

Minden oktatónak a saját Zoom-fiókját kell összekötnie. Az adminisztrátor fiókja nem használható közösen, mert így minden oktató önállóan kezelheti a saját megbeszéléseit (átütemezés, lemondás).

### Zoom-alkalmazás létrehozása

1. Hozz létre Zoom-fiókot, ha még nincs.
2. A Zoom alkalmazásboltjának fejlesztői felületén jelentkezz be a Zoom-fiókoddal.
3. Görgess a **Server-to-Server OAuth** alkalmazástípushoz, és kattints a létrehozásra.
4. Add meg az alkalmazás nevét, és hozd létre.
5. Az **Information** részben add meg a cég nevét és a fejlesztői kapcsolattartó adatait (név, e-mail-cím).
6. A **Scopes** részben add hozzá a szükséges jogosultságokat. A Meeting, Webinar, Recording és User területekhez érdemes felvenni a következőket (ha nem találod őket, használd a keresőmezőt):

Meeting:

```text
meeting:read:local_recording_token:admin
meeting:read:summary:admin
meeting:read:list_summaries:admin
meeting:read:past_meeting:admin
meeting:read:meeting:admin
meeting:read:list_past_participants:admin
meeting:read:list_upcoming_meetings:admin
meeting:read:list_past_instances:admin
meeting:read:list_meetings:admin
meeting:read:invitation:admin
meeting:read:alert:admin
meeting:read:list_registrants:admin
meeting:read:livestream:admin
meeting:read:participant:admin
meeting:write:registrant:admin
meeting:update:meeting:admin
meeting:delete:meeting:admin
meeting:write:meeting:admin
meeting:write:invite_links:admin
meeting:read:list_summaries:master
meeting:read:summary:master
```

Recording:

```text
archiving:read:archived_file_statistics:admin
archiving:read:list_archived_files:admin
```

User:

```text
user:read:list_schedulers:admin
user:read:summary:admin
user:read:list_collaboration_devices:admin
user:read:list_users:admin
user:read:token:admin
user:read:user:admin
user:read:email:admin
user:read:list_permissions:admin
user:read:list_assistants:admin
user:read:list_assistants:master
user:read:list_permissions:master
user:read:summary:master
user:read:user:master
user:read:list_users:master
user:read:token:master
user:read:list_schedulers:master
user:read:zak:admin
```

Webinar:

```text
webinar:read:list_past_instances:admin
webinar:read:list_webinars:admin
webinar:read:list_panelists:admin
webinar:read:list_absentees:admin
webinar:read:participant:admin
webinar:read:alert:admin
webinar:update:webinar:admin
webinar:delete:webinar:admin
```

7. Az **Activation** részben aktiváld az alkalmazást.
8. Az **App Credentials** résznél másold ki a fiókazonosítót (Account ID), a Client ID-t és a Client Secretet.

### Összekötés a Tutor LMS-sel

![A Zoom API beállítása](./kepek/zoom-api.webp)

*A Zoom API beállítása* (https://minta-bolt.hu/wp-admin/admin.php?page=tutor_zoom&sub_page=set_api)

1. A háttérfelületen menj a **Tutor LMS Pro → Zoom** oldalra, az **API beállítása** fülre.
2. Írd be a **Fiók ID**, a **Client ID** és a **Kliens titkos kulcsa** mezőbe a Zoomból kimásolt adatokat.
3. Kattints a **Mentés és kapcsolat ellenőrzése** gombra.

Az oktatók ugyanezt a frontend irányítópultjukon is megtehetik (**Zoom → Set API**). Ha ott hibát kapnak, a WordPress **Beállítások → Közvetlen hivatkozások** oldalán állítsd a szerkezetet „Bejegyzés neve” értékre.

Ha a régi, JWT alapú Zoom-alkalmazásról térsz át, az új Server-to-Server OAuth alkalmazás adatait ugyanitt kell megadnod.

**Átállás JWT-alkalmazásról:** a Zoom megszüntette a JWT alkalmazástípust, ezért a régi összekötést újra kell építeni.

1. Hozz létre egy Server-to-Server OAuth alkalmazást a Zoom fejlesztői felületén (ha már van JWT-alkalmazásod, a létrehozó oldal jelzi ezt, de az újat ettől függetlenül létrehozhatod).
2. Add meg az alkalmazás nevét, majd az **Information** résznél a cég nevét és a fejlesztői kapcsolattartó nevét és e-mail-címét.
3. A **Scopes** résznél add meg a szükséges jogosultságokat. Ajánlott a Meeting, Webinar, Recording és User jogosultságok mindegyikét kijelölni.
4. Az **Activation** résznél aktiváld az alkalmazást.
5. Az **App Credentials** résznél másold ki az Account ID, a Client ID és a Client Secret értékét.
6. A Tutor LMS háttérfelületén a **Tutor LMS Pro → Zoom** oldal **API beállítása** fülén írd be a három adatot (**Fiók ID**, **Client ID**, **Kliens titkos kulcsa**), majd kattints a **Mentés és kapcsolat ellenőrzése** gombra.
7. Próbáld ki az összekötést: hozz létre egy Zoom-megbeszélést, és ellenőrizd, hogy létrejön.

Az összekötés után próbáld ki, hogy a megbeszélés létrehozása működik-e.

### A Zoom háttérfelülete

A **Zoom** menüben az **API beállítása** mellett az összekötés után további fülek jelennek meg:

- **All Meetings (összes megbeszélés):** a jövőbeli, ütemezett Zoom-megbeszélések listája. Kereshetsz, szűrhetsz kurzus, dátum vagy állapot szerint, szerkesztheted és törölheted a tételeket.
- **Expired Meetings (lejárt megbeszélések):** a már megtörtént megbeszélések, ugyanazokkal a lehetőségekkel. Ha egy lejárt megbeszélést újra ütemeznél, szerkeszd, és állíts be új dátumot és időpontot. Ekkor az visszakerül az összes megbeszélés közé.
- **Beállítások:** a megbeszélések viselkedése.

| Beállítás | Mit csinál |
|---|---|
| Csatlakozás a házigazda előtt | A hallgatók az oktató előtt is beléphetnek. Csak ütemezett vagy ismétlődő megbeszélésnél érvényes. |
| Házigazda videója | A házigazda videója a belépéskor elindul. |
| Résztvevők videója | A résztvevők videója a belépéskor bekapcsolt állapotban indul. |
| Résztvevők némítása | A résztvevők hangja belépéskor ki van némítva. |
| Bejelentkezés megkövetelése | Csak a Zoomba bejelentkezett felhasználók léphetnek be. |
| Felvétel beállítása | Milyen felvételhozzáférést kapjanak a hallgatók: nincs felvétel, helyi meghajtó vagy Zoom-felhő. |

### Zoom-megbeszélés létrehozása leckeként

1. Nyiss meg egy kurzust szerkesztésre (vagy hozz létre újat).
2. Görgess a **Zoom Meeting** részhez, és kattints a megbeszélés létrehozására szolgáló gombra.
3. Töltsd ki az űrlapot, majd hozd létre a megbeszélést. Az megjelenik a **Zoom → All Meetings** listán is.

| Mező | Mit csinál |
|---|---|
| Meeting Name | A megbeszélés neve. |
| Meeting Summary | Rövid leírás: témák, a megbeszélés típusa. |
| Meeting Date | A megbeszélés dátuma és időpontja. |
| Meeting Duration | A megbeszélés hossza. Ingyenes Zoom-fióknál 40 percnél hosszabb megbeszélés nem tartható. |
| Time Zone | A megbeszélés időzónája. |
| Auto Recording | Helyi (a felhasználó gépén), felhős (Zoom-felhő) vagy nincs felvétel. Böngészőn keresztül belépő hallgatók nem tudnak helyben menteni, csak a Zoom alkalmazásból. |
| Meeting Password | A megbeszélés jelszava, amellyel csak a megfelelő jogosultságú hallgatók férnek hozzá. |
| Meetings Host | A házigazda neve. |

Ezen kívül a kurzus **Additional** lapján is ütemezhetsz élő órákat a kurzushoz. A hallgatók a lecke oldalán látják a közelgő megbeszélés adatait.

## Google Meet

A **Google Meet** addonnal Google Meet találkozókat tarthatsz a kurzusokhoz vagy egyes leckékhez, és meghívót küldhetsz a beiratkozott hallgatóknak. Bekapcsolás: **Tutor LMS Pro → Addons**, **Google Meet** kapcsoló. Utána megjelenik egy új **Google Meet** menüpont.

### Google-hozzáférés létrehozása

A Google Developer Console felületén:

1. Válassz projektet (vagy hozz létre újat névvel, szervezettel).
2. Az irányítópulton kattints az API-k és szolgáltatások engedélyezésére, keresd meg a **Google Calendar** szolgáltatást, és engedélyezd a projekthez.
3. A Google Calendar API irányítópultján kattints a hitelesítő adatok létrehozására.
4. Adattípusnak válaszd a felhasználói adatokat, és lépj tovább.
5. Az OAuth-hozzájárulási képernyőn add meg az alkalmazás nevét, a támogatási e-mail-címet és a fejlesztői kapcsolattartó e-mail-címét.
6. Hozz létre OAuth-kliensazonosítót, az alkalmazás típusa legyen webalkalmazás.
7. A jogosult átirányítási URI-hoz menj vissza a WordPress háttérfelületére: a **Google Meet → Set API** fülön találsz másolható hivatkozást. Másold be a Google Console megfelelő mezőjébe, és mentsd.
8. A hitelesítő adatok oldalán töltsd le a JSON-fájlt a letöltés ikonnal.
9. Az OAuth-hozzájárulási képernyőn tedd közzé az alkalmazást. Ez fontos lépés, anélkül hibát kaphatsz.

### Összekötés a Google Meettel

1. A háttérfelületen menj a **Google Meet** oldalra, és töltsd fel a JSON-fájlt.
2. A feltöltés után kattints a Google hozzájárulási képernyőjére továbbvezető gombra.
3. Add meg az e-mail-címet, és engedélyezd a kért jogosultságokat. Ezzel az összekötés kész.

Ha másik JSON-fájlt szeretnél használni, a hitelesítő adatok visszaállítása gombbal újrakezdheted. A **Google Meet → Set API** oldalon az éppen összekötött fiók érvénytelenítésére is van gomb.

### Találkozó létrehozása

Kétféleképpen hozhatsz létre találkozót: a kurzusszerkesztőben egy témakör alatt leckeként, vagy a kurzusszerkesztő új Google Meet részében. A Google Meet létrehozására szolgáló gombra kattintva egy felugró ablakban állíthatod be a részleteket. Az aktív találkozók listáját a **Google Meet → Active Meetings** oldalon találod, ott szerkesztheted is őket.

### Google Meet beállítások

A **Google Meet → Beállítások** fülön:

| Beállítás | Mit csinál |
|---|---|
| Alapértelmezett időzóna | A találkozók alapértelmezett időzónája, találkozónként módosítható. |
| Alapértelmezett emlékeztető ideje | Mennyivel a találkozó előtt kapjanak a résztvevők e-mail-emlékeztetőt. |
| Alapértelmezett eseményállapot | A Google Meet esemény alapértelmezett állapota. |
| Frissítések küldése | Hogyan értesítsen a rendszer az új esemény létrehozásáról. Egyes e-mailek így is kimehetnek. |
| Átlátszóság | Alapértelmezetten foglalja-e a naptár idejét az esemény. |
| Láthatóság | Az esemény alapértelmezett láthatósága. |

## Google Classroom-integráció

A **Google Classroom-integráció** addonnal Google Classroom osztályokat importálhatsz kurzusként a Tutor LMS-be, beleértve a közleményeket, a feladatokat, a kvízeket és a megosztott anyagokat. A Google Classroom hallgatóit is szinkronizálhatod, és a már beiratkozott Tutor LMS-hallgatóknak is küldhetsz Classroom-meghívót.

### Google-hozzáférés létrehozása

A Google Developer Console felületén:

1. Válassz projektet, vagy hozz létre újat.
2. Az irányítópulton engedélyezd az API-kat és szolgáltatásokat, és keresd meg a **Google Classroom API**-t, majd engedélyezd a projekthez.
3. Az API irányítópultján a **Credentials** részben kattints a hozzájárulási képernyő beállítására.
4. Felhasználótípusnak válaszd az **External** lehetőséget, és hozd létre a képernyőt.
5. A **Credentials** fülön hozz létre **OAuth Client ID**-t.
6. Alkalmazástípusnak helyi teszteléshez a **Desktop App**, éles szerverhez a **Web Application** való.
7. Webalkalmazásnál az engedélyezett átirányítási URI formátuma `https://tedomained.hu/tutor-google-classroom-callback/` legyen.
8. A hitelesítő adatok oldalán töltsd le a JSON-fájlt a letöltés ikonnal.

### Összekötés a Google Classrooma

![A Google Classroom oldala](./kepek/google-classroom.webp)

*A Google Classroom oldala* (https://minta-bolt.hu/wp-admin/admin.php?page=tutor-google-classroom)

1. Kapcsold be a **Google Classroom-integráció** addont az **Addons** oldalon.
2. Menj a **Tutor LMS Pro → Google Classroom** oldalra. A kék üzenetben az átirányítási URI látszik, amit a Google Console-ban meg kell adnod.
3. Húzd a JSON-fájlt a mezőbe, vagy a **Fájl böngészése** gombbal válaszd ki.
4. Kattints a **Hitelesítő adatok betöltése** gombra. A rendszer végigvezet a Google engedélyezési lépésein, amelyeket mind engedélyezned kell. Ha a Google a „Google hasn’t verified this app” figyelmeztetést mutatja, kattints az **Advanced** linkre, majd az alsó hivatkozásra a folytatáshoz.
5. Ezután az irányítópulton megjelenik a fiókodhoz tartozó összes Google Classroom. Ezeket kurzusként importálhatod, és kötegelt műveletekkel automatizálhatod az importálást is.

### Hallgatók importálása

Importáláskor a rendszer rákérdez, hogy a hallgatók beiratkozását is át szeretnéd-e venni. Ilyenkor a Classroom hallgatóinak e-mail-címét lekéri, és regisztrálja őket a webhelyen. A hallgatók e-mailt kapnak a regisztrációról, és be kell állítaniuk a jelszavukat. Fizetős kurzusnál ne használd az automatikus beiratást, mert ez kihagyja a fizetési folyamatot.

A jelszó-beállító e-mailek spambe kerülhetnek, ha a DKIM és az SPF rekordok nincsenek megfelelően beállítva.

### Kurzuslista shortcode-dal

A `[tutor_gc_classes]` shortcode az oldal bármely pontján kilistázza a Google Classroom kurzusokat. Az oszlopok számát a `[tutor_gc_classes max-column=3]` formában módosíthatod, az érték 1 és 6 között lehet.

### Az importált kurzusok beállításai

Importált kurzusnál a kurzusszerkesztőben (háttérfelületen és frontenden is) új beállítások jelennek meg:

- **Google Classroom Stream engedélyezése:** a beiratkozott hallgatóknak megmutatja a Classroom-folyamot a kurzus oldalán.
- **Google Classroom-fájlok megjelenítése a folyamban:** a Classroomba feltöltött fájlok a folyam fülön is látszanak.
- **Google Classroom-fájlok az erőforrásokban:** a Classroom-fájlok a saját, WordPressbe feltöltött fájlok mellett a dokumentumok fülön is megjelennek.

### Ismert probléma helyi szerveren

Helyi teszt szerveren a JSON-fájl betöltésekor hiba léphet fel egy hiányzó SSL-fájl miatt. Ilyenkor töltsd le a `cacert.pem` fájlt, tedd a PHP `extras/ssl` mappájába, és a `php.ini` fájlba add meg az elérési útját:

```ini
[curl]
; A CURLOPT_CAINFO alapértelmezett értéke, abszolút útvonal kell.
curl.cainfo = "C:\MAMP\bin\php\php7.4.0\extras\ssl\cacert.pem"
```

Ez a példa a MAMP fájlrendszerére vonatkozik. Más helyi szervernél az útvonalat és a PHP-verziót is igazítsd a sajátodhoz.
