Help Center Meta ja Instagram API integreerimine

Meta ja Instagram API integreerimine

Viide Instagrami rakenduse loomiseks platvormil SMSBAT ChatHub: autentimine, Instagrami otsevestlused, postituste ja rullikute kommentaarid, lugude vastused, veebihaagid ja küsitlused.

Allikad

Sellel lehel liidetakse sisemine Meta Comments API spetsifikatsioon reaalajas OpenAPI-ga määratlused aadressil https://chatapi.smsbat.com/swagger/v1/swagger.json ja https://restapi.smsbat.com/swagger/v1/swagger.json. Kui need kaks ei nõustu, erinevus nimetatakse tekstisiseselt ja loetletakse jaotises Avatud küsimused.


1. Baas-URL-id

EesmärkURL
Vestluse API + Meta APIhttps://chatapi.smsbat.com
Swagger UI / OpenAPIhttps://chatapi.smsbat.com/index.html · …/swagger/v1/swagger.json
REST API (organisatsioonid, tagasihelistamise URL-id)https://restapi.smsbat.com
REST API Swaggerhttps://restapi.smsbat.com/swagger/v1/swagger.json
Operaatori veebipaneelhttps://chat.smsbat.com

2. Autentimine

Auth-skeem sõltub lõpp-punkti rühmast. Nende segamine on 401 kõige levinum põhjus.

