Umhlahlandlela wonjiniyela · REST ne-MCP
Vumelanisa isisekelo sakho solwazi
Qhubeka ubhala ohlelweni lwakho olukhona bese uthumela izinguquko ku-Sonny. Lo mhlahlandlela udala isigaba esithi Billing, uvumelanisa i-athikili eluhlaka, bese uyishicilelela izethameli zamakhasimende aqinisekisiwe.
1. Khetha isiteshi bese udala ukhiye
- Vula u-Iziteshi → isiteshi sakho. Kopisha i-ID engemva kuka-/app/sources/ ku-URL ye-dashboard yaso. I-API ibiza le ID yesiteshi ngokuthi sourceId; yehlukile ku-siteId ye-widget naku-slug yomphakathi yesikhungo sosizo.
- Ku-Izilungiselelo → Unjiniyela → Okhiye be-API → Dala ukhiye, nikeza u-kb:read no-kb:write. Khawulela u-Ukufinyelela iziteshi esiteshini ohlose ukusivumelanisa. Londoloza ukhiye oboniswa kanye kuphela kumphathi wezimfihlo weseva yakho.
- Setha okuguquguqukayo okungezansi endaweni ye-backend yakho. Lezi zibonelo zisebenzisa i-curl; shintsha ama-ID anonhlamvu ezinkulu ngamanani abuyiswa yi-Sonny. Wasebenzise esiteshini sokuhlola ngaphambi kokuvumelanisa isikhungo sosizo esisebenzayo.
# Load SONNY_API_KEY from your server's secret manager first.
# SOURCE_ID is the ID in the channel dashboard URL: /app/sources/SOURCE_ID
export SOURCE_ID="YOUR_SOURCE_ID"
export BASE="https://www.usesonny.com/api/v1/sources/$SOURCE_ID"Ukuthola okungaphoqelekile: u-GET /api/v1/sources nethuluzi le-MCP elithi list_sources kubuyisa iziteshi ezifinyelelekayo futhi kudinga u-conversations:read. Awudingi lowo mkhawulo uma usunayo i-ID yesiteshi. Ukuxhuma isizinda kuhlala kungumsebenzi we-dashboard.
Ukusetha okugcwele kokhiye be-API2. Dala noma ubuyekeze isigaba
Sebenzisa i-ID ezinzile evela ohlelweni lwakho lomthombo ku-URL. Ukuthumela i-ID yangaphandle efanayo futhi kubuyekeza isigaba esikhona esikhundleni sokudala esiphindiwe. Ukudala kokuqala kuqalisa isikhungo sosizo salesi siteshi ngokuzenzakalela.
curl --fail-with-body -X PUT "$BASE/categories/by-external-id/billing" \
-H "Authorization: Bearer $SONNY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Billing","position":0}'Lindela u-201 ekudaleni noma u-200 ekubuyekezeni, nesigaba ngaphansi kuka-data. Londoloza u-data.id uma udinga i-ID yesigaba yangaphakathi ye-Sonny. Bhala ama-ID angaphandle ngefomethi ye-URL (URL-encode); wagcine ezinzile ngisho noma izihloko zishintsha.
3. Vumelanisa i-athikili njengohlaka
curl --fail-with-body -X PUT "$BASE/articles/by-external-id/billing-guide" \
-H "Authorization: Bearer $SONNY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Manage billing","body":"## Find your invoices\n\nOpen **Settings → Billing** in your account.","bodyFormat":"markdown","categoryExternalId":"billing","status":"draft"}'Impendulo iqukethe u-data.id ne-HTML ehlanziwe ku-data.body. Vula i-athikili ku-Iziteshi → isiteshi sakho → Isikhungo sosizo ukuze uhlole ukuhlelwa kwayo. I-Markdown iguqulelwa ku-HTML; i-HTML eluhlaza nayo iyamukelwa ngo-bodyFormat: "html" (okuzenzakalelayo). Isihloko se-athikili sehlukile ezihlokweni ezingaphakathi kombhalo.
Sebenzisa u-categoryExternalId ukuze ubhekise esigabeni sesinyathelo 2, noma u-categoryId nge-ID yaso ye-Sonny. Nikeza okukodwa kuphela. Setha noma yikuphi ku-null ukuze ukhiphe i-athikili esigabeni. I-upsert ngayinye idinga isihloko nombhalo; u-PATCH uyatholakala ezinguqukweni ezithile. Ama-athikili amasha aba yizinhlaka ngokuzenzakalela uma u-status engekho.
4. Setha ukufinyelela, bese ushicilela
Kulesi sibonelo sesikhungo esiyimfihlo, qala uxhume ukungena kwamakhasimende okuqinisekisiwe. Dala izethameli bese ulondoloza u-data.id ozibuyisayo:
curl --fail-with-body -X POST "$BASE/audiences" \
-H "Authorization: Bearer $SONNY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Pro customers","rules":{"match":"all","conditions":[{"trait":"plan","op":"in","value":["pro","business"]}]}}'Shintsha u-AUDIENCE_ID, ARTICLE_ID, ne-URL yokungena engezansi. Isicelo sokuqala senza isikhungo sosizo sibe ngu-Kuyasebenza futhi sisikhawulele kumakhasimende e-Pro. Esesibili sishicilela i-athikili. Indlela yokungena yohlelo lwakho kumele ishintshanise i-JWT yekhasimende esayiniwe nesikhungo sosizo; ukusetha u-signInUrl kuphela akungenisi muntu.
curl --fail-with-body -X PATCH "$BASE/help-center" \
-H "Authorization: Bearer $SONNY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled":true,"title":"Acme Help Center","audience":"verified","audienceId":"AUDIENCE_ID","signInUrl":"https://app.example.com/login"}'
# Replace ARTICLE_ID and AUDIENCE_ID with the returned data.id values.
curl --fail-with-body -X PATCH "$BASE/articles/ARTICLE_ID" \
-H "Authorization: Bearer $SONNY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"audienceId":"AUDIENCE_ID","status":"published"}'Sebenzisa i-URL ebuyiswa ngu-GET /help-center ukuze uhlole ukubuka komfundi ongenile nesiphequluli esingangenile. Okhiye be-API ne-MCP basebenza njengabasebenzi futhi bangafunda okuqukethwe ngaphakathi kwemikhawulo yabo; impendulo yabo ephumelelayo ayifakazeli ukuthi ikhasimende lingayibona i-athikili.
Esikhungweni somphakathi, sebenzisa u-audience: "everyone" no-audienceId: null esikhungweni nase-athikili, futhi uhlole nokufinyelela kwesigaba. Ukuze ususe iqembu elinegama kuphela, thumela u-audienceId: null; ukufinyelela kwamakhasimende aqinisekisiwe kuphela kuhlala kunjalo ngaphandle uma ushintsha u-audience ngokuqondile. U-audienceId ongekho ugcina isabelo sangaphambili. Yonke imikhawulo yesikhungo sosizo, yesigaba, neye-athikili kumele ifane.
Imithetho enegama isebenzisa u-match: "all" noma "any", imibandela efika ku-10, namanani anezinhlobo eziqinile. Ama-operator: eq, neq, in, not_in, exists, not_exists, gt, gte, lt, lte. Ukuqhathanisa kwezinombolo kuthatha izinombolo; u-in/not_in uthatha ama-array amanani angu-1–100 alula; u-exists/not_exists akadingi u-value. Izici ezingekho ziyehluleka ukuqhathanisa. Bona ukuziphatha kwemithetho, ukudluliselwa, nokuxazulula izinkinga zokufinyelela.
5. Gcina ukuvumelanisa kusesikhathini
Phinda ubhale ngaphandle kokuphinda okuqukethwe
Phinda u-PUT nge-ID yangaphandle efanayo noma nini lapho umthombo wakho ushintsha. Ama-ID angaphandle ahlukile ngaphakathi kwesikhungo sosizo. Izinkambu zokubuyekeza ezingekho zigcina amanani azo amanje. Shiya u-status kuma-upsert alandelayo ukuze ugcine ukushicilelwa; ukuthumela u-draft ngokuqondile kuhoxisa i-athikili esebenzayo. U-publishedAt usethwa ekushicilelweni kokuqala futhi uhlala ungashintshi. Ungowokufunda kuphela, ngakho izinsuku zokushicilela zomlando azikwazi ukungeniswa. Okuqukethwe okungashintshile nezinguquko ze-metadata kuphela akubangeli ukwenza kabusha ama-embedding okungadingekile.
Funda izinguquko nezibalo
curl --fail-with-body --get "$BASE/articles" \
-H "Authorization: Bearer $SONNY_API_KEY" \
--data-urlencode "page=1" --data-urlencode "limit=100" \
--data-urlencode "status=published" \
--data-urlencode "updatedSince=2026-09-01T00:00:00Z"
# Get the full sanitized HTML and read-only analytics for one article.
curl --fail-with-body "$BASE/articles/ARTICLE_ID" \
-H "Authorization: Bearer $SONNY_API_KEY"Uhlu lwama-athikili nolwezigaba lubuyisa u-data kanye no-pagination: page, limit, total. Amakhasi aqala ku-1; u-limit uzenzakalela ku-50 futhi wamukela kufika ku-100. Gcina izihlungi ezifanayo bese ucela amakhasi kuze kube yilapho u-page × limit efinyelela ku-total. Zombili izinhlu zamukela u-externalId no-updatedSince; ama-athikili aphinde amukele u-categoryId no-status (draft noma published). Sebenzisa isitembu sesikhathi se-ISO esinezoni yesikhathi ku-updatedSince; sihlanganisa amarekhodi abuyekezwe ngaleso sikhathi.
Funda imininingwane ye-athikili ngayinye ukuze uthole umbhalo wayo ogcwele, u-viewCount, helpfulYes, no-helpfulNo. Lezi zibalo zingezokufunda kuphela. U-updatedSince ubala amarekhodi amanje; akabiki okususiwe. Landelela okususiwe ohlelweni lwakho lomthombo bese ususa ngokuqondile irekhodi elihambisanayo le-Sonny uma uhlose lokho.
Layisha isithombe
curl --fail-with-body -X POST "$BASE/media" \
-H "Authorization: Bearer $SONNY_API_KEY" \
-F "file=@billing.png;type=image/png"Sebenzisa u-data.url obuyisiwe ku-syntax yesithombe ye-Markdown noma kwi-elementi ye-HTML ethi img, bese uvumelanisa umbhalo we-athikili. Ukulayisha kwamukela i-JPEG, PNG, GIF, ne-WebP kufika ku-25 MB futhi kudinga isikhungo sosizo esiqalisiwe. Ama-URL alayishiwe ngawomphakathi; umkhawulo wezethameli we-athikili awuyivikeli i-URL yesithombe. I-MCP isebenzisa u-upload_kb_media no-sourceId, fileName, contentType, no-dataBase64 wefayela esikhundleni sedatha yefomu ye-multipart.
Hlela ama-athikili nezigaba
curl --fail-with-body -X PUT "$BASE/articles/reorder" \
-H "Authorization: Bearer $SONNY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ids":["ARTICLE_ID_1","ARTICLE_ID_2"]}'Qala ulande wonke amakhasi ngaphandle kwezihlungi ze-status, zesigaba, noma zosuku, kuhlanganise nezinhlaka. Shintsha ama-ID esibonelo nge-ID ngayinye yama-athikili amanje kanye kuphela, ngokulandelana okufunayo. Sebenzisa u-/categories/reorder ohlwini oluphelele lwezigaba. Ukuhlela kabusha okuphumelelayo kubuyisa u-204 ngaphandle komzimba. Uma uhlu lushintshile noma luqukethe ama-ID angaziwa, aphindiwe, noma angekho, luvuselele ngaphambi kokuzama futhi. Ungaphinde usethe u-position ongeyona inombolo engezansi kuka-zero ekubhaleni ngakunye.
Sebenzisa indlela efanayo nge-MCP
- Xhuma iklayenti lakho le-MCP bese ukhetha indawo yokusebenza efanele. Qinisekisa ukuthi inemikhawulo u-kb:read no-kb:write, nokufinyelela esiteshini sakho.
- Sebenzisa i-ID yesiteshi evela ku-dashboard, noma ubize u-list_sources uma imininingwane yakho yokungena inayo no-conversations:read. Ungalokothi usebenzise i-siteId ye-widget esikhundleni sayo.
- Sebenzisa izibonelo ezinhlanu zokuqala ezingezansi ngokulandelana. Shintsha u-SOURCE_ID nge-ID yesiteshi sakho, no-ARTICLE_ID/AUDIENCE_ID ngo-data.id womphumela ngamunye wangaphambili. Shintsha i-URL yokungena futhi uxhume ukungena ngaphambi kokushicilela.
- Sebenzisa u-list_kb_articles ukuze ubuyekeze izinguquko. Hlela kabusha kuphela ngemva kokuqoqa uhlu oluphelele olungahlungiwe, kuhlanganise nezinhlaka. Vuselela izinhlu zakho ngemva kokubhala okuphumelelayo.
Isibonelo ngasinye sibonisa igama lethuluzi nama-argument alo. Izinkambu ze-upsert ziya ngqo ku-arguments; amathuluzi okubuyekeza afaka izinkambu ezishintshiwe ngaphakathi kuka-updates. Lokhu kungokufakwayo kocingo lwethuluzi, hhayi isicelo se-HTTP esiya ku-endpoint ye-MCP.
1. upsert_kb_category
{
"name": "upsert_kb_category",
"arguments": {
"sourceId": "SOURCE_ID",
"externalId": "billing",
"name": "Billing",
"position": 0
}
}2. upsert_kb_article
{
"name": "upsert_kb_article",
"arguments": {
"sourceId": "SOURCE_ID",
"externalId": "billing-guide",
"title": "Manage billing",
"body": "## Find your invoices\n\nOpen **Settings → Billing** in your account.",
"bodyFormat": "markdown",
"categoryExternalId": "billing",
"status": "draft"
}
}3. create_kb_audience
{
"name": "create_kb_audience",
"arguments": {
"sourceId": "SOURCE_ID",
"name": "Pro customers",
"rules": {
"match": "all",
"conditions": [
{
"trait": "plan",
"op": "in",
"value": [
"pro",
"business"
]
}
]
}
}
}4. update_help_center
{
"name": "update_help_center",
"arguments": {
"sourceId": "SOURCE_ID",
"updates": {
"enabled": true,
"title": "Acme Help Center",
"audience": "verified",
"audienceId": "AUDIENCE_ID",
"signInUrl": "https://app.example.com/login"
}
}
}5. update_kb_article
{
"name": "update_kb_article",
"arguments": {
"sourceId": "SOURCE_ID",
"articleId": "ARTICLE_ID",
"updates": {
"audience": "verified",
"audienceId": "AUDIENCE_ID",
"status": "published"
}
}
}6. list_kb_articles
{
"name": "list_kb_articles",
"arguments": {
"sourceId": "SOURCE_ID",
"page": 1,
"limit": 100,
"updatedSince": "2026-09-01T00:00:00Z"
}
}7. reorder_kb_articles
{
"name": "reorder_kb_articles",
"arguments": {
"sourceId": "SOURCE_ID",
"ids": [
"ARTICLE_ID_1",
"ARTICLE_ID_2"
]
}
}8. update_kb_audience
{
"name": "update_kb_audience",
"arguments": {
"sourceId": "SOURCE_ID",
"audienceId": "AUDIENCE_ID",
"updates": {
"name": "Paid customers"
}
}
}Imisebenzi ehlobene
Izindlela ze-REST ezingezansi zihlobene no-BASE. Funda ireferensi ye-API ukuze uthole yonke inkambu nesakhiwo sempendulo.
| Umsebenzi | REST | MCP |
|---|---|---|
| Bala / thola ama-athikili | GET /articles · GET /articles/{articleId} | list_kb_articles · get_kb_article |
| Bala / thola izigaba | GET /categories · GET /categories/{categoryId} | list_kb_categories · get_kb_category |
| Dala ngaphandle kwe-ID yangaphandle | POST /articles · POST /categories | create_kb_article · create_kb_category |
| Hlela okuqukethwe okukhona | PATCH /articles/{articleId} · PATCH /categories/{categoryId} | update_kb_article · update_kb_category |
| Hlela izigaba ngokulandelana | PUT /categories/reorder | reorder_kb_categories |
| Funda / hlela izilungiselelo zesikhungo sosizo | GET /help-center · PATCH /help-center | get_help_center · update_help_center |
| Bala / hlela izethameli | GET /audiences · PATCH /audiences/{audienceId} | list_kb_audiences · update_kb_audience |
| Susa | DELETE /articles/{articleId} · /categories/{categoryId} · /audiences/{audienceId} | delete_kb_article · delete_kb_category · delete_kb_audience |
Ukususa i-athikili kungokwaphakade. Ukususa isigaba kukhipha ama-athikili aso esigabeni futhi kususe lowo mkhawulo wesigaba odluliselwe. Ukususa izethameli kususa imithetho yazo yezici kodwa okuqukethwe okuxhunyiwe kuhlale kungokwamakhasimende aqinisekisiwe kuphela. Buyekeza ukufinyelela okuthintekayo ngaphambi kokususa; sebenzisa izinhlaka ukuze uhoxise ama-athikili uma ufuna ukuwagcina.
Xazulula izinkinga zokuvumelanisa
- 400 · Isicelo esingavumelekile
- Hlola isihloko/umbhalo noma igama okudingekayo, amagama aqondile ezinkambu, izinhlobo zemithetho ezivumelekile, nama-ID aphelele okuhlela kabusha. Thumela u-categoryId noma u-categoryExternalId, hhayi kokubili.
- 401 · Akugunyaziwe
- Nikeza ukhiye we-Bearer ovumelekile. Hlola ukuthi uphelelwe yisikhathi noma uhoxisiwe yini.
- 403 · Akuvunyelwe
- Hlola imikhawulo yokhiye, izimvume zomnikazi wokhiye, nokukhokha kwendawo yokusebenza. Phinda uxhume iklayenti le-MCP ngokufinyelela okudingekayo uma amathuluzi alo engawokufunda kuphela.
- 404 · Akutholakali
- Qinisekisa ukuthi umthombo ungowendawo yokusebenza ekhethiwe futhi uvunyelwe yimininingwane yokungena. Qalisa isikhungo sosizo esisha ngokudala okuqukethwe kuqala; ukufunda akusidali.
- 409 · Ukungqubuzana
- Landa kabusha okuqukethwe kwamanje bese uxazulula i-ID engqubuzanayo noma ukuhleleka okuphelelwe yisikhathi ngaphambi kokuzama futhi.
- 413 · Kukhulu kakhulu
- Nciphisa isithombe sibe ngaphansi komkhawulo we-25 MB.
- 429 · Umkhawulo wezicelo udlulile
- Linda isikhathi sika-Retry-After ngaphambi kokuzama futhi. Sebenzisa u-RateLimit-Limit, RateLimit-Remaining, no-RateLimit-Reset ukuze uhambise izicelo ngesivinini esifanele.
Imibhalo ehlobene
- Isikhungo sosizo
Shicilela izimpendulo, hlela izigaba, khetha ukufinyelela kwabafundi, futhi ugcine isikhungo sakho sosizo sisesikhathini.
- Izethameli zesikhungo sosizo
Dala amaqembu amakhasimende, yenza isikhungo sakho sosizo sibe yimfihlo, futhi uhlole ukuthi ubani ongafunda impendulo ngayinye.
- I-API yomphakathiBeta
Hlela futhi uvumelanise izingxoxo, yabelana ngomongo wamakhasimende, funda imibiko, futhi uthumele amafayela ngokhiye be-API abanemikhawulo.
- Sonny MCPBeta
Xhuma abasizi be-AI ezindleleni zokusebenza ze-inbox, izinkumbulo zamakhasimende, imibiko, namafayela nge-OAuth noma ngokhiye abanemikhawulo.