Help Center Meta és Instagram API integráció

Meta és Instagram API integráció

Referencia egy Instagram-alkalmazás létrehozásához az SMSBAT ChatHub platformon: hitelesítés, Instagram Közvetlen beszélgetések, hozzászólások bejegyzésekhez és tekercsekhez, történetekre adott válaszok, webhookok és szavazások.

Források

Ez az oldal egyesíti a belső Meta Comments API specifikációt az élő OpenAPI-val meghatározások: https://chatapi.smsbat.com/swagger/v1/swagger.json és https://restapi.smsbat.com/swagger/v1/swagger.json. Ahol a kettő nem ért egyet, a A különbség soron belül ki van hívva, és a Nyitott kérdések alatt található.


1. Alap URL-ek

CélURL
Chat API + Meta APIhttps://chatapi.smsbat.com
Swagger UI / OpenAPIhttps://chatapi.smsbat.com/index.html · …/swagger/v1/swagger.json
REST API (szervezetek, visszahívási URL-ek)https://restapi.smsbat.com
REST API Swaggerhttps://restapi.smsbat.com/swagger/v1/swagger.json
Kezelői web panelhttps://chat.smsbat.com

2. Hitelesítés

A hitelesítési séma a végpontcsoporttól függ. Ezek összekeverése a 401 leggyakoribb oka.

