Kā izmantot Shoply Merchant API
Shoply Merchant API ļauj tirgotājam droši izmantot savus Shoply datus pārskatu rīkos, atbalsta darba plūsmās, plānotajos eksportos un privātās biznesa lietotnēs.
Katra integrācija autentificējas ar atsaucamu, veikalam piesaistītu piekļuves akreditācijas datu vienību, kas izveidota Shoply iestatījumos. Jums nav jādalās ar Shopify Admin API piekļuves tokenu, un integrācija var piekļūt tikai tam veikalam, kas izdevis tās akreditācijas datus.
Ko es varu darīt ar Merchant API?
Jūs varat izmantot Merchant API, lai:
- Eksportētu ikdienas, iknedēļas vai ikmēneša veiktspējas rezultātus izklājlapā vai datu noliktavā.
- Izveidotu privātu paneli sesijām, čatiem, meklējumiem, produktu klikšķiem, pievienošanas grozam notikumiem, pirkumiem un attiecinātajiem ieņēmumiem.
- Uzraudzītu klientu aktivitāti un atklātu neparastas iesaistes izmaiņas.
- Pārskatītu čata un meklēšanas sesijas atbalsta, preču pārvaldības un atbilžu kvalitātes darbam.
- Iegūtu atsevišķas sarunas laika līniju, izmeklējot klienta problēmu.
- Izveidotu, atjauninātu, uzskaitītu un dzēstu pielāgotās zināšanas, ko izmanto Shoply AI.
- Pievienotu ārēju tīmekļa lapu vai augšupielādētu PDF, teksta vai Markdown failu zināšanu bāzei.
- Saskaņotu UTC notikumu datus ar veikala vietējo laika joslu.
Šajā ceļvedī ir dokumentēti septiņi galapunkti. Pieci no tiem ir tie paši galapunkti, ko izmanto Shoply Admin → Analytics, bet divi pārvalda zināšanu bāzi:
| API | Kategorija | Ko tas atgriež |
|---|---|---|
admin_store_analytics | Veiktspēja | Ikdienas, iknedēļas vai ikmēneša veiktspējas rindas un kopsummas |
query_api_usage_count | Iesaistīšanās | Aktivitāšu skaiti, grupēti pēc UTC minūtes vai dienas |
query_sessionized_chat | Sarunas | Čata un meklēšanas sesiju kopsavilkumi |
query_log_visualization | Sarunas | Pilna notikumu laika līnija vienai atlasītai sesijai |
admin_get_store_metadata | Veikala konfigurācija | Veikala laika josla, ko izmanto, lai pareizi attēlotu UTC datus |
admin_store_knowledge | Zināšanas | Pielāgots teksts, ārējas lapas, augšupielādēti faili, dzēšana un atkārtota pārmeklēšana |
user_generated_file | Zināšanu faili | Augšupielādē PDF, teksta vai Markdown failu, pirms tas tiek reģistrēts kā zināšanas |
Tālāk redzamie atbilžu korpusi ir reprezentatīvi piemēri. Jūsu lauki un vērtības atspoguļos aktivitāti, kas reģistrēta jūsu veikalā.
Izvietošanas prasība: Veikala īpašnieka slepenās atslēgas autentifikācijai jābūt izvietotai API serverī, kuru izsaucat. Ja derīga slepenā atslēga atgriež HTTP
403arNo access_token found, šis serveris joprojām izmanto vecāko autentifikācijas kodu, kas atbalsta tikai access token.
Kā izveidot API slepeno atslēgu?
- Atveriet savu Shoply AI administrēšanas paneli.
- Dodieties uz Settings → Store owner API secret.
- Izveidojiet slepeno atslēgu un piešķiriet tai nosaukumu, kas identificē integrāciju, piemēram,
Weekly reporting export. - Nokopējiet slepeno atslēgu, kad tā parādās. Shoply vienkāršā teksta vērtību parāda tikai vienu reizi.
Katra slepenā atslēga ir derīga 90 dienas. Veikalam var būt atsevišķas slepenās atslēgas atsevišķām integrācijām, un jūs varat atsaukt vienu slepeno atslēgu, nepārtraucot pārējo darbību.
Saglabājiet šīs vērtības kā servera puses vides mainīgos:
export SHOPLY_STORE_KEY="your-store.myshopify.com"
export SHOPLY_STORE_OWNER_API_SECRETE="shoply_owner_key_example123.secret-value"SHOPLY_STORE_KEY izmantojiet veikala pastāvīgo myshopify.com domēnu, pat ja pircēji parasti apmeklē pielāgotu domēnu.

