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

  1. 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.
  2. 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.
  3. 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.
bash
# 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-API

2. 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.

bash
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

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

bash
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.

bash
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

bash
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

bash
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

bash
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

  1. Qhagamshela umxhasi wakho we-MCP uze ukhethe indawo yokusebenzela echanekileyo. Qinisekisa ukuba ine-kb:read ne-kb:write, nofikelelo kwisitishi sakho.
  2. Sebenzisa i-ID yesitishi yedashbhodi, okanye ubize list_sources ukuba iinkcukacha zakho zokungena zine-conversations:read. Ungaze ufake endaweni yayo i-siteId yewijethi.
  3. 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.
  4. 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
Ukubiza isixhobo se-MCP
{
  "name": "upsert_kb_category",
  "arguments": {
    "sourceId": "SOURCE_ID",
    "externalId": "billing",
    "name": "Billing",
    "position": 0
  }
}
2. upsert_kb_article
Ukubiza isixhobo se-MCP
{
  "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
Ukubiza isixhobo se-MCP
{
  "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
Ukubiza isixhobo se-MCP
{
  "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
Ukubiza isixhobo se-MCP
{
  "name": "update_kb_article",
  "arguments": {
    "sourceId": "SOURCE_ID",
    "articleId": "ARTICLE_ID",
    "updates": {
      "audience": "verified",
      "audienceId": "AUDIENCE_ID",
      "status": "published"
    }
  }
}
6. list_kb_articles
Ukubiza isixhobo se-MCP
{
  "name": "list_kb_articles",
  "arguments": {
    "sourceId": "SOURCE_ID",
    "page": 1,
    "limit": 100,
    "updatedSince": "2026-09-01T00:00:00Z"
  }
}
7. reorder_kb_articles
Ukubiza isixhobo se-MCP
{
  "name": "reorder_kb_articles",
  "arguments": {
    "sourceId": "SOURCE_ID",
    "ids": [
      "ARTICLE_ID_1",
      "ARTICLE_ID_2"
    ]
  }
}
8. update_kb_audience
Ukubiza isixhobo se-MCP
{
  "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.

Imisebenzi enxulumeneyo ye-REST ne-MCP yesiseko solwazi
UmsebenziRESTMCP
Dwelisa / fumana amanqakuGET /articles · GET /articles/{articleId}list_kb_articles · get_kb_article
Dwelisa / fumana iindidiGET /categories · GET /categories/{categoryId}list_kb_categories · get_kb_category
Yenza ngaphandle kwe-ID yangaphandlePOST /articles · POST /categoriescreate_kb_article · create_kb_category
Hlela umxholo osele ukhonaPATCH /articles/{articleId} · PATCH /categories/{categoryId}update_kb_article · update_kb_category
Landelelanisa iindidiPUT /categories/reorderreorder_kb_categories
Funda / hlela iisetingi zeziko loncedoGET /help-center · PATCH /help-centerget_help_center · update_help_center
Dwelisa / hlela abaphulaphuliGET /audiences · PATCH /audiences/{audienceId}list_kb_audiences · update_kb_audience
CimaDELETE /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