RühmPäis
chatapi.smsbat.com/api/meta/* (postitused, kommentaarid)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 · Põhiautent

Organisatsiooni tunnus X-Authorization-Key jaoks väljastatakse paneelis jaotises Profiil. Ettevõtte ja operaatori JWT-d pärinevad /api/company/get-token ja /api/operator/get-token.

Erinevus

OpenAPI dokument chatapi deklareerib ühtse turvaskeemi – Bearer – ja rakendab seda globaalselt. X-Authorization-Key pole seal üldse deklareeritud, kuigi sisemine Meta Kommentaaride API spetsifikatsioon nimetab selle numbriks /api/meta/*. Suure tõenäosusega tegeleb sellega vahevara, mis Swaggeris ei kajastu. Enne saatmist kinnitage see empiiriliselt.

2.1 Ettevõtte tunnus

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

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

200 OK tagastab tühja märgistringi.

2.2 Organisatsioonid

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

2.3 Operaatorid organisatsioonis

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" }
  }
]

Operaatori staatused: 0 aktiivne, 1 passiivne, 2 kustutatud.

2.4 Operaatorite lisamine/sünkroonimine

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 Operaator 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" }

200 OK tagastab JWT stringina.

2.6 Kinnitage operaatorimärk

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
}

Kui see on kehtetu: { "isValid": false, "error": "Invalid token" }.

2.7 Manustage operaatori vestluspaneel

<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. Sügavad lingid vestluspaneelile

Väline süsteem (CRM, ERP, veebisait) saab avada konkreetse vestluse https://chat.smsbat.com/. Operaator on volitatud päringuparameetrina edastatud JWT-ga.

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>
ParameeterKirjeldus
chat_raw_idVestluse ID
phoneTelefoninumber rahvusvahelises formaadis
fromBrändi/ettevõtte konto identifikaator (bm_id)
sourceVestluse allikas — 7 Instagrami jaoks, vt §8.1
tokenKehtiv, aegumata operaator JWT, millel on juurdepääs vestlustele

Kehtetu JWT suunab külastaja juhtpaneeli sisselogimiskuvale.


4. Instagrami otsevestlused

4.1 Loetlege vestlused

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

Note

Leheküljed on siin per_page (snake_case). /api/meta/* ja küsitluse all lõpp-punkt on perPage (camelCase). See ei ole kirjaviga – API kasutab mõlemat.

Päringu parameetrid, kõik valikulised:

ParameeterTüüpKirjeldus
sourceChatSource7 piirab tulemusi Instagramiga
entityIdintEttevõtte konto ID. Rakendatakse ainult koos source
instagram_user_idintInstagrami kasutaja ID ChatHubis
facebook_user_idintFacebooki kasutajatunnus ChatHubis
page / per_pageintLeheküljed, vaikeseaded 1 / 20
statusChatStatus[]Vestluse olek, korratav
searchstringVabatekstiotsing (nimi, telefon, …)
organizationIdintOrganisatsiooni ID
operatorIdint[]Filtreeri määratud operaatorite järgi
datestring[]Kaks piiri: ?date=…&date=…
isChainboolTaastage vestlused kettidena, mis kannavad sõnumeid eelmistest vestlustest
isUnread, starMark, isOperator, isAIAgentboolLisafiltrid
phone, email, contactId, clientId, tagIds, rate, sortedBy—Muud filtrid

200 OK tagastab 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": []
    }
  ]
}

Instagrami rakenduse jaoks olulised väljad:

VäliTähendus
instaAccountInstagrami ettevõttekonto (pood). id on filtri väärtus entityId; name on Meta
instagramUserklient. name on Instagrami käepide, id on instagram_user_id filtri väärtus
metaUserIdKliendi ulatusega ID Meta poolel (string)
messSource7 Instagrami jaoks
phoneTavaliselt null Instagrami jaoks — ärge kasutage seda võtmena

ChatDTO kannab ka 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 ja taggedMessages.

4.2 Vestlussõnumid

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

200 OK tagastab massiivi ChatMessageDTO:

[
  {
    "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
  }
]

postId täidetakse, kui sõnum on seotud Instagrami postituse või looga – edastage see otse tagasi kui id / postId Meta API-sse. media on ChatMediaDTO: { name, format, type, uri, raw, length, isUploaded }.

4.3 Sõnumi saatmine (JSON)

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

Keha – 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
  }
}
VäliTüüpKirjeldus
textMessagestring?Sõnumi tekst. Võib olla tühi, kui media on kohal
authorAuthorMessage?0 operaator, 1 klient
isInternalbool?true tähistab sisemist märkust, mida kliendile ei edastata
replyToMessageIdint?Selle sõnumi ID, millele vastatakse
appGuiduuid?Viitamise GUID
mediaMediaDTO?{ name, format, dataBase64, thumbnail, duration, type }

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

Suunamise GUID võidakse edastada ka teel: POST /api/chat/{chatId}/{referralGuid}/message (samuti …/message/v1, …/message/v2).

4.4 Faili või video saatmine (mitmeosaline, v2)

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

Vormiväljade nimed on PascalCase'i tähed ja täppidega

textMessage ja media.file ignoreeritakse vaikselt. Kasutage allolevaid täpseid nimesid.

VormiväliTüüpKirjeldus
TextMessagestringSõnumi tekst
Authorint0 operaator, 1 klient
IsInternalboolSisemine märkus
ReplyToMessageIdintSõnumile vastatakse
AppGuiduuidViitamise GUID
Media.FilebinaryFail ise
Media.NamestringFaili nimi
Media.FormatstringMIME tüüp (video/mp4, image/png, application/pdf)
Media.TypeMediaTypeVt §8.5
Media.DataBase64stringAlternatiiv numbrile Media.File
Media.ThumbnailstringBase64 video eelvaate kaader
Media.DurationdoubleVideo kestus sekundites
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 Muutke vestluse olekut

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

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

200 OK kordab värskendatud objekti.

4.6 Sõnumite olekute värskendamine

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

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

4.7 Kustutage vestlus

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

5. Postitused, rullid ja lood

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

5.1 Loendi postitused, rullid ja lood

GET https://chatapi.smsbat.com/api/meta/posts?platform=instagram&mediaType=story&page=1&perPage=20
X-Authorization-Key: <token>
ParameeterTüüpNõutavKirjeldus
pageinteiLeht, vaikimisi 1
perPageinteiÜksusi lehel, vaikeväärtus 20
idinteiFiltreeri sisemise postituse ID järgi
platformstringeiinstagram või facebook
mediaTypestringeipost, reel või story. Kõik tüübid, kui need on välja jäetud
# 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"
      }
    }
  ]
}

Erinevus – loenduri välja nimi

Swaggeri skeem MetaCommentPostListItemDtoPaginationDTO määratleb total. The sisemised spetsifikatsioonidokumendid totalCount. Swagger genereeritakse koodist, nii et total on tõenäolisem tõde. Parsi total ?? totalCount, kuni see on lahendatud.

VäliKirjeldus
idSisepostituse ID
metaIdVäline postitus / rull / loo ID metas
textPostituse pealkiri
imageUrlPuhverserveri meedia URL, mis on sisestatud mittejärjestikuse tähisega MetaPost.Guid või null
platformfacebook või instagram
mediaTypepost, reel või story
createdAtLoomise kuupäev (platvormi kuupäev või andmebaasi kuupäev)
storyKingitus ainult hinnaga mediaType: "story"
story.idsisemine loo ID; võrdne post.id
story.metaIdVälise loo ID metas
story.urlSalvestatud loomeediumi stabiilne puhverserveri URL; null kui meediumit ei õnnestunud salvestada

Postimeediat teenindab kaks marsruuti: GET /api/meta/post/media/{id:int} tagasisuunamiseks ühilduvus ja GET /api/meta/post/media/{guid:guid}. Uued API vastused ja tagasihelistamised genereerige alati GUID-vorm.

5.2 Kommentaaride loend

GET https://chatapi.smsbat.com/api/meta/comments?platform=instagram&postId=42&page=1&perPage=20
X-Authorization-Key: <token>
ParameeterTüüpNõutavKirjeldus
pageinteiLeht, vaikimisi 1
perPageinteiÜksusi lehel, vaikimisi 20
postIdinteiFiltreeri postituse ID järgi
parentCommentIdinteiAntud kommentaari alamkommentaarid (vastused)
platformstringeifacebook või 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..."
      }
    }
  ]
}
VäliKirjeldus
idSisemine kommentaari ID
metaIdVäline ID metas. null meie ootel vastuse eest, kuni see saadetakse
textKommentaari tekst
createdAtLoomise kuupäev
platformfacebook või instagram
replyStatusnull sissetuleva kasutaja kommentaari jaoks; "pending" / "sent" / "failure" meie vastuse saamiseks
author.type"meta_user" väliskasutaja, "owner" lehe omanik
author.nameAutori nimi
author.metaUserIdUlatuslik kasutaja ID metas; null jaoks "owner"
postPostitus, rull või lugu, millele kommentaar kuulub
post.mediaTypepost, reel või story
post.storyLoo viide { id, metaId, url }, ainult lood
mediaUrlKommentaarile lisatud meedia või null
replyToLapsevanema kommentaar { id, metaId, text }; null tipptasemel

Erinevus – tüüp `author.type`

Sisemine spetsifikatsioon dokumenteerib stringid "meta_user" / "owner". Swaggeri tüübid MetaCommentAuthorType täisarvuna koos loendiga [0, 1]. A JsonStringEnumConverter selgitaks lünka, kuid see pole tõelise vastusega kinnitatud. Kirjutage a parser, mis aktsepteerib mõlemat.

5.3 Kommentaarile vastamine

Paneb vastuse kohaletoimetamiseks järjekorda.

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"

Taotluse sisu: { "text": "Reply text" }

202 Accepted tagastab kommentaariobjekti – sama kujuga kui GET /api/meta/comments – koos replyStatus: "pending" ja metaId: null. Tarnetulemus saabub hiljem kui a source: 13 tagasihelistamine (§6.4).

Erinevus – vastuse kood

Swagger kuulutab 200 ilma kehata; sisemine spetsifikatsioon deklareerib 202 Accepted koos kommentaariga kui kehaga. Kontrolleril puudub tõenäoliselt ProducesResponseType atribuut, jättes Swaggeri vaikeseadeks. Aktsepteerige mis tahes 2xx ja ärge sõltuge kehast.


6. Veebihaagid

SMSBAT saadab POST päringut numbriga application/json teie URL-ile ja ootab HTTP 200 tagasi.

Nullväljad jäetakse täielikult välja

Välja, mille väärtus on null, ei ole tagasihelistamise kehasse üldse serialiseeritud. a sõnum, mis ei tulnud Facebookist ega Instagramist, klahvi MetaUserId lihtsalt pole. Käsitlege “puudub” ja null sama asjana.

6.1 Registreerige tagasihelistamise URL

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
  }'
VäliTüüpKirjeldus
urlstringTeie lõpp-punkt
sourceSendingSourceCallbackSündmuse tüüp, vt §8.2
headerName / headerValuestringTaotlusele lisame meelevaldse autentimispäise (valikuline)
channelTypeChatSourceKanal. 7 Instagrami jaoks. Valikuline
channelEntityIdintKonkreetne ettevõtte konto. Nõuab channelType

Ilma channelTypeta võtab URL sündmusi vastu igalt kanalilt.

Tip

Kommentaaride täielikuks katmiseks on vaja kaks registreerimist: source: 12 uute kommentaaride ja source: 13 vastuse olekute jaoks. Otse- ja luguvastuste jaoks lisage source: 3 (ja 11, kui soovite iga vestlussõnumit).

Ülejäänud toimingud:

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

[
  {
    "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 Uus sõnum ja Instagrami loo vastus (source: 3, 11)

Kasutaja vastus Instagrami loole saabub nendes tagasihelistustes tavalise sõnumina, täiendava tipptaseme Story plokiga:

{
  "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"
  }
}
VäliKirjeldus
ChatId / MessageIdVestluse ja sõnumi identifikaatorid
Author0 kasutaja, 1 operaator
UsernameInstagrami / Facebooki kuvatav nimi või käepide
UserIdSisemine numbriline kasutaja ID SMSBAT-is
MetaUserIdVestluspartneri ulatusega ID metas. Väljuva operaatoriteate puhul tuvastab see ikkagi vestluse metakasutaja, mitte operaatori
ShopIdInstagrami / Facebooki ärikonto sisemine ID
ShopNameEttevõttekonto nimi, mis saadi Metalt ühenduse ajal
MessageTextSõnumi tekst
MessageMediaMeedia URL, kui sõnum on meedia
type_messengerAllikas, 7 Instagrami jaoks
operator_nameOperaatori nimi, kui Author = 1
StoryEsitage ainult sissetulevas loo vastuses
Story.IdInternal Story (MetaPost) ID — kasutatav otse kui id / postId Meta API-s
Story.MetaIdVälise loo ID metas
Story.UrlSalvestatud loomeediumi stabiilne puhverserveri URL. Pole, kui meediumit ei saanud salvestada — plokk Story ja sõnum on endiselt edastatud

`Author` on vestluse API suhtes ümberpööratud

Väljas ChatMessageDTO.author tähendab 0 operaatorit ja 1 klienti. Selles tagasihelistamises on see nii vastupidi: 0 on kasutaja, 1 on operaator. Ärge jagage kaardistamist.

6.3 Uus kommentaar (source: 12)

Põleneb, kui Meta kasutaja kommenteerib Facebooki või Instagrami postitust / Reeli.

Note

Instagram Lugu vastuseid ei edastata numbri source: 12 kaudu. Need saabuvad tavalisena sissetulevad sõnumid numbril source: 3 ja/või 11 blokiga Story – vt §6.2.

{
  "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 Kommentaari vastuse olek (source: 13)

Käivitub pärast seda, kui proovime vastust edastada, olenemata sellest, kas see õnnestub või ebaõnnestub.

{
  "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 Jagatud kommentaaride tagasihelistamise väljad

Mõlemal kommentaaride tagasihelistamisel on üks kehakuju ja need erinevad ainult type võrra.

VäliKirjeldus
type"new_comment" või "comment_status"
platform"facebook" või "instagram"
comment.idSisemine kommentaari ID
comment.metaIdVäline ID metas; null ootel vastuse jaoks enne selle saatmist
comment.parentCommentIdVanema kommentaari ID. Puudub tipptaseme kommentaari jaoks
comment.parentMetaIdVälise vanema kommentaari ID. Puudub tipptasemel
comment.parentCommentTextLapsevanema kommentaari tekst. Puudub tipptasemel
comment.textKommentaari tekst
comment.createdAtLoomise kuupäev
comment.updatedAtViimane värskendus. Puudub, kui kommentaari pole kunagi muudetud
comment.replyStatus"pending" / "sent" / "failure". Puudub sissetuleva kasutaja kommentaari jaoks
comment.author.type"meta_user" või "owner"
comment.author.nameAutori nimi
comment.author.metaUserIdUlatuslik autori ID metas. Puudub "owner"
comment.mediaUrlKommentaari meedia. Puudub, kui seda pole
post.idSisepostituse ID
post.metaIdVäline postitus / rull / loo ID metas
post.textPostituse tekst
post.imageUrlPostitage pildi URL või null
post.createdAtPostituse loomise kuupäev
post.mediaTypeKommentaaride tagasihelistamisel ainult post või reel

6.6 Uus vestlus (source: 7)

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

6.7 Sõnumite ja vestluste oleku muudatused (source: 6 / 5)

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

6.8 Sõnumit muudeti või kustutati (source: 9)

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

6.9 Tippimisnäidik (source: 8)

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

7. Sündmuste küsitlus

Keskkondade jaoks, mis ei saa vastu võtta sissetulevat HTTP-d.

7.1 Sündmuste toomine

GET https://chatapi.smsbat.com/api/chat/callback-events?page=1&perPage=20
Authorization: Bearer <token>
ParameeterKirjeldus
organizationIdValikuline. Võetud märgist, kui see on välja jäetud
page / perPageLeheküljed, vaikeseaded 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"
    }
  ]
}

Igal sündmusel on event_guid, timestamp, organization_id ja callback_type – string, mis vastab §8.2 väärtustele source. Ülejäänud väljad vastavad vastavatele veebihaak §6-s.

7.2 Töödeldud sündmuste kinnitamine

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 }

Juba eemaldatud sündmusi lihtsalt ei arvestata deleted puhul. Tellimine ja korduskatsed on teie poole vastutus.

7.3 Soovitatav tsükkel

  1. Küsitlus GET /api/chat/callback-events ajakava alusel.
  2. Töötlege teenuses olevaid sündmusi.
  3. Saatke töödeldud event_guid loend numbrile /callback-events/processed.
  4. Korrake.

8. Nimekirja viide

8.1 ChatSource — kanal (0–9)

KoodKanal
0Viber
1ViberBot
2TelegramBot
3Whatsapp
4Vidin
5Rozetka
6Facebook
7Instagram
8Prom
9Olx

8.2 SendingSourceCallback — tagasihelistamise sündmuse tüüp (0–13)

KoodSündmus
3Chat — uus vestlussõnum, sealhulgas lugude vastused
5Vestluse olek muudetud
6Sõnumi olek muudetud
7Uus vestlus loodud
8Tippimisnäidik
9Sõnumit värskendati või kustutati
11AnyChatMessage — mis tahes vestlussõnum
12MetaNewComment — uus Instagrami / Facebooki kommentaar
13MetaCommentStatus — meie kommentaari vastuse kohaletoimetamise olek

Enum hõlmab 0–13; ülejäänud väärtusi pole Instagrami integreerimiseks vaja.

8.3 ChatStatus (0–4)

0 Uus, 1 avatud, 2 ootel, 3 OnPause, 4 suletud

8.4 MessageStatus (0–11)

KoodNimi
0UUS
1EDU
2LÜLITATUD
3LOE
4TUNDMATU
5TÖÖTLEMINE
6KÄTTESINUD
7BLOCKED_BY_USER
8USER_NOT_FOUND

Loend hõlmab 0–11. Väärtused 9, 10 ja 11 on API-s olemas, kuid pole veel dokumenteeritud — käsitlege neid kui UNKNOWN.

8,5 MediaType (1–10)

1 foto, 2 fail, 3 heli, 4 video, 5 kleebis, 6 animeeritud kleebis, 7 StickerVideo, 8 animatsioon, 9 hääl, 10 VideoNote

8.6 AuthorMessage – autor vestluse API-s (0–4)

0 operaator, 1 klient, 2 robot, 3 ViberAccount

Nimekiri hõlmab 0–4; väärtus 4 on dokumenteerimata. ** “Uue sõnumi” tagasihelistamisel kasutatakse vastupidine kaardistus** — vt §6.2.

8.7 ChatMessageType (0–2)

0 tekst, 1 foto, 2 fail

8.8 Kommentaar replyStatus

null sissetulev kasutaja kommentaar, "pending" meie vastus on järjekorras, "sent" toimetatud, "failure" kohaletoimetamine ebaõnnestus.


Avatud küsimused

Kolm punkti, kus sisemine spetsifikatsioon ja koodi loodud Swagger ei ühti. Üks Päring tõelise märgiga lahendab need kõik; seni kirjutage klient kaitsvalt.

#KüsimusSpetsifikatsioonSwaggerKuidas kontrollida
1Auth päis /api/meta/*X-Authorization-Keyainult Bearer deklareeritudcurl -i -H "X-Authorization-Key: <token>" ".../api/meta/posts?perPage=1" — oodata 200, mitte 401
2Loenduri väli metavastustestotalCounttotalSama taotlus — lugege juur-JSON-võtit
3author.type tüüp ja reply olekukood"meta_user" / "owner", 202 korpusegaint [0,1], 200 ilma kehatacurl -i .../api/meta/comments?perPage=1 pluss testvastus

Vahepealne juhend:

  • loendur — loe total ?? totalCount;
  • author.type — aktsepteerida nii stringi kui ka täisarvu (0 ↔ meta_user, 1 ↔ owner, vastendus kinnitamisel);
  • reply — käsitle kõiki 2xx kui õnnestumisi, ei vaja keha, võta lõplik olek numbri source: 13 tagasihelistamisel.

Rakendusmärkmed

  • Autentimine erineb lõpp-punkti rühmati — /api/meta/* kasutab numbrit X-Authorization-Key, vestlusi ja operaatorid kasutavad Bearer, restapi aktsepteerib kumbagi.
  • ** Lehtede lehte kirjutatakse kahel viisil** — per_page kohta /api/chat/chats, perPage /api/meta/* ja /api/chat/callback-events.
  • multipart/form-data väljad on PascalCase koos punktitähistusega (Media.File, Media.Type).
  • Nullväljad jäetakse tagasihelistamisel välja – puuduv võti tähendab null.
  • phone on Instagramis tavaliselt null. Tuvastage klient numbriga instagramUser.id / metaUserId ja pood instaAccount.id järgi (filtri väärtus entityId).
  • Story.Id tagasihelistamisest saab otse tagasi kui id / postId Meta API-le.
  • Enne selle süvalingis või vidinas kasutamist kontrollige operaatori JWT numbrit expiresAt.