Isikhokelo sabaphuhlisi · REST ne-MCP
Vumelanisa isiseko sakho solwazi
Qhubeka ubhala kwinkqubo yakho esele ikhona uze uthumele utshintsho kwiSonny. Esi sikhokelo senza udidi lweBilling, sivumelanisa inqaku elingudrafti, emva koko silipapashela abaphulaphuli abangabathengi abaqinisekisiweyo.
1. Khetha isitishi uze wenze isitshixo
- Vula Izitishi → isitishi sakho. Kopa i-ID emva kwe-/app/sources/ kwi-URL yedashbhodi yaso. I-API ibiza le ID yesitishi ngokuba yi-sourceId; yahlukile kwi-siteId yewijethi nakwi-slug yoluntu yeziko loncedo.
- Kwi-Iisetingi → Umphuhlisi → Izitshixo ze-API → Yenza isitshixo, nika i-kb:read ne-kb:write. Nciphisa Ukufikelela kwizitishi kwisitishi ofuna ukusivumelanisa. Gcina isitshixo esiboniswa kanye kumlawuli weemfihlo weseva yakho.
- Seta izinto eziguqukayo ezingezantsi kwindawo ye-backend yakho. Le mizekelo isebenzisa i-curl; tshintsha ii-ID ezinoonobumba abakhulu ngamaxabiso abuyiswa yiSonny. Yiqhube kwisitishi sovavanyo phambi kokuvumelanisa iziko loncedo elisebenzayo.
# 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"Ukufumanisa okunganyanzelekanga: i-GET /api/v1/sources nesixhobo se-MCP esithi list_sources zibuyisa izitishi ezifikelelekayo kwaye zifuna i-conversations:read. Awulufuni olo mda ukuba sele une-ID yesitishi. Uqhagamshelo lwedomeyini luhlala lungumsebenzi wedashbhodi.
Ulungiselelo olupheleleyo lwesitshixo se-API2. Yenza okanye uhlaziye udidi
Sebenzisa i-ID ezinzileyo evela kwinkqubo yakho engumthombo kwi-URL. Ukuthumela i-ID yangaphandle efanayo kwakhona kuhlaziya udidi olukhoyo endaweni yokwenza oluphindiweyo. Ukwenza kokuqala kuqalisa iziko loncedo lesi sitishi ngokuzenzekelayo.
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 i-201 xa kusenziwa okanye i-200 xa kuhlaziywa, udidi lukwi-data. Gcina i-data.id xa ufuna i-ID yangaphakathi yodidi yeSonny. Khowuda ii-ID zangaphandle ngendlela ye-URL; zigcine zizinzile nokuba izihloko ziyatshintsha.
3. Vumelanisa inqaku njengedrafti
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 iqulethe i-data.id ne-HTML ecocekileyo kwi-data.body. Vula inqaku kwi-Izitishi → isitishi sakho → Iziko loncedo ukuze ujonge ufomatho lwalo. I-Markdown iguqulelwa ibe yi-HTML; i-HTML ekrwada nayo iyamkelwa kusetyenziswa bodyFormat: "html" (okwesiqhelo). Isihloko senqaku sahlukile kwizihloko zomzimba.
Sebenzisa i-categoryExternalId ukubhekisa kudidi olusuka kwinyathelo 2, okanye i-categoryId ye-ID yayo yeSonny. Nika enye kuphela. Seta nayiphi na kwi-null ukuze ususe inqaku kudidi. Yonke i-upsert ifuna isihloko nomzimba; i-PATCH iyafumaneka kuhlelo oluyinxalenye. Amanqaku amatsha aba ziidrafti xa i-status ingafakwanga.
4. Seta ufikelelo, uze upapashe
Kulo mzekelo weziko labucala, qala uqhagamshele ukungena kwabathengi abaqinisekisiweyo. Yenza abaphulaphuli uze ugcine i-data.id ebuyisiweyo:
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"]}]}}'Tshintsha i-AUDIENCE_ID, i-ARTICLE_ID ne-URL yokungena engezantsi. Isicelo sokuqala senza iziko loncedo lisebenze kwaye lilithintele kubathengi bePro. Esesibini sipapasha inqaku. Inkqubo yokungena ye-app yakho kufuneka itshintshiselane nge-JWT yomthengi etyikityiweyo neziko loncedo; ukuseta i-signInUrl kodwa akungenisi mntu.
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 yi-GET /help-center ukuvavanya umboniso womfundi ongeneyo nebrawuza ephumileyo. Izitshixo ze-API ne-MCP zisebenza njengabasebenzi kwaye zingafunda umxholo ngaphakathi kwemida yazo; impendulo yazo ephumeleleyo ayingqini ukuba umthengi angalibona inqaku.
Kwiziko loluntu, sebenzisa audience: "everyone" ne-audienceId: null kwiziko nakwinqaku, uze ujonge nofikelelo lodidi. Ukuze ususe iqela elinegama kuphela, thumela audienceId: null; ufikelelo lwabaqinisekisiweyo kuphela luyahlala ngaphandle kokuba utshintsha i-audience ngokucacileyo. I-audienceId engafakwanga igcina isabelo sangaphambili. Zonke izithintelo zeziko loncedo, zodidi nezenqaku kufuneka zihambelane.
Imithetho enamagama isebenzisa match: "all" okanye "any", ukuya kuthi ga kwiimeko ezili-10, namaxabiso anohlobo olungqongqo. Abaqhubi: eq, neq, in, not_in, exists, not_exists, gt, gte, lt, lte. Uthelekiso lwamanani luthatha amanani; in/not_in zithatha ii-array zamaxabiso ali-1–100; exists/not_exists azifaki value. Iimpawu ezingekhoyo azoneliseki kuthelekiso. Jonga indlela imithetho esebenza ngayo, ilifa nokusombulula iingxaki zofikelelo.
5. Gcina ukuvumelanisa kuhlaziyiwe
Phinda ubhale ngaphandle kokuphinda umxholo
Phinda i-PUT nge-ID yangaphandle efanayo nanini na umthombo wakho utshintsha. Ii-ID zangaphandle zahlukile ngaphakathi kweziko loncedo. Amabala ohlaziyo angafakwanga agcina amaxabiso awo angoku. Musa ukufaka i-status kwii-upsert ezilandelayo ukuze ugcine ukupapashwa; ukuthumela i-draft ngokucacileyo kususa inqaku elisebenzayo. I-publishedAt isetwa xa kupapashwa okokuqala kwaye ihlala ingatshintshi. Ifundwa kuphela, ngoko imihla yokupapasha yembali ayinakungeniswa. Umxholo ongatshintshanga nohlelo lwemetadata kuphela azibangeli ukuphinda kwenziwe ii-embedding ngokungeyomfuneko.
Funda utshintsho nohlalutyo
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"Uluhlu lwamanqaku nolweendidi lubuyisa i-data kunye ne-pagination: page, limit, total. Amaphepha aqala ku-1; i-limit iqala ku-50 kwaye yamkela ukuya kuthi ga ku-100. Gcina izihluzi ezifanayo uze ucele amaphepha de i-page × limit ifikelele kwi-total. Zombini uluhlu lwamkela i-externalId ne-updatedSince; amanqaku amkela ne-categoryId ne-status (draft okanye published). Sebenzisa i-ISO timestamp enexesha lommandla kwi-updatedSince; iquka iirekhodi ezihlaziywe ngelo xesha.
Funda iinkcukacha zenqaku ngalinye ukuze ufumane umzimba walo opheleleyo, i-viewCount, i-helpfulYes ne-helpfulNo. Olu hlalutyo lufundwa kuphela. I-updatedSince idwelisa iirekhodi zangoku; ayixeli ukucinywa. Landelela izinto ezisusiweyo kwinkqubo yakho engumthombo uze ucime ngokucacileyo irekhodi yeSonny ehambelanayo xa kufuneka.
Layisha umfanekiso
curl --fail-with-body -X POST "$BASE/media" \
-H "Authorization: Bearer $SONNY_API_KEY" \
-F "file=@billing.png;type=image/png"Sebenzisa i-data.url ebuyisiweyo kwisintaksi yomfanekiso ye-Markdown okanye kwisiqalelo se-HTML esithi img, uze uvumelanise umzimba wenqaku. Ukulayisha kwamkela i-JPEG, PNG, GIF ne-WebP ukuya kuthi ga kwi-25 MB kwaye kufuna iziko loncedo eliqalisiweyo. Ii-URL ezilayishiweyo zezoluntu; isithintelo sabaphulaphuli benqaku asiyikhuseli i-URL yomfanekiso. I-MCP isebenzisa i-upload_kb_media ene-sourceId, fileName, contentType ne-dataBase64 yefayile endaweni yedatha yefomu ye-multipart.
Lungelelanisa amanqaku neendidi
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"]}'Kuqala landa onke amaphepha ngaphandle kwezihluzi ze-status, zodidi okanye zomhla, kuquka iidrafti. Tshintsha ii-ID zomzekelo ngazo zonke ii-ID zamanqaku zangoku kanye ngalinye, ngokolandelelwano olufunayo. Sebenzisa i-/categories/reorder kuluhlu olupheleleyo lweendidi. Ukulandelelanisa okuphumeleleyo kubuyisa i-204 ngaphandle komzimba. Ukuba uluhlu lutshintshile okanye luquka ii-ID zangaphandle, eziphindiweyo okanye ezingekhoyo, luhlaziye phambi kokuzama kwakhona. Ungaseta ne-position engeyonegative kukubhala ngakunye.
Sebenzisa indlela efanayo nge-MCP
- Qhagamshela umxhasi wakho we-MCP uze ukhethe indawo yokusebenzela echanekileyo. Qinisekisa ukuba ine-kb:read ne-kb:write, nofikelelo kwisitishi sakho.
- Sebenzisa i-ID yesitishi yedashbhodi, okanye ubize list_sources ukuba iinkcukacha zakho zokungena zine-conversations:read. Ungaze ufake endaweni yayo i-siteId yewijethi.
- Qhuba imizekelo emihlanu yokuqala engezantsi ngokulandelelana. Tshintsha i-SOURCE_ID nge-ID yesitishi sakho, ne-ARTICLE_ID/AUDIENCE_ID nge-data.id yesiphumo ngasinye sangaphambili. Tshintsha i-URL yokungena uze uqhagamshele ukungena phambi kokupapasha.
- Sebenzisa i-list_kb_articles ukuphonononga utshintsho. Qhuba ukulandelelanisa kuphela emva kokuqokelela uluhlu olupheleleyo olungahluzwanga, kuquka iidrafti. Hlaziya uluhlu lwakho emva kokubhala okuphumeleleyo.
Umzekelo ngamnye ubonisa igama lesixhobo neengxoxo zaso. Amabala e-upsert angena ngqo kwii-arguments; izixhobo zohlaziyo zibeka amabala atshintshiweyo ngaphakathi kwe-updates. La ngamagalelo okubiza izixhobo, hayi isicelo se-HTTP kwindawo yokugqibela 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 enxulumeneyo
Iindlela ze-REST ezingezantsi zinxulumene ne-BASE. Funda isalathiso se-API ngalo lonke ibala nesikimu sempendulo.
| Umsebenzi | REST | MCP |
|---|---|---|
| Dwelisa / fumana amanqaku | GET /articles · GET /articles/{articleId} | list_kb_articles · get_kb_article |
| Dwelisa / fumana iindidi | GET /categories · GET /categories/{categoryId} | list_kb_categories · get_kb_category |
| Yenza ngaphandle kwe-ID yangaphandle | POST /articles · POST /categories | create_kb_article · create_kb_category |
| Hlela umxholo osele ukhona | PATCH /articles/{articleId} · PATCH /categories/{categoryId} | update_kb_article · update_kb_category |
| Landelelanisa iindidi | PUT /categories/reorder | reorder_kb_categories |
| Funda / hlela iisetingi zeziko loncedo | GET /help-center · PATCH /help-center | get_help_center · update_help_center |
| Dwelisa / hlela abaphulaphuli | GET /audiences · PATCH /audiences/{audienceId} | list_kb_audiences · update_kb_audience |
| Cima | DELETE /articles/{articleId} · /categories/{categoryId} · /audiences/{audienceId} | delete_kb_article · delete_kb_category · delete_kb_audience |
Ukucima inqaku kusisigxina. Ukucima udidi kususa amanqaku alo kudidi kwaye kususa eso sithintelo sodidi esifunyenwe njengelifa. Ukucima abaphulaphuli kususa imithetho yabo yeempawu kodwa kushiye umxholo onxulumeneyo ungowabaqinisekisiweyo kuphela. Phonononga ufikelelo oluchaphazelekayo phambi kokucima; sebenzisa iidrafti ukususa amanqaku xa ufuna ukuwagcina.
Sombulula iingxaki zokuvumelanisa
- 400 · Isicelo esingasebenziyo
- Jonga isihloko/umzimba okanye igama elifunekayo, amagama amabala achanekileyo, iintlobo zemithetho ezisebenzayo nee-ID zokulandelelanisa ezipheleleyo. Thumela i-categoryId okanye i-categoryExternalId, hayi zombini.
- 401 · Akugunyaziswanga
- Nika isitshixo se-Bearer esisebenzayo. Jonga ukuba siphelelwe okanye sirhoxisiwe.
- 403 · Akuvumelekanga
- Jonga imida yesitshixo, iimvume zomnini wesitshixo nentlawulo yendawo yokusebenzela. Phinda uqhagamshele umxhasi we-MCP ngofikelelo olufunekayo ukuba izixhobo zakhe zifundwa kuphela.
- 404 · Ayifumanekanga
- Qinisekisa ukuba umthombo ungowendawo yokusebenzela ekhethiweyo kwaye uvunyelwe ziinkcukacha zokungena. Qalisa iziko loncedo elitsha ngokwenza umxholo kuqala; ukufunda akulenzi.
- 409 · Ungquzulwano
- Phinda ulande umxholo wangoku uze ulungelelanise i-ID engquzulanayo okanye ulandelelwano oludala phambi kokuzama kwakhona.
- 413 · Inkulu kakhulu
- Nciphisa umfanekiso ube ngaphantsi komda we-25 MB.
- 429 · Izicelo zininzi kakhulu
- Linda i-Retry-After phambi kokuzama kwakhona. Sebenzisa i-RateLimit-Limit, i-RateLimit-Remaining ne-RateLimit-Reset ukuze ulinganise izicelo.
Amaxwebhu anxulumeneyo
- Iziko loncedo
Papasha iimpendulo, lungelelanisa iindidi, khetha ufikelelo lwabafundi, uze ugcine iziko lakho loncedo lihlaziyiwe.
- Abaphulaphuli beziko loncedo
Yenza amaqela abathengi, yenza iziko lakho loncedo libe labucala, uze uvavanye ukuba ngubani onokufunda impendulo nganye.
- I-API yoluntuBeta
Hlela uze uvumelanise iincoko, yabelana ngeenkcukacha zabathengi, funda iingxelo uze uthumele iifayile ngezitshixo ze-API ezinemida.
- I-MCP yeSonnyBeta
Qhagamshela abancedisi be-AI kwiinkqubo zebhokisi engenayo, iinkumbulo zabathengi, iingxelo neefayile nge-OAuth okanye ngezitshixo ezinemida.