CsoportFejléc
chatapi.smsbat.com/api/meta/* (bejegyzések, megjegyzések)X-Authorization-Key: <organization token>
chatapi.smsbat.com/api/chat/*, /api/company/*, /api/operator/*Authorization: Bearer <JWT>
restapi.smsbat.com/*X-Authorization-Key · Authorization: Bearer · Alapszintű hitelesítés

Az X-Authorization-Key szervezeti tokent a Profil alatti panelen adják ki. A vállalat és az üzemeltető JWT-k /api/company/get-token és /api/operator/get-token országból származnak.

Eltérés

A chatapi OpenAPI dokumentum egyetlen biztonsági sémát deklarál – Bearer – és alkalmazza azt globálisan. A X-Authorization-Key ott egyáltalán nincs deklarálva, bár a belső Meta A megjegyzések API specifikációja a /api/meta/*-re nevezi el. Nagy valószínűséggel kezeli köztes szoftver, amely nem tükröződik a Swaggerben. Erősítse meg tapasztalati úton, mielőtt elküldi.

2.1 Vállalati token

POST https://chatapi.smsbat.com/api/company/get-token
Content-Type: application/json

{ "login": "company_login", "password": "company_password" }

A 200 OK csupasz token karakterláncot ad vissza.

2.2 Szervezetek

GET https://chatapi.smsbat.com/api/company/organization
Authorization: Bearer <company_token>
[ { "id": 24, "name": "My Instagram Store" } ]

2.3 Operátorok egy szervezetben

GET https://chatapi.smsbat.com/api/operator?organizationId=24
Authorization: Bearer <company_token>
[
  {
    "id": 21,
    "name": "Jane Doe",
    "status": 0,
    "organization": { "id": 24, "name": "My Instagram Store" }
  }
]

Kezelői állapotok: 0 Aktív, 1 Inaktív, 2 Törölve.

2.4 Operátorok hozzáadása/szinkronizálása

POST https://chatapi.smsbat.com/api/operator/synchronize
Authorization: Bearer <company_token>
Content-Type: application/json

[ { "organizationId": 24, "name": "John Operator" } ]

200 OK → [ { "id": 21, "status": 0, "name": "John Operator" } ]

2.5 Kezelői JWT

POST https://chatapi.smsbat.com/api/operator/get-token
Authorization: Bearer <company_token>
Content-Type: application/json

{ "id": 21, "expiresAt": "2026-12-31T23:59:59.000Z" }

A 200 OK a JWT-t karakterláncként adja vissza.

2.6 Operátori token érvényesítése

POST https://chatapi.smsbat.com/api/operator/validate-token
Authorization: Bearer <company_token>
Content-Type: application/json

"eyJhbGciOi..."
{
  "isValid": true,
  "operatorId": 21,
  "clientId": 0,
  "expiresAt": "2026-12-31T23:59:59.000Z",
  "error": null
}

Ha érvénytelen: { "isValid": false, "error": "Invalid token" }.

2.7 A kezelői csevegőpanel beágyazása

<script type="module" id="operator-chat-panel-script"
  src="https://widget.smsbat.com/operator-chat-panel/widget-script.js"
  token="YOUR_OPERATOR_JWT_TOKEN"></script>

3. Mélyhivatkozások a csevegőpanelre

Egy külső rendszer (CRM, ERP, webhely) képes megnyitni egy adott beszélgetést https://chat.smsbat.com/. Az operátort egy lekérdezési paraméterként átadott JWT engedélyezi.

https://chat.smsbat.com/?chat_raw_id=<chat_id>&token=<jwt>
https://chat.smsbat.com/?phone=<phone>&token=<jwt>
https://chat.smsbat.com/?from=<bm_id>&phone=<phone>&token=<jwt>
https://chat.smsbat.com/?source=7&from=<bm_id>&phone=<phone>&token=<jwt>
ParaméterLeírás
chat_raw_idChat ID
phoneTelefonszám nemzetközi formátumban
fromMárka/üzleti fiók azonosítója (bm_id)
sourceCsevegés forrása – 7 az Instagramhoz, lásd a 8.1. szakaszt
tokenÉrvényes, le nem járt JWT operátor, hozzáféréssel a chatekhez

Érvénytelen JWT esetén a látogató a kezelőpanel bejelentkezési képernyőjére kerül.


4. Instagram Közvetlen beszélgetések

4.1 Csevegések listázása

GET https://chatapi.smsbat.com/api/chat/chats?source=7&page=1&per_page=20
Authorization: Bearer <token>

Note

Az oldalszámozás itt per_page (snake_case). A /api/meta/* és a szavazás alatt végpont ez perPage (camelCase). Ez nem elírás – az API mindkettőt használja.

Lekérdezési paraméterek, mindegyik nem kötelező:

ParaméterTípusLeírás
sourceChatSource7 az eredményeket az Instagramra korlátozza
entityIdintÜzleti fiók azonosítója. Csak a source
instagram_user_idintInstagram felhasználói azonosító a ChatHubban
facebook_user_idintFacebook felhasználói azonosító a ChatHubban
page / per_pageintLapozás, alapértelmezett 1 / 20
statusChatStatus[]Chat állapot, megismételhető
searchstringSzabadszöveges keresés (név, telefon, …)
organizationIdintSzervezeti azonosító
operatorIdint[]Szűrés hozzárendelt operátorok szerint
datestring[]Két korlát: ?date=…&date=…
isChainboolA csevegések visszaküldése láncként, a korábbi csevegésekből származó üzenetek átvitelével
isUnread, starMark, isOperator, isAIAgentboolTovábbi szűrők
phone, email, contactId, clientId, tagIds, rate, sortedBy—Egyéb szűrők

200 OK visszaadja GetChatsResponse:

{
  "total": 1,
  "newMessagesCount": 2,
  "items": [
    {
      "id": 1867,
      "theme": null,
      "messSource": 7,
      "chatStatus": 1,
      "countUnread": 2,
      "metaUserId": "1585775752382460",
      "instaAccount": { "id": 12, "name": "my_instagram_shop", "photo": "https://..." },
      "instagramUser": { "id": 123, "name": "marianna_cat", "photo": "https://..." },
      "operator": { "id": 21, "name": "Jane", "photo": "https://..." },
      "client": { "id": 55, "name": "Marianna", "photo": null },
      "textLastMess": "Hello! Is this product available?",
      "timeLastMess": "2026-08-13T10:15:00Z",
      "authorLastMessage": 1,
      "messageStatus": 6,
      "isMedia": false,
      "phone": null,
      "organizationId": 1,
      "createdAt": "2026-08-13T10:14:00Z",
      "isStarred": false,
      "isBlocked": false,
      "tags": []
    }
  ]
}

Az Instagram-alkalmazások számára fontos mezők:

MezőJelentése
instaAccountAz Instagram üzleti fiók (az üzlet). id a entityId szűrőérték; name a Meta
instagramUserA ügyfél. name az Instagram fogója, id a instagram_user_id szűrő értéke
metaUserIdAz ügyfél hatókörű azonosítója a Meta oldalán (karakterlánc)
messSource7 az Instagram számára
phoneÁltalában null Instagram esetén – ne használja kulcsként

A ChatDTO a következőt is hordozza: olxUser, promUser, waba, rozetkaUser, facebookAccount, facebookUser, viberAccount, tgBot, tgUser, viberBot, viberBotUser, widget, media, isConnectedAI, isPromo, rate, rateComment, closedBy, draft, lang, starMark, contactId, contactName, block, isInStopList, stopList, isSmsFallbackEnabled és taggedMessages.

4.2 Csevegőüzenetek

GET https://chatapi.smsbat.com/api/chat/chats/1867/messages?isChain=false
Authorization: Bearer <token>

A 200 OK egy ChatMessageDTO tömböt ad vissza:

[
  {
    "id": 9928,
    "chatId": 1867,
    "message": "Hi! Do you have size M in stock?",
    "messageTranslation": null,
    "phone": null,
    "author": 1,
    "source": 7,
    "media": null,
    "replyTo": null,
    "status": 6,
    "date": "2026-08-13T10:14:00Z",
    "operator": null,
    "client": { "id": 123, "name": "marianna_cat", "photo": "https://..." },
    "messageType": 0,
    "isInternal": false,
    "isBroadcast": false,
    "starMark": false,
    "referralGuid": null,
    "postId": null,
    "isConnectedAI": false,
    "organizationId": 1,
    "countUnreadMessages": 0
  }
]

A postId akkor van kitöltve, ha az üzenet egy Instagram-bejegyzéshez vagy történethez kapcsolódik – adja át egyenesen vissza mint id / postId a Meta API-hoz. media egy ChatMediaDTO: { name, format, type, uri, raw, length, isUploaded }.

4.3 Üzenet küldése (JSON)

POST https://chatapi.smsbat.com/api/chat/1867/message
Authorization: Bearer <token>
Content-Type: application/json

Törzs — SendChatMessageDTO:

{
  "textMessage": "Hello! Yes, size M is available.",
  "author": 0,
  "isInternal": false,
  "replyToMessageId": 9928,
  "appGuid": "550e8400-e29b-41d4-a716-446655440000",
  "media": {
    "name": "item.jpg",
    "format": "image/jpeg",
    "dataBase64": "/9j/4AAQSkZJRg...",
    "type": 1
  }
}
MezőTípusLeírás
textMessagestring?Üzenet szövege. Üres lehet, ha a media jelen van
authorAuthorMessage?0 operátor, 1 kliens
isInternalbool?true olyan belső megjegyzést jelöl, amelyet nem kézbesítenek az ügyfélnek
replyToMessageIdint?A megválaszolt üzenet azonosítója
appGuiduuid?Hivatkozási GUID
mediaMediaDTO?{ name, format, dataBase64, thumbnail, duration, type }

200 OK → { "id": 9930, "messageStatus": 0 }

Egy hivatkozási GUID is átadható az útvonalon: POST /api/chat/{chatId}/{referralGuid}/message (hasonlóan …/message/v1, …/message/v2).

4.4 Fájl vagy videó küldése (többrészes, v2)

POST https://chatapi.smsbat.com/api/chat/1867/message/v2
Authorization: Bearer <token>
Content-Type: multipart/form-data

Az űrlapmezők neve PascalCase, pontjelöléssel

A textMessage és a media.file csendben figyelmen kívül marad. Használja az alábbi pontos neveket.

Űrlap mezőTípusLeírás
TextMessagestringÜzenet szövege
Authorint0 operátor, 1 kliens
IsInternalboolBelső megjegyzés
ReplyToMessageIdintÜzenetre válaszolnak
AppGuiduuidHivatkozási GUID
Media.FilebinaryMaga a fájl
Media.NamestringFájlnév
Media.FormatstringMIME-típus (video/mp4, image/png, application/pdf)
Media.TypeMediaTypeLásd: 8.5
Media.DataBase64stringA Media.File
Media.ThumbnailstringBase64 videó előnézeti keret
Media.DurationdoubleVideó időtartama másodpercben
curl -X POST "https://chatapi.smsbat.com/api/chat/1867/message/v2" \
  -H "Authorization: Bearer <token>" \
  -F "TextMessage=Here is the price list" \
  -F "Author=0" \
  -F "Media.Type=2" \
  -F "Media.File=@./price.pdf"

200 OK → { "id": 9931, "messageStatus": 0 }

4.5 A chat állapotának módosítása

PUT https://chatapi.smsbat.com/api/chat/status
Authorization: Bearer <token>
Content-Type: application/json

{ "id": 1867, "status": 4 }

A 200 OK a frissített objektumot visszhangozza.

4.6 Üzenetek állapotának frissítése

PUT https://chatapi.smsbat.com/api/chat/messages/status
Authorization: Bearer <token>
Content-Type: application/json

{ "status": 3, "messageIds": [9928, 9929] }

4.7 Csevegés törlése

DELETE https://chatapi.smsbat.com/api/chat/chats/1867
Authorization: Bearer <token>

5. Bejegyzések, tekercsek és történetek

Alapútvonal: https://chatapi.smsbat.com/api/meta Auth: X-Authorization-Key: <organization token>

5.1 Posztok, tekercsek és történetek listázása

GET https://chatapi.smsbat.com/api/meta/posts?platform=instagram&mediaType=story&page=1&perPage=20
X-Authorization-Key: <token>
ParaméterTípusKötelezőLeírás
pageintnemOldal, alapértelmezett 1
perPageintnemElemek oldalanként, alapértelmezett 20
idintnemSzűrés belső bejegyzésazonosító szerint
platformstringneminstagram vagy facebook
mediaTypestringnempost, reel vagy story. Minden típus kihagyva
# Every post
curl -H "X-Authorization-Key: <token>" \
  "https://chatapi.smsbat.com/api/meta/posts?page=1&perPage=10"

# Instagram only
curl -H "X-Authorization-Key: <token>" \
  "https://chatapi.smsbat.com/api/meta/posts?platform=instagram"

# A single post by ID
curl -H "X-Authorization-Key: <token>" \
  "https://chatapi.smsbat.com/api/meta/posts?id=42"

# Instagram Stories only
curl -H "X-Authorization-Key: <token>" \
  "https://chatapi.smsbat.com/api/meta/posts?platform=instagram&mediaType=story"

200 OK:

{
  "total": 42,
  "items": [
    {
      "id": 42,
      "metaId": "18113450675314072",
      "text": "Check out our new collection!",
      "imageUrl": "https://dashboard.smsbat.com/api/meta/post/media/7d124c36-1711-4aa8-b21d-f6dbf8f347ef",
      "platform": "instagram",
      "mediaType": "story",
      "createdAt": "2026-07-22T09:35:30Z",
      "story": {
        "id": 42,
        "metaId": "18113450675314072",
        "url": "https://dashboard.smsbat.com/api/meta/post/media/7d124c36-1711-4aa8-b21d-f6dbf8f347ef"
      }
    }
  ]
}

Eltérés – számlálómező neve

A Swagger séma MetaCommentPostListItemDtoPaginationDTO a total értéket határozza meg. A belső specifikációs dokumentumok totalCount. A Swagger a kódból jön létre, tehát total a valószínűbb igazság. Elemezze a total ?? totalCount értéket, amíg ez meg nem oldódik.

MezőLeírás
idBelső bejegyzésazonosító
metaIdKülső bejegyzés / tekercs / történetazonosító a Meta
textHozzászólás felirata
imageUrlA proxy média URL-je nem szekvenciális MetaPost.Guid vagy null
platformfacebook vagy instagram
mediaTypepost, reel vagy story
createdAtLétrehozás dátuma (platform dátuma vagy adatbázis dátuma)
storyAjándék csak mediaType: "story"
story.idBelső történetazonosító; egyenlő post.id
story.metaIdKülső történetazonosító a Meta
story.urlA tárolt Story-média stabil proxy URL-je; null ha az adathordozót nem sikerült elmenteni

A postai médiát két útvonal szolgálja ki: GET /api/meta/post/media/{id:int} visszafelé kompatibilitás és GET /api/meta/post/media/{guid:guid}. Új API-válaszok és visszahívások mindig generálja a GUID űrlapot.

5.2 Megjegyzések listázása

GET https://chatapi.smsbat.com/api/meta/comments?platform=instagram&postId=42&page=1&perPage=20
X-Authorization-Key: <token>
ParaméterTípusKötelezőLeírás
pageintnemOldal, alapértelmezett 1
perPageintnemElemek oldalanként, alapértelmezett 20
postIdintnemSzűrés postaazonosító szerint
parentCommentIdintnemEgy adott megjegyzés gyermek megjegyzései (válaszai)
platformstringnemfacebook vagy instagram

200 OK:

{
  "total": 100,
  "items": [
    {
      "id": 5,
      "metaId": "179000000000005",
      "text": "What is the price?",
      "createdAt": "2026-04-15T10:30:00Z",
      "platform": "instagram",
      "replyStatus": null,
      "author": {
        "type": "meta_user",
        "name": "John Doe",
        "metaUserId": "1585775752382460"
      },
      "post": {
        "id": 1,
        "metaId": "18113450675314072",
        "text": null,
        "imageUrl": "https://dashboard.smsbat.com/api/meta/post/media/7d124c36-…",
        "createdAt": "2026-07-22T09:35:30Z",
        "mediaType": "story",
        "story": {
          "id": 1,
          "metaId": "18113450675314072",
          "url": "https://dashboard.smsbat.com/api/meta/post/media/7d124c36-…"
        }
      },
      "mediaUrl": "https://chatapi.smsbat.com/api/meta/comment/media/5",
      "replyTo": {
        "id": 3,
        "metaId": "179000000000003",
        "text": "Parent comment..."
      }
    }
  ]
}
MezőLeírás
idBelső megjegyzésazonosító
metaIdKülső azonosító a Metában. null egy függőben lévő válaszunkért, amíg el nem küldik
textMegjegyzés szövege
createdAtLétrehozás dátuma
platformfacebook vagy instagram
replyStatusnull bejövő felhasználói megjegyzés esetén; "pending" / "sent" / "failure" válaszunkért
author.type"meta_user" külső felhasználó, "owner" oldaltulajdonos
author.nameSzerző neve
author.metaUserIdHatáskörű felhasználói azonosító a Meta-ban; null for "owner"
postA bejegyzés, tekercs vagy történet, amelyhez a megjegyzés tartozik
post.mediaTypepost, reel vagy story
post.storyTörténeti hivatkozás { id, metaId, url }, csak történetek
mediaUrlA megjegyzéshez csatolt média, vagy null
replyToSzülői megjegyzés { id, metaId, text }; null a legfelső szinten

Eltérés – `author.type` típusa

A belső specifikáció dokumentálja a "meta_user" / "owner" karakterláncokat. Swagger típusok MetaCommentAuthorType egész számként [0, 1] sorszámmal. A JsonStringEnumConverter megmagyarázná a hiányt, de ezt nem erősítették meg valós válaszhoz képest. Írj a elemző, amely mindkettőt elfogadja.

5.3. Válasz egy megjegyzésre

Sorba állítja a választ a kézbesítéshez.

curl -X POST \
  -H "X-Authorization-Key: <token>" \
  -H "Content-Type: application/json" \
  -d '{"text": "Thanks for the feedback!"}' \
  "https://chatapi.smsbat.com/api/meta/comments/5/reply"

Kérelem törzse: { "text": "Reply text" }

A 202 Accepted visszaadja a megjegyzés objektumot – ugyanolyan alakú, mint a GET /api/meta/comments – a következővel replyStatus: "pending" és metaId: null. A szállítási eredmény később érkezik, mint a source: 13 visszahívás (§6.4).

Eltérés – válaszkód

Swagger kijelenti, hogy 200 test nélkül; a belső specifikáció kijelenti, hogy 202 Accepted a megjegyzéssel, mint a testtel. A vezérlőből valószínűleg hiányzik a ProducesResponseType attribútum, így a Swagger az alapértelmezett értéken marad. Fogadjon el bármilyen 2xx-t, és ne függjön testtől.


6. Webhooks

Az SMSBAT POST kérést küld a application/json kóddal az Ön URL-címére, és a HTTP 200 visszajelzést várja.

A nulla mezők teljesen kimaradnak

Az a mező, amelynek értéke null, egyáltalán nem szerepel a visszahívás törzsében. A olyan üzenet, amely nem a Facebookról vagy az Instagramról érkezett, egyszerűen nincs MetaUserId kulcs. Kezelje a „hiányzó” és a null szavakat azonos dologként.

6.1 Regisztráljon egy visszahívási URL-t

curl -X POST 'https://restapi.smsbat.com/organizations/callback_urls' \
  -H 'X-Authorization-Key: <token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://your-server.com/webhook",
    "source": 12,
    "headerName": "X-Webhook-Secret",
    "headerValue": "your-secret",
    "channelType": 7,
    "channelEntityId": 12
  }'
MezőTípusLeírás
urlstringAz Ön végpontja
sourceSendingSourceCallbackEsemény típusa, lásd a 8.2. szakaszt
headerName / headerValuestringÖnkényes hitelesítési fejléc, amelyet a kérelemhez csatolunk (opcionális)
channelTypeChatSourceCsatorna. 7 az Instagram számára. Választható
channelEntityIdintEgy adott üzleti fiók. channelType

channelType nélkül az URL minden csatornáról fogad eseményeket.

Tip

A teljes kommentárhoz két regisztráció szükséges: source: 12 az új megjegyzésekhez és source: 13 a válaszállapotokhoz. Közvetlen és Story válaszokhoz add hozzá a source: 3 számot (és 11, ha minden csevegőüzenetet szeretne).

A hátralévő műveletek:

GET    https://restapi.smsbat.com/organizations/callback_urls?source=12
GET    https://restapi.smsbat.com/organizations/callback_urls/{id}
PUT    https://restapi.smsbat.com/organizations/callback_urls/{id}
DELETE https://restapi.smsbat.com/organizations/callback_urls/{id}

GET visszatér:

[
  {
    "id": 101,
    "url": "https://your-server.com/webhook",
    "source": 12,
    "headerName": "X-Webhook-Secret",
    "headerValue": "your-secret",
    "createdAt": "2026-08-13T09:00:00Z",
    "channelType": 7,
    "channelEntityId": 12
  }
]

6.2 Új üzenet és válasz az Instagram Story-hoz (source: 3, 11)

A felhasználó válasza egy Instagram-sztorira közönséges üzenetként érkezik ezekben a visszahívásokban, egy extra legfelső szintű Story blokkal:

{
  "ChatId": 123,
  "MessageId": 456,
  "MessageText": "😍",
  "Username": "Jane Smith",
  "UserId": 789,
  "MetaUserId": "1585775752382460",
  "ShopId": 12,
  "ShopName": "instagram shop name",
  "Author": 0,
  "type_messenger": 7,
  "Story": {
    "Id": 42,
    "MetaId": "18113450675314072",
    "Url": "https://dashboard.smsbat.com/api/meta/post/media/7d124c36-1711-4aa8-b21d-f6dbf8f347ef"
  }
}
MezőLeírás
ChatId / MessageIdCsevegés és üzenetazonosítók
Author0 felhasználó, 1 operátor
UsernameInstagram / Facebook megjelenített név vagy fogantyú
UserIdBelső numerikus felhasználói azonosító az SMSBAT-ban
MetaUserIdA beszélgetőpartner kiterjedt azonosítója a Metában. Egy kimenő operátori üzenet esetén ez továbbra is a csevegés Meta felhasználóját azonosítja, nem az operátort
ShopIdAz Instagram/Facebook üzleti fiók belső azonosítója
ShopNameVállalkozási számlanév, amelyet a Metától kaptunk a csatlakozás időpontjában
MessageTextÜzenet szövege
MessageMediaMédia URL, ha az üzenet média
type_messengerForrás, 7 az Instagram számára
operator_nameOperátor neve, ha Author = 1
StoryJelentés csak egy bejövő Story-válasznál
Story.IdBelső történet (MetaPost) azonosítója – közvetlenül id / postId néven használható a Meta API-ban
Story.MetaIdKülső történetazonosító a Meta
Story.UrlA tárolt Story-média stabil proxy URL-je. Hiányzik, ha az adathordozót nem lehetett menteni — a Story blokk és az üzenet továbbra is kézbesítve

A `Author` fordított a Chat API-hoz képest

A ChatMessageDTO.author-ben a 0 operátort, a 1 pedig ügyfelet jelent. Ebben a visszahívásban az fordítva: 0 a felhasználó, 1 az operátor. Ne ossza meg a térképet.

6.3 Új megjegyzés (source: 12)

Akkor aktiválódik, amikor egy Meta-felhasználó megjegyzést fűz egy Facebook- vagy Instagram-bejegyzéshez/Tekercshez.

Note

Instagram A történetekre adott válaszokat nem a source: 12 számon kézbesítjük. A szokásos módon érkeznek bejövő üzenetek a source: 3 és/vagy a 11 számon Story blokkal – lásd a 6.2. szakaszt.

{
  "type": "new_comment",
  "platform": "instagram",
  "comment": {
    "id": 10,
    "metaId": "179000000000010",
    "parentCommentId": 5,
    "parentMetaId": "179000000000005",
    "parentCommentText": "The user's previous comment",
    "text": "Great product!",
    "createdAt": "2026-04-16T12:00:00Z",
    "author": {
      "type": "meta_user",
      "name": "Jane Smith",
      "metaUserId": "1585775752382460"
    }
  },
  "post": {
    "id": 1,
    "metaId": "123456789012345",
    "text": "Post description...",
    "imageUrl": "https://dashboard.smsbat.com/api/meta/post/media/7d124c36-…",
    "createdAt": "2026-04-10T12:00:00Z",
    "mediaType": "post"
  }
}

6.4 Megjegyzés válasz állapota (source: 13)

Akkor aktiválódik, amikor megpróbálunk választ adni, akár sikerrel, akár kudarccal.

{
  "type": "comment_status",
  "platform": "instagram",
  "comment": {
    "id": 15,
    "metaId": "179000000000015",
    "parentCommentId": 10,
    "parentMetaId": "179000000000010",
    "parentCommentText": "Great product!",
    "text": "Thanks for the feedback!",
    "createdAt": "2026-04-16T12:05:00Z",
    "updatedAt": "2026-04-16T12:05:03Z",
    "replyStatus": "sent",
    "author": {
      "type": "owner",
      "name": "Support Agent"
    }
  },
  "post": {
    "id": 1,
    "metaId": "179999999999999",
    "text": "Reel description...",
    "imageUrl": "https://dashboard.smsbat.com/api/meta/post/media/7d124c36-…",
    "createdAt": "2026-07-22T09:35:30Z",
    "mediaType": "reel"
  }
}

6.5 Megosztott megjegyzés-visszahívási mezők

Mindkét megjegyzés-visszahívás egy testalkatú, és csak type-kal különbözik.

MezőLeírás
type"new_comment" vagy "comment_status"
platform"facebook" vagy "instagram"
comment.idBelső megjegyzésazonosító
comment.metaIdKülső azonosító a Metában; null egy függőben lévő válaszhoz, mielőtt elküldené
comment.parentCommentIdSzülői megjegyzés azonosítója. Hiányzik a legfelső szintű megjegyzéshez
comment.parentMetaIdKülső szülő megjegyzés azonosítója. Hiányzik a legfelső szinten
comment.parentCommentTextSzülői megjegyzés szövege. Hiányzik a legfelső szinten
comment.textMegjegyzés szövege
comment.createdAtLétrehozás dátuma
comment.updatedAtUtolsó frissítés. Hiányzik, ha a megjegyzést soha nem szerkesztették
comment.replyStatus"pending" / "sent" / "failure". Hiányzik egy bejövő felhasználói megjegyzéshez
comment.author.type"meta_user" vagy "owner"
comment.author.nameSzerző neve
comment.author.metaUserIdHatáskörrel rendelkező szerzői azonosító a Metában. "owner"
comment.mediaUrlMegjegyzés média. Hiányzik, ha nincs
post.idBelső bejegyzésazonosító
post.metaIdKülső bejegyzés / tekercs / történetazonosító a Meta
post.textHozzászólás szövege
post.imageUrlTegye közzé a kép URL-jét, vagy null
post.createdAtA bejegyzés létrehozásának dátuma
post.mediaTypeA megjegyzés-visszahívásoknál csak post vagy reel

6.6 Új csevegés (source: 7)

{ "ChatId": 12345, "Phone": "+380501234567", "chat.Source": 7 }

6.7 Az üzenetek és a csevegés állapotának változásai (source: 6 / 5)

{ "name": "changed_message_status", "id": 9928, "status": 6 }
{ "name": "changed_chat_status",    "id": 1867, "status": 4 }

6.8 Üzenet szerkesztve vagy törölve (source: 9)

{ "messageId": 9930, "text": "Updated message text" }
{ "messageId": 9931, "delete": true }

6.9 Gépelésjelző (source: 8)

{ "chat_id": 1867, "event": "start_typing", "operator_name": "Iryna" }
{ "chat_id": 1867, "event": "end_typing" }

7. Eseményszavazás

Olyan környezetekhez, amelyek nem fogadják el a bejövő HTTP-t.

7.1 Események lekérése

GET https://chatapi.smsbat.com/api/chat/callback-events?page=1&perPage=20
Authorization: Bearer <token>
ParaméterLeírás
organizationIdVálasztható. A tokenből kihagyva
page / perPageLapozás, alapértelmezett 1 / 20
{
  "page": 1,
  "perPage": 20,
  "total": 947,
  "items": [
    {
      "ChatId": 1867,
      "MessageId": 9928,
      "MessageText": "Hello there!",
      "MessageMedia": null,
      "Phone": null,
      "Username": "marianna_cat",
      "UserId": 123,
      "ShopId": 12,
      "ShopName": "instagram shop name",
      "Author": 1,
      "type_messenger": 7,
      "message_date": "2026-08-13T12:27:39.724Z",
      "timestamp": "2026-08-13T12:27:39.736Z",
      "event_guid": "ff60129e-c6e4-4876-9d90-badb430c0606",
      "organization_id": 1,
      "callback_type": "3"
    }
  ]
}

Minden esemény tartalmaz event_guid, timestamp, organization_id és callback_type – egy karakterlánc, amely megegyezik a 8.2. §-ban található source értékekkel. A fennmaradó mezők megegyeznek a megfelelő mezőkkel webhook a 6. §-ban.

7.2 A feldolgozott események nyugtázása

POST https://chatapi.smsbat.com/api/chat/callback-events/processed
Authorization: Bearer <token>
Content-Type: application/json

[ "ff60129e-c6e4-4876-9d90-badb430c0606" ]

200 OK → { "deleted": 1 }

A már eltávolított események egyszerűen nem számítanak bele a deleted-be. A rendelés és az újrapróbálkozás a tiéd oldal felelőssége.

7.3 Ajánlott ciklus

  1. Szavazás GET /api/chat/callback-events ütemezett.
  2. A szolgáltatásban lévő események feldolgozása.
  3. Küldje el a feldolgozott event_guid listát a /callback-events/processed számra.
  4. Ismételje meg.

8. Enum hivatkozás

8.1 ChatSource – csatorna (0–9)

KódCsatorna
0Viber
1ViberBot
2TelegramBot
3Whatsapp
4Widget
5Rozetka
6Facebook
7Instagram
8Bál
9Olx

8.2 SendingSourceCallback — visszahívási esemény típusa (0–13)

KódEsemény
3Chat — új csevegőüzenet, beleértve a történet válaszait
5A csevegés állapota megváltozott
6Az üzenet állapota megváltozott
7Új csevegés létrehozva
8Gépelésjelző
9Üzenet frissítve vagy törölve
11AnyChatMessage — bármilyen csevegőüzenet
12MetaNewComment — új Instagram-/Facebook-megjegyzés
13MetaCommentStatus — megjegyzésre adott válaszunk kézbesítési állapota

Az enum 0–13; a fennmaradó értékekre nincs szükség az Instagram-integrációkhoz.

8.3 ChatStatus (0–4)

0 Új, 1 Nyitott, 2 Várakozás, 3 OnPause, 4 Zárva

8.4 MessageStatus (0–11)

KódNév
0ÚJ
1SIKER
2ELUTASÍTVA
3OLVASSA
4ISMERETLEN
5FELDOLGOZÁS
6SZÁLLÍTVA
7BLOCKED_BY_USER
8USER_NOT_FOUND

Az enum 0–11-ig terjed. A 9, 10 és 11 értékek léteznek az API-ban, de még nincsenek dokumentálva — kezelje őket UNKNOWN-ként.

8.5 MediaType (1–10)

1 fénykép, 2 fájl, 3 hang, 4 videó, 5 matrica, 6 animált matrica, 7 StickerVideo, 8 Animáció, 9 Hang, 10 VideoNote

8.6 AuthorMessage – szerző a Chat API-ban (0–4)

0 Operátor, 1 Kliens, 2 Bot, 3 ViberAccount

Az enum 0–4; az 4 érték nem dokumentált. Az “új üzenet” visszahívások a ellentétes leképezés – lásd a 6.2.

8.7 ChatMessageType (0–2)

0 szöveg, 1 fénykép, 2 fájl

8.8 Megjegyzés replyStatus

null bejövő felhasználói megjegyzés, "pending" válaszunk sorban áll, "sent" kézbesítve, "failure" kézbesítés sikertelen.


Nyitott kérdések

Három pont, ahol a belső specifikáció és a kód által generált Swagger nem egyezik. Egy valódi tokennel való kérés mindegyiket rendezi; addig védekezően írj az ügyfélnek.

#kérdésSpecifikációSwaggerHogyan ellenőrizhető
1Auth header for /api/meta/*X-Authorization-Keycsak Bearer deklaráltcurl -i -H "X-Authorization-Key: <token>" ".../api/meta/posts?perPage=1" — 200 vár, nem 401
2Számláló mező a Meta válaszokbantotalCounttotalUgyanez a kérés – olvassa el a gyökér JSON-kulcsot
3author.type típus és reply állapotkód"meta_user" / "owner", 202 testtelint [0,1], 200 test nélkülcurl -i .../api/meta/comments?perPage=1 plusz egy tesztválasz

Átmeneti útmutatás:

  • számláló — olvassa el az total ?? totalCount-t;
  • author.type — karakterlánc és egész szám elfogadása (0 ↔ meta_user, 1 ↔ owner, a leképezés megerősítésre vár);
  • reply — minden 2xx-t sikeresként kezel, nincs szükség testre, a végső állapot az source: 13 visszahívásból származik.

Megvalósítási megjegyzések

  • A hitelesítés végpontcsoportonként eltérő — /api/meta/* az X-Authorization-Key kódot, csevegéseket és operátorok Bearer-t használnak, az restapi bármelyiket elfogadja.
  • Az oldalszámozás kétféleképpen íródik — per_page on /api/chat/chats, perPage on /api/meta/* és /api/chat/callback-events.
  • A multipart/form-data mezők PascalCase, pontjelöléssel (Media.File, Media.Type).
  • A nulla mezők kimaradnak a visszahívásokból – a hiányzó kulcs null értéket jelent.
  • Az phone az Instagramon általában null. Azonosítsa az ügyfelet az instagramUser.id / metaUserId, a bolt pedig instaAccount.id (az entityId szűrőérték).
  • A visszahívásból származó Story.Id egyenesen id / postId néven továbbítható a Meta API-nak.
  • Ellenőrizze az operátor JWT expiresAt számát, mielőtt mélyhivatkozásban vagy widgetben használná.