Kā darbojas autentifikācija?
Katrs Merchant API pieprasījums nosūta Authorization galveni, kuras vērtība ir JSON virkne:
{
"store_key": "your-store.myshopify.com",
"store_owner_api_secrete": "YOUR_STORE_OWNER_API_SECRET"
}store_owner_api_secrete ir precīzs publiskais lauka nosaukums, ieskaitot tā vēsturisko rakstību. Tas nav Bearer tokens. Ievietojiet pilnu JSON virkni tieši Authorization galvenē.
Glabājiet slepeno atslēgu tikai backend kodā. Neievietojiet to URL, pārlūkprogrammas bundlī, publiskā repozitorijā, analītikas notikumā vai lietotnes žurnālā.
Vai ir oficiālas Python un Node.js pakotnes?
Jā. Shoply publicē divas servera puses pakotnes, kas automātiski pievieno nepieciešamo autentifikāciju un nodrošina Merchant API kā tipizētas funkcijas. Abas pakotnes ir atvērtā pirmkoda un pieejamas GitHub organizācijā shoplyai-public.
Python pakotne
Pakotne shoply-merchant-api atbalsta Python 3.12 un izmanto Pydantic v2 atbilžu modeļus. Instalējiet piesaistīto 2.1.3 laidienu:
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install "git+https://github.com/shoplyai-public/shoply-merchant-api.git@v2.1.3"Iegūstiet jaunākās čata un meklēšanas sesijas kā tipizētus SessionSummary modeļus:
import os
from shoply_merchant_api import ShoplyMerchantClient
with ShoplyMerchantClient(
store_key=os.environ["SHOPLY_STORE_KEY"],
api_secret=os.environ["SHOPLY_STORE_OWNER_API_SECRETE"],
) as shoply:
session_response = shoply.list_sessions(limit=40)
for conversation in session_response.data:
print(conversation.customer_id, conversation.user_questions)Pakotne nodrošina arī funkcijas analītikai, aktivitāšu skaitiem, pilnām sesiju laika līnijām, veikala laika joslai un zināšanu pārvaldībai. Skatiet tās biznesa lietojuma gadījumu ceļvedi un API atsauci .
Node.js un TypeScript pakotne
Repozitorijs shoply-merchant-api-js nodrošina pakotni @shoplyai/merchant-api priekš Node.js 20 vai jaunākas versijas. Tā ir ESM pakotne ar iebūvētām TypeScript deklarācijām un bez izpildlaika atkarībām. Instalējiet piesaistīto 2.1.3 laidienu tieši no GitHub:
npm install "github:shoplyai-public/shoply-merchant-api-js#v2.1.3"Iegūstiet tās pašas jaunākās sesijas no Node.js servera:
import { ShoplyMerchantClient } from "@shoplyai/merchant-api";
const storeKey = process.env.SHOPLY_STORE_KEY;
const apiSecret = process.env.SHOPLY_STORE_OWNER_API_SECRETE;
if (!storeKey || !apiSecret) {
throw new Error("SHOPLY_STORE_KEY and SHOPLY_STORE_OWNER_API_SECRETE are required");
}
const shoply = new ShoplyMerchantClient({
storeKey,
apiSecret,
});
const sessionResponse = await shoply.listSessions({ limit: 40 });
for (const conversation of sessionResponse.data) {
console.log(conversation.customer_id, conversation.user_questions);
}npm pakotne aptver tos pašus Merchant API galapunktus kā Python pakotne. Skatiet tās biznesa lietojuma gadījumu ceļvedi un API atsauci .
Abas pakotnes ir paredzētas uzticamiem backend servisiem, plānotiem uzdevumiem un privātiem iekšējiem rīkiem. Neimportējiet nevienu no pakotnēm veikala vitrīnas kodā un neatklājiet API slepeno atslēgu pārlūkprogrammas bundlī.
Vai es varu izsaukt HTTP API bez pakotnes?
Jā. Merchant API joprojām ir standarta HTTPS API. Tālāk minētie zemā līmeņa Python piemēri izmanto Requests, lai jūs varētu redzēt pilnu datu pārraides līgumu vai integrēt no citas valodas.
Instalējiet Requests, ja jūsu vide to jau neietver:
python -m pip install requestsTālāk esošais palīgs katram pieprasījumam pievieno veikala atslēgu un autentifikācijas galveni:
import json
import os
from typing import Any
import requests
BASE_URL = "https://api.shoplyai.ai"
STORE_KEY = os.environ["SHOPLY_STORE_KEY"]
STORE_OWNER_API_SECRETE = os.environ["SHOPLY_STORE_OWNER_API_SECRETE"]
session = requests.Session()
session.headers.update({
"Authorization": json.dumps({
"store_key": STORE_KEY,
"store_owner_api_secrete": STORE_OWNER_API_SECRETE,
})
})
def shoply_get(api_name: str, **params: Any) -> dict[str, Any]:
"""Call one store-scoped Shoply API and surface HTTP or API-level errors."""
response = session.get(
f"{BASE_URL}/{api_name}",
params={"store_key": STORE_KEY, **params},
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("error") is not None or payload.get("statusCode") not in (None, 200):
raise RuntimeError(payload.get("error", "Shoply API request failed"))
return payload
def shoply_post(
api_name: str,
payload: dict[str, Any] | None = None,
**params: Any,
) -> dict[str, Any]:
"""Write store-scoped data and surface HTTP or API-level errors."""
response = session.post(
f"{BASE_URL}/{api_name}",
params={"store_key": STORE_KEY, **params},
json=payload,
timeout=60,
)
response.raise_for_status()
result = response.json()
if result.get("error") is not None or result.get("statusCode") not in (None, 200):
raise RuntimeError(result.get("error", "Shoply API request failed"))
return resultTālāk minētie piemēri izmanto šo koplietoto klientu. Abi palīgi automātiski pievieno autentificētā veikala atslēgu.
Vai es varu pārvaldīt Shoply AI zināšanas, izmantojot API?
Jā. admin_store_knowledge izmanto GET, lai iegūtu zināšanas, un POST, lai tās izveidotu, atjauninātu, dzēstu vai atkārtoti pārmeklētu. POST, kas izmanto esošu zināšanu ID, atjaunina šo ierakstu; ja tiek izmantots jauns ID, tas izveido jaunu ierakstu.
Pirms atjauninājumu automatizēšanas izplānojiet noderīgas veikala zināšanas, izmantojot piemērus mūsu apmācības ceļvedī.
Zināšanu ierakstīšana var mainīt pircējiem rādītās atbildes. Izmantojiet atsevišķu slepeno atslēgu sistēmai, kas pārvalda zināšanas, pārbaudiet saturu pirms tā nosūtīšanas un nekad neatklājiet šo rakstīšanas tiesības piešķirošo akreditācijas datu vienību veikala vitrīnas JavaScript kodā.
Esošo zināšanu uzskaitīšana
knowledge_payload = shoply_get(
"admin_store_knowledge",
knowledge_id_to_retrieve="_ALL_",
)
for knowledge_id, knowledge in knowledge_payload["data"].items():
print(knowledge_id, knowledge.get("title"))Atbildes paraugs
{
"data": {
"knowledge::shipping-policy": {
"title": "Shipping policy",
"text": "Orders leave our warehouse within two business days.",
"epoch_edit": 1787211246
}
}
}Pielāgota teksta zināšanu izveide vai atjaunināšana
Izvēlieties stabilu, unikālu zināšanu ID. Izmantojiet to pašu ID atkārtoti, kad atjaunināt šo ierakstu.
from time import time
knowledge_id = "knowledge::shipping-policy"
result = shoply_post(
"admin_store_knowledge",
{
knowledge_id: {
"title": "Shipping policy",
"text": (
"Orders leave our warehouse within two business days. "
"Standard delivery normally takes three to five business days."
),
"epoch_edit": int(time()),
}
},
)
print(result)Atbildes paraugs
{
"statusCode": 200
}Veiksmīga atbilde nozīmē, ka zināšanas tika saglabātas. Meklēšanas indeksēšana var aizņemt dažas minūtes, tāpēc jauna atbilde var neparādīties uzreiz. Ja API ziņo, ka saturs tika saglabāts, bet indeksēšana aizkavējas, pirms rakstīšanas atkārtošanas apstipriniet saglabāto ierakstu ar GET.
Ārējas tīmekļa lapas pievienošana
Izmantojiet ID, kas sākas ar external_url::. Ievietojiet pilnu http:// vai https:// URL laukā text.
from time import time
result = shoply_post(
"admin_store_knowledge",
{
"external_url::returns-policy": {
"title": "Returns and exchanges",
"text": "https://www.example.com/policies/returns",
"epoch_edit": int(time()),
}
},
)Zināšanu faila augšupielāde un reģistrēšana
Zināšanu failiem jābūt PDF, TXT vai Markdown formātā un mazākiem par 5 MB. Vispirms augšupielādējiet failu, pēc tam saglabājiet atgriezto privāto S3 atrašanās vietu kā zināšanu ierakstu.
from pathlib import Path
from time import time
file_path = Path("shipping-policy.md")
with file_path.open("rb") as file_handle:
upload_response = session.post(
f"{BASE_URL}/user_generated_file",
params={"store_key": STORE_KEY, "folder": "knowledge_file"},
files={"file": (file_path.name, file_handle, "text/markdown")},
timeout=60,
)
upload_response.raise_for_status()
uploaded = upload_response.json()
if uploaded.get("statusCode") != 200:
raise RuntimeError(uploaded.get("error", "Knowledge file upload failed"))
shoply_post(
"admin_store_knowledge",
{
"knowledge_file::shipping-policy": {
"title": "Shipping policy document",
"text": uploaded["file_url"],
"epoch_edit": int(time()),
}
},
)Augšupielādes atbildes paraugs
{
"message": "File uploaded successfully",
"statusCode": 200,
"file_url": "s3://shoplystores/your-store.myshopify.com/uploads/shipping-policy.md"
}Uztveriet file_url kā necaurspīdīgu privātu atrašanās vietu, ko atgriež Shoply. Nekonstruējiet to un nemainiet to pats.
Zināšanu dzēšana
Dzēšana ir neatgriezeniska. Vispirms iegūstiet pašreizējos ierakstus un nosūtiet tikai tieši tos ID, kurus plānojat noņemt.
result = shoply_post(
"admin_store_knowledge",
{
"knowledge_ids_to_delete": [
"knowledge::shipping-policy",
"external_url::returns-policy",
"knowledge_file::shipping-policy",
]
},
)Vietnes atkārtotas pārmeklēšanas pieprasīšana
Izmantojiet atkārtotu pārmeklēšanu pēc tam, kad tirgotāja vietnē ir mainījies saturs. Parasti tā nav nepieciešama pēc katra pielāgotā teksta atjauninājuma.
result = shoply_post(
"admin_store_knowledge",
re_crawl_ind="true",
)Biznesa lietojuma gadījumi
- Sinhronizējiet piegādes, atgriešanas, garantijas, izmēru vai produktu kopšanas norādes no iekšējās satura sistēmas.
- Publicējiet īslaicīgu kampaņu vai svētku informāciju bez manuālas kopēšanas uz Shoply Admin.
- Pievienojiet politikas tīmekļa lapu vai apstiprinātu dokumentu zināšanu bāzei kā daļu no izvietošanas darbplūsmas.
- Noņemiet novecojušas vadlīnijas, tiklīdz politika vai akcija beidzas.
Merchant API piemēri
1. Veiktspējas analītikas iegūšana
admin_store_analytics nodrošina tabulu Analytics → Summary. Tā atgriež sesijas, čatus, meklējumus, klikšķus, pievienošanas grozam notikumus, pirkumus un attiecinātos ieņēmumus.
Galapunkts
GET https://api.shoplyai.ai/admin_store_analyticsVaicājuma parametri
| Parametrs | Obligāts | Apraksts |
|---|---|---|
store_key | Jā | Pievieno koplietotais klients |
report_type | Jā | daily, weekly vai monthly |
start_date | Ikdienas/iknedēļas | Iekļaujošs UTC datums formātā YYYYMMDD |
end_date | Ikdienas/iknedēļas | Iekļaujošs UTC datums formātā YYYYMMDD |
Ikmēneša pārskati izmanto Shoply saglabāto mēneša vēsturi un neprasa datumu robežas.
Python piemērs
daily_report = shoply_get(
"admin_store_analytics",
report_type="daily",
start_date="20260801",
end_date="20260820",
)
for row in daily_report["data"]:
print(row["date"], row["sessions"], row["purchases"], row["revenue"])
print("Totals:", daily_report["totals"])
# Weekly rows use the Monday of each week as their date label.
weekly_report = shoply_get(
"admin_store_analytics",
report_type="weekly",
start_date="20260701",
end_date="20260820",
)
# Monthly requests do not need start_date or end_date.
monthly_report = shoply_get("admin_store_analytics", report_type="monthly")Atbildes paraugs
{
"data": [
{
"date": "20260820",
"sessions": 42,
"chats": 18,
"searches": 24,
"clicks": 11,
"add_to_cart": 5,
"purchases": 2,
"revenue": "$168.00",
"revenue_usd": "$168.00"
}
],
"totals": {
"date": "totals",
"sessions": 42,
"chats": 18,
"searches": 24,
"clicks": 11,
"add_to_cart": 5,
"purchases": 2,
"revenue": "$168.00",
"revenue_usd": "$168.00"
},
"report_type": "daily"
}Ieņēmumi var ietvert vairāk nekā vienu valūtu. Uztveriet revenue kā attēlojamo tekstu. Izmantojiet revenue_usd, ja jums nepieciešama Shoply rādītā normalizētā vērtība USD.
Biznesa lietojuma gadījumi
- Nosūtiet tirgotājam vai e-komercijas komandai ikdienas pārskatu par ietekmi uz pārdošanu.
- Salīdziniet meklējumus, produktu klikšķus, pievienošanas grozam notikumus un pirkumus, lai noteiktu piltuves atbirumu.
- Pabarojiet iknedēļas vai ikmēneša biznesa inteliģences paneli, neskrāpējot Shoply Admin lapu.
- Izsekojiet attiecinātajiem ieņēmumiem laika gaitā un salīdziniet tos ar preču pārvaldības vai kampaņu izmaiņām.
2. Veikala laika joslas iegūšana
admin_get_store_metadata nodrošina laika joslas emblēmu, kas redzama Analytics → Chat & Search History. Lapa to izmanto, lai pārvērstu UTC aktivitāti veikala vietējā laikā.
Galapunkts
GET https://api.shoplyai.ai/admin_get_store_metadataVaicājuma parametri
| Parametrs | Obligāts | Apraksts |
|---|---|---|
store_key | Jā | Pievieno koplietotais klients |
metadata_key | Jā | Izmantojiet burtisko vērtību time_zone |
Python piemērs
timezone_payload = shoply_get(
"admin_get_store_metadata",
metadata_key="time_zone",
)
timezone = timezone_payload["data"]
print(timezone["ianaTimezone"], timezone["timezoneOffsetMinutes"])Atbildes paraugs
{
"data": {
"ianaTimezone": "America/Los_Angeles",
"timezoneOffset": -7,
"timezoneOffsetMinutes": -420
},
"statusCode": 200
}Biznesa lietojuma gadījumi
- Grupējiet UTC aktivitāti tajās pašās vietējā kalendāra dienās, ko tirgotājs redz Analytics sadaļā.
- Plānojiet ikdienas eksportus pēc tam, kad veikala vietējā diena ir beigusies.
- Marķējiet pārskatus ar nepārprotamu IANA laika joslu, piemēram,
America/Los_Angeles.
Laika joslu nobīdes var mainīties vasaras laika noteikumu dēļ. Ja jūsu pārskatu sistēma to atbalsta, izvēlieties ianaTimezone, nevis pastāvīgi saglabājiet vienu skaitlisku nobīdi.
3. Aktivitāšu skaitu iegūšana
query_api_usage_count atgriež veikala aktivitāti, grupētu pēc UTC datuma vai sākotnējās UTC minūtes. Tas ir arī datu avots aktivitātes diagrammai Analytics → Chat & Search History.
Galapunkts
GET https://api.shoplyai.ai/query_api_usage_countVaicājuma parametri
| Parametrs | Obligāts | Apraksts |
|---|---|---|
start_dt_utc | Jā | UTC sākuma laiks kā YYYY-MM-DD HH:mm:ss |
end_dt_utc | Jā | UTC beigu laiks kā YYYY-MM-DD HH:mm:ss |
groupby | Nē | utc_date ikdienas kopsummām vai utc_date_time minūšu rindām |
Python piemērs
activity = shoply_get(
"query_api_usage_count",
start_dt_utc="2026-08-01 00:00:00",
end_dt_utc="2026-08-20 23:59:59",
groupby="utc_date",
)
for row in activity["data"]:
print(row)Atbildes paraugs
{
"data": [
{
"utc_date": "2026-08-20",
"QA": 18,
"CHAT": 18,
"SEARCH": 20,
"CACHED_SEARCH": 4,
"PRODUCT_SEARCH": 22,
"CLICK": 11,
"ADD_TO_CART": 5,
"CHECKOUT": 2
}
]
}Rindas ietver aktivitātes skaitītājus, kas pieejami attiecīgajā periodā, piemēram, čata jautājumus, meklējumus, klikšķus, pievienošanas grozam notikumus un norēķināšanās notikumus. Skaitītāji bez aktivitātes var nebūt klātesoši, nevis būt iestatīti uz nulli.
Biznesa lietojuma gadījumi
- Izveidojiet stundas vai dienas aktivitātes diagrammu, līdzīgu tai, kas redzama Chat & Search History.
- Atklājiet neparastus trafika kāpumus vai pēkšņus klientu iesaistes kritumus.
- Salīdziniet produktu meklēšanas apjomu ar klikšķiem, pievienošanas grozam notikumiem un norēķināšanos.
- Novērtējiet, kad atbalsta un preču pārvaldības komandām būtu jāpārskata noslogotākie periodi.
4. Čata un meklēšanas sesiju kopsavilkumu iegūšana
query_sessionized_chat atgriež vienu kompaktu ierakstu katrai klienta sesijai. Tas arī nodrošina sesiju sarakstu Analytics → Chat & Search History.
Galapunkts
GET https://api.shoplyai.ai/query_sessionized_chatVaicājuma parametri
| Parametrs | Obligāts | Apraksts |
|---|---|---|
start_dt_utc | Jā | UTC sākuma laiks vai burtiskā vērtība undefined |
end_dt_utc | Jā | UTC beigu laiks vai burtiskā vērtība undefined |
num_sessions | Nē | Sesiju skaits, ko atlasīt, ja viena no robežām ir undefined |
ScanIndexForward | Nē | Izmantojiet false, lai vispirms atlasītu jaunākās sesijas |
Iegūt pēdējās 40 sesijas
summary_payload = shoply_get(
"query_sessionized_chat",
start_dt_utc="undefined",
end_dt_utc="undefined",
num_sessions=40,
ScanIndexForward="false",
)
sessions = summary_payload["data"]
for conversation in sessions:
print(conversation["customer_id"], conversation.get("user_questions", ""))Iegūt sesijas UTC diapazonā
summary_payload = shoply_get(
"query_sessionized_chat",
start_dt_utc="2026-08-20 00:00:00",
end_dt_utc="2026-08-20 23:59:59",
ScanIndexForward="false",
)Ja ir norādītas abas laika robežas, API atgriež sesijas visā pilnajā diapazonā; num_sessions neierobežo šo robežoto vaicājumu.
Atbildes paraugs
{
"data": [
{
"customer_id": "customer-or-session-id",
"user_questions": "Do you have this in blue?\nWhen will it ship?",
"start_timestamp_ms": 1787184000000,
"end_timestamp_ms": 1787184065000,
"session_types": "product information, click",
"customer_email": null,
"customer_info": {},
"sentiment": "positive",
"num_questions": 2,
"num_searches": 1,
"num_clicks": 1
}
]
}Neobligātie lauki atšķiras atkarībā no sesijas. Saglabājiet customer_id, start_timestamp_ms un end_timestamp_ms, ja plānojat iegūt pilno laika līniju.
Biznesa lietojuma gadījumi
- Pārskatiet neseno sarunu izlasi atbilžu kvalitātei un atbalsta apmācībai.
- Atrodiet atkārtotus klientu jautājumus, kuriem būtu jāietekmē produktu apraksti vai BUJ.
- Identificējiet augsta nodoma sesijas, kas satur meklējumus, produktu klikšķus vai citas iepirkšanās darbības.
- Eksportējiet vienu rindu katrai sesijai tendenču analīzei, vienlaikus izvairoties no lielākas notikumu līmeņa slodzes.
5. Vienas pilnas sesijas iegūšana
Nododiet atlasītu kopsavilkumu uz query_log_visualization, lai iegūtu tās klienta, AI, meklēšanas un komercijas notikumus.
Galapunkts
GET https://api.shoplyai.ai/query_log_visualizationVaicājuma parametri
| Parametrs | Obligāts | Apraksts |
|---|---|---|
date_time_utc_start | Jā | Sesijas sākums, formatēts kā UTC YYYY-MM-DD HH:mm:ss |
date_time_utc_end | Jā | Sesijas beigas, formatētas kā UTC YYYY-MM-DD HH:mm:ss |
session_id | Nē | Kopsavilkuma customer_id, izmantots vecākiem vēstures ierakstiem |
start_timestamp_ms | Ieteicams | Kopsavilkuma precīzs sākuma laikspiedols milisekundēs |
Python piemērs
from datetime import datetime, timezone
def utc_from_milliseconds(timestamp_ms: int) -> str:
"""Format a Shoply millisecond timestamp for the history API."""
value = datetime.fromtimestamp(timestamp_ms / 1000, tz=timezone.utc)
return value.strftime("%Y-%m-%d %H:%M:%S")
selected = sessions[0]
timeline_payload = shoply_get(
"query_log_visualization",
date_time_utc_start=utc_from_milliseconds(selected["start_timestamp_ms"]),
date_time_utc_end=utc_from_milliseconds(selected["end_timestamp_ms"]),
session_id=selected["customer_id"],
start_timestamp_ms=selected["start_timestamp_ms"],
)
for event in timeline_payload["data"]:
print(event.get("server_timestamp_ms"), event.get("action_type"))Atbildes paraugs
{
"data": [
{
"action_type": "QA",
"session_id": "customer-or-session-id",
"utc_date_time": "2026-08-20 00:00:00",
"start_timestamp_ms": 1787184000000,
"server_timestamp_ms": 1787184000123,
"Q": {
"question": "Do you have this in blue?",
"question_context": {}
},
"task_id": "task-id",
"list_tokens": [
{
"data_type": "LLMOutput",
"data": "Yes. These blue options are currently available."
}
],
"dict_search_results": {}
}
]
}Laika līnija var saturēt klientu jautājumus, AI atbildes, meklēšanas rezultātus, produktu klikšķus, pievienošanas grozam notikumus, norēķināšanās notikumus un cilvēka aģenta iesaisti. Izmantojiet server_timestamp_ms, lai sakārtotu dažādu tipu notikumus. Vecāki ieraksti var saturēt mazāk lauku.
Biznesa lietojuma gadījumi
- Auditējiet, ko tieši klients jautāja un ko Shoply atbildēja atbalsta izmeklēšanas laikā.
- Pārskatiet atbilžu kvalitāti kopā ar meklēšanas rezultātiem un produktiem, kas tika rādīti pircējam.
- Rekonstruējiet ceļu no jautājuma līdz klikšķim, pievienošanai grozam vai norēķināšanai.
- Diagnosticējiet vienu klienta ziņotu sesiju, nepārlūkojot nesaistītu vēsturi.
Vai es varu izmantot vienu slepeno atslēgu visiem API?
Jā. Derīga store_owner_api_secrete ir piesaistīta vienam veikalam un darbojas visos iepriekš minētajos Merchant API galapunktos. SiteChat kontiem tā pati slepenā atslēga autentificē arī kataloga augšupielādes API. Drošākai darbībai izmantojiet atsevišķas nosauktas slepenās atslēgas atsevišķām sistēmām — piemēram, vienu nakts datu eksportam un citu iekšējam panelim.
Ja kāda integrācija tiek pārtraukta vai kompromitēta, atsauciet tikai tās slepeno atslēgu Shoply iestatījumos. Pārējās integrācijas turpinās darboties.
Kas man būtu jāzina par derīguma termiņu, privātumu un kļūdām?
Pārskatiet arī Shoply datu avotus un privātumu, lai saprastu, kāda informācija ir pieejama klientu atbildēm.
- Veikala īpašnieka API slepenās atslēgas beidzas pēc 90 dienām. Izveidojiet aizstājēju un atjauniniet integrāciju pirms tās derīguma termiņa beigām.
- Shoply standarta čata un meklēšanas vēstures glabāšanas periods arī ir 90 dienas. Slepenās atslēgas derīguma termiņš un datu glabāšana ir atsevišķas politikas.
- Vēstures atbildes var saturēt personas datus, tostarp klientu identifikatorus, e-pasta adreses, aptuvenu atrašanās vietu, jautājumus un iepirkšanās aktivitāti. Glabājiet un apstrādājiet tos saskaņā ar savu privātuma politiku un piemērojamo likumu.
- HTTP
403nozīmē, ka slepenā atslēga trūkst, ir nederīga, tās derīguma termiņš ir beidzies, tā ir atsaukta vai tā pieder citam veikalam. - HTTP
422parasti nozīmē, ka trūkst obligāta vaicājuma parametra vai tam ir nepareizs nosaukums. - HTTP
500vai atbilde arstatusCode: 500nozīmē, ka pieprasījums sasniedza Shoply, bet to nevarēja pabeigt. Pagaidu kļūmju gadījumā mēģiniet vēlreiz ar backoff un sazinieties ar mums, ja kļūda turpinās. - Eksportiem un periodiskiem uzdevumiem izmantojiet ierobežotus UTC diapazonus, lai atbildes paliktu pārvaldāmas.
Vai produktu meklēšana ir daļa no Merchant API?
Shoply publiskajam produktu meklēšanas API ir atšķirīgs autentifikācijas un pieprasījuma līgums. Skatiet Kā piekļūt Shoply AI Search caur API, ja vēlaties produktu meklēšanas rezultātus pircējiem paredzētai pieredzei, nevis privātus tirgotāja datus.
Vai SiteChat tirgotāji var augšupielādēt produktu katalogu?
Jā. SiteChat konti var augšupielādēt strukturētus produktus un produktu attēlus ar to pašu veikala īpašnieka API slepeno atslēgu. Šie kataloga galapunkti ir dokumentēti atsevišķi rakstā How to Upload Your Catalog for SiteChat. Shopify veikali turpina sinhronizēt produktus caur Shopify un neizmanto šos augšupielādes maršrutus.
Lai saņemtu palīdzību ar integrāciju, sazinieties ar Shoply AI.
