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ärk | URL |
|---|---|
| Vestluse API + Meta API | https://chatapi.smsbat.com |
| Swagger UI / OpenAPI | https://chatapi.smsbat.com/index.html · …/swagger/v1/swagger.json |
| REST API (organisatsioonid, tagasihelistamise URL-id) | https://restapi.smsbat.com |
| REST API Swagger | https://restapi.smsbat.com/swagger/v1/swagger.json |
| Operaatori veebipaneel | https://chat.smsbat.com |
2. Autentimine
Auth-skeem sõltub lõpp-punkti rühmast. Nende segamine on 401 kõige levinum põhjus.
| Rühm | Pä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>
| Parameeter | Kirjeldus |
|---|---|
chat_raw_id | Vestluse ID |
phone | Telefoninumber rahvusvahelises formaadis |
from | Brändi/ettevõtte konto identifikaator (bm_id) |
source | Vestluse allikas — 7 Instagrami jaoks, vt §8.1 |
token | Kehtiv, 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:
| Parameeter | Tüüp | Kirjeldus |
|---|---|---|
source | ChatSource | 7 piirab tulemusi Instagramiga |
entityId | int | Ettevõtte konto ID. Rakendatakse ainult koos source |
instagram_user_id | int | Instagrami kasutaja ID ChatHubis |
facebook_user_id | int | Facebooki kasutajatunnus ChatHubis |
page / per_page | int | Leheküljed, vaikeseaded 1 / 20 |
status | ChatStatus[] | Vestluse olek, korratav |
search | string | Vabatekstiotsing (nimi, telefon, …) |
organizationId | int | Organisatsiooni ID |
operatorId | int[] | Filtreeri määratud operaatorite järgi |
date | string[] | Kaks piiri: ?date=…&date=… |
isChain | bool | Taastage vestlused kettidena, mis kannavad sõnumeid eelmistest vestlustest |
isUnread, starMark, isOperator, isAIAgent | bool | Lisafiltrid |
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äli | Tähendus |
|---|---|
instaAccount | Instagrami ettevõttekonto (pood). id on filtri väärtus entityId; name on Meta |
instagramUser | klient. name on Instagrami käepide, id on instagram_user_id filtri väärtus |
metaUserId | Kliendi ulatusega ID Meta poolel (string) |
messSource | 7 Instagrami jaoks |
phone | Tavaliselt 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äli | Tüüp | Kirjeldus |
|---|---|---|
textMessage | string? | Sõnumi tekst. Võib olla tühi, kui media on kohal |
author | AuthorMessage? | 0 operaator, 1 klient |
isInternal | bool? | true tähistab sisemist märkust, mida kliendile ei edastata |
replyToMessageId | int? | Selle sõnumi ID, millele vastatakse |
appGuid | uuid? | Viitamise GUID |
media | MediaDTO? | { 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äli | Tüüp | Kirjeldus |
|---|---|---|
TextMessage | string | Sõnumi tekst |
Author | int | 0 operaator, 1 klient |
IsInternal | bool | Sisemine märkus |
ReplyToMessageId | int | Sõnumile vastatakse |
AppGuid | uuid | Viitamise GUID |
Media.File | binary | Fail ise |
Media.Name | string | Faili nimi |
Media.Format | string | MIME tüüp (video/mp4, image/png, application/pdf) |
Media.Type | MediaType | Vt §8.5 |
Media.DataBase64 | string | Alternatiiv numbrile Media.File |
Media.Thumbnail | string | Base64 video eelvaate kaader |
Media.Duration | double | Video 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>
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
page | int | ei | Leht, vaikimisi 1 |
perPage | int | ei | Üksusi lehel, vaikeväärtus 20 |
id | int | ei | Filtreeri sisemise postituse ID järgi |
platform | string | ei | instagram või facebook |
mediaType | string | ei | post, 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äli | Kirjeldus |
|---|---|
id | Sisepostituse ID |
metaId | Väline postitus / rull / loo ID metas |
text | Postituse pealkiri |
imageUrl | Puhverserveri meedia URL, mis on sisestatud mittejärjestikuse tähisega MetaPost.Guid või null |
platform | facebook või instagram |
mediaType | post, reel või story |
createdAt | Loomise kuupäev (platvormi kuupäev või andmebaasi kuupäev) |
story | Kingitus ainult hinnaga mediaType: "story" |
story.id | sisemine loo ID; võrdne post.id |
story.metaId | Välise loo ID metas |
story.url | Salvestatud 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>
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
page | int | ei | Leht, vaikimisi 1 |
perPage | int | ei | Üksusi lehel, vaikimisi 20 |
postId | int | ei | Filtreeri postituse ID järgi |
parentCommentId | int | ei | Antud kommentaari alamkommentaarid (vastused) |
platform | string | ei | facebook 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äli | Kirjeldus |
|---|---|
id | Sisemine kommentaari ID |
metaId | Väline ID metas. null meie ootel vastuse eest, kuni see saadetakse |
text | Kommentaari tekst |
createdAt | Loomise kuupäev |
platform | facebook või instagram |
replyStatus | null sissetuleva kasutaja kommentaari jaoks; "pending" / "sent" / "failure" meie vastuse saamiseks |
author.type | "meta_user" väliskasutaja, "owner" lehe omanik |
author.name | Autori nimi |
author.metaUserId | Ulatuslik kasutaja ID metas; null jaoks "owner" |
post | Postitus, rull või lugu, millele kommentaar kuulub |
post.mediaType | post, reel või story |
post.story | Loo viide { id, metaId, url }, ainult lood |
mediaUrl | Kommentaarile lisatud meedia või null |
replyTo | Lapsevanema 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äli | Tüüp | Kirjeldus |
|---|---|---|
url | string | Teie lõpp-punkt |
source | SendingSourceCallback | Sündmuse tüüp, vt §8.2 |
headerName / headerValue | string | Taotlusele lisame meelevaldse autentimispäise (valikuline) |
channelType | ChatSource | Kanal. 7 Instagrami jaoks. Valikuline |
channelEntityId | int | Konkreetne 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äli | Kirjeldus |
|---|---|
ChatId / MessageId | Vestluse ja sõnumi identifikaatorid |
Author | 0 kasutaja, 1 operaator |
Username | Instagrami / Facebooki kuvatav nimi või käepide |
UserId | Sisemine numbriline kasutaja ID SMSBAT-is |
MetaUserId | Vestluspartneri ulatusega ID metas. Väljuva operaatoriteate puhul tuvastab see ikkagi vestluse metakasutaja, mitte operaatori |
ShopId | Instagrami / Facebooki ärikonto sisemine ID |
ShopName | Ettevõttekonto nimi, mis saadi Metalt ühenduse ajal |
MessageText | Sõnumi tekst |
MessageMedia | Meedia URL, kui sõnum on meedia |
type_messenger | Allikas, 7 Instagrami jaoks |
operator_name | Operaatori nimi, kui Author = 1 |
Story | Esitage ainult sissetulevas loo vastuses |
Story.Id | Internal Story (MetaPost) ID — kasutatav otse kui id / postId Meta API-s |
Story.MetaId | Välise loo ID metas |
Story.Url | Salvestatud 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äli | Kirjeldus |
|---|---|
type | "new_comment" või "comment_status" |
platform | "facebook" või "instagram" |
comment.id | Sisemine kommentaari ID |
comment.metaId | Väline ID metas; null ootel vastuse jaoks enne selle saatmist |
comment.parentCommentId | Vanema kommentaari ID. Puudub tipptaseme kommentaari jaoks |
comment.parentMetaId | Välise vanema kommentaari ID. Puudub tipptasemel |
comment.parentCommentText | Lapsevanema kommentaari tekst. Puudub tipptasemel |
comment.text | Kommentaari tekst |
comment.createdAt | Loomise kuupäev |
comment.updatedAt | Viimane 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.name | Autori nimi |
comment.author.metaUserId | Ulatuslik autori ID metas. Puudub "owner" |
comment.mediaUrl | Kommentaari meedia. Puudub, kui seda pole |
post.id | Sisepostituse ID |
post.metaId | Väline postitus / rull / loo ID metas |
post.text | Postituse tekst |
post.imageUrl | Postitage pildi URL või null |
post.createdAt | Postituse loomise kuupäev |
post.mediaType | Kommentaaride 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>
| Parameeter | Kirjeldus |
|---|---|
organizationId | Valikuline. Võetud märgist, kui see on välja jäetud |
page / perPage | Lehekü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
- Küsitlus
GET /api/chat/callback-eventsajakava alusel. - Töötlege teenuses olevaid sündmusi.
- Saatke töödeldud
event_guidloend numbrile/callback-events/processed. - Korrake.
8. Nimekirja viide
8.1 ChatSource — kanal (0–9)
| Kood | Kanal |
|---|---|
| 0 | Viber |
| 1 | ViberBot |
| 2 | TelegramBot |
| 3 | |
| 4 | Vidin |
| 5 | Rozetka |
| 6 | |
| 7 | |
| 8 | Prom |
| 9 | Olx |
8.2 SendingSourceCallback — tagasihelistamise sündmuse tüüp (0–13)
| Kood | Sündmus |
|---|---|
| 3 | Chat — uus vestlussõnum, sealhulgas lugude vastused |
| 5 | Vestluse olek muudetud |
| 6 | Sõnumi olek muudetud |
| 7 | Uus vestlus loodud |
| 8 | Tippimisnäidik |
| 9 | Sõnumit värskendati või kustutati |
| 11 | AnyChatMessage — mis tahes vestlussõnum |
| 12 | MetaNewComment — uus Instagrami / Facebooki kommentaar |
| 13 | MetaCommentStatus — 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)
| Kood | Nimi |
|---|---|
| 0 | UUS |
| 1 | EDU |
| 2 | LÜLITATUD |
| 3 | LOE |
| 4 | TUNDMATU |
| 5 | TÖÖTLEMINE |
| 6 | KÄTTESINUD |
| 7 | BLOCKED_BY_USER |
| 8 | USER_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üsimus | Spetsifikatsioon | Swagger | Kuidas kontrollida |
|---|---|---|---|---|
| 1 | Auth päis /api/meta/* | X-Authorization-Key | ainult Bearer deklareeritud | curl -i -H "X-Authorization-Key: <token>" ".../api/meta/posts?perPage=1" — oodata 200, mitte 401 |
| 2 | Loenduri väli metavastustes | totalCount | total | Sama taotlus — lugege juur-JSON-võtit |
| 3 | author.type tüüp ja reply olekukood | "meta_user" / "owner", 202 korpusega | int [0,1], 200 ilma kehata | curl -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õiki2xxkui õnnestumisi, ei vaja keha, võta lõplik olek numbrisource: 13tagasihelistamisel.
Rakendusmärkmed
- Autentimine erineb lõpp-punkti rühmati —
/api/meta/*kasutab numbritX-Authorization-Key, vestlusi ja operaatorid kasutavadBearer,restapiaktsepteerib kumbagi. - ** Lehtede lehte kirjutatakse kahel viisil** —
per_pagekohta/api/chat/chats,perPage/api/meta/*ja/api/chat/callback-events. multipart/form-dataväljad on PascalCase koos punktitähistusega (Media.File,Media.Type).- Nullväljad jäetakse tagasihelistamisel välja – puuduv võti tähendab
null. phoneon Instagramis tavaliseltnull. Tuvastage klient numbrigainstagramUser.id/metaUserIdja poodinstaAccount.idjärgi (filtri väärtusentityId).Story.Idtagasihelistamisest saab otse tagasi kuiid/postIdMeta API-le.- Enne selle süvalingis või vidinas kasutamist kontrollige operaatori JWT numbrit
expiresAt.