# Értesítések és az OpenPlatform nyilvános végpontjai

> Küldj értesítést egy felhasználónak az alkalmazásodból, és használd a tokenes API-t a felhasználók listájához, a képfeltöltéshez és több példány szinkronizációs socketjéhez.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: hu
Content-SHA256: 9a485bcf18ffe493822a2e042003fec1a66275bfcefd7c9b300c307c84741b7e
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Az indításon és az ellenőrzésen kívül az OpenPlatform néhány végpontot kínál az alkalmazásoknak és más rendszereknek. A `controllers/verify.js`, a `controllers/api.js` és a `controllers/socket.js` fájlokban vannak.

## Értesítés küldése

Az ellenőrzés válasza tartalmazza a `notify` értéket, egy `<platform url>/notify/?token=<checksum of user and application>` alakú címet, ha a felhasználó elfogadja az értesítéseket. Az alkalmazás `POST` kérést küld rá az `x-token` fejléccel és egy JSON törzzsel:

| Mező | Jelentés |
|---|---|
| `body` | az értesítés szövege |
| `path` | az alkalmazáson belüli útvonal, amelyet az értesítés megnyit |
| `icon`, `color` | opcionális: lecserélik az alkalmazás ikonját és színét |

Az `x-token` értéke az **értesítési token**, amelyet az OpenPlatform az adott felhasználóhoz és alkalmazáshoz levezet: az értesítési cím MD5 értéke az alkalmazás `reqtoken` értékével sózva, majd ennek az eredménynek az MD5 értéke az alkalmazás `restoken` értékével sózva (`FUNC.makenotify` a `definitions/func.js` fájlban). Mindkét titok ugyanaz, amelyet az alkalmazás az indításhoz megoszt ([app regisztrálása](/en/openplatform/register-an-app/)).

Az OpenPlatform `Invalid token` választ ad, ha az ellenőrző összeg vagy a fejléc nem egyezik, és `Not allowed notifications` választ, ha a felhasználó vagy az alkalmazás nem fogadja el őket. Ellenőrzi az alkalmazás engedélyezett címeit is, és azt, hogy a felhasználó megerősített, engedélyezett és aktív. Ha minden rendben:

1. eltárolja az értesítést (`tbl_notification` tábla), és növeli a felhasználó olvasatlan számlálóját;
2. frissíti a felhasználó portálon nyitott munkameneteit, így a számláló azonnal megjelenik;
3. közzéteszi a `Notifications.create` eseményt TMS-en, ha a `$tms` beállítás be van kapcsolva;
4. visszaadja az értesítés azonosítóját.

Azoknak a felhasználóknak, akik offline vannak és olvasatlan értesítéseik vannak, egy szolgáltatási feladat **e-mailes összefoglalót** küld ("Unread notifications"), ha a levelezési beállítások meg vannak adva, felhasználónként legfeljebb háromnaponta egyszer (`definitions/init.js`).

## A felhasználói API (egy token)

A `GET /users/` JSON-ként adja vissza a platform csoportjait és felhasználóit. **Le van tiltva**, amíg az `allow_token` és a `token` beállítás nincs megadva. A hívó a tokent a `token` lekérdezési paraméterben vagy az `x-token` fejlécben küldi; az ismételt hibás próbálkozásokat blokkolja. A felhasználók titkok nélkül érkeznek: azonosító, hivatkozás, nyelv, nem, fotó (abszolút cím), név, e-mail, szín, beállítások, jelzők (`sa`, `isdisabled`, `isinactive`, `isonline`), dátumok és a csoportjaik azonosítói.

## Kép feltöltése

A `POST /upload/base64/` (legfeljebb 2 MB) egy JSON törzset fogad a fájlnévvel és a `file` mezővel data URI-ként, és csak **JPEG**-et. Bejelentkezett felhasználót vagy a `servicetoken` beállítás lekérdezési tokenjét igényli (hogy honnan jön ez a kulcs, lásd: [beállítások és adatbázis](/en/openplatform/settings-and-database/)). A kép a `files` fájltárba kerül, a válasz pedig a címe, `/files/<id and checksum>.jpg`; a cím csak az ellenőrző összeggel működik.

## Több példány: a szinkronizációs socket

A `SOCKET /sync/` OpenPlatform példányokat köt össze. Egy kliens akkor fogadható el, ha a `sync` beállítás be van kapcsolva, és a lekérdezés `token` értéke megegyezik a `sync_token` értékkel; bármely más klienst fél másodperccel a megnyitás után a `4001` kóddal lezár. A megerősített kliens üzeneteit továbbítja a többieknek, és amíg egy megerősített kliens újracsatlakozik, az üzenetek legfeljebb tíz másodpercig sorban állnak.
