Kaip naudoti Shoply Merchant API
Shoply Merchant API leidžia prekybininkui saugiai naudoti savo Shoply duomenis ataskaitų teikimo įrankiuose, palaikymo darbo eigose, suplanuotuose eksportuose ir privačiose verslo programose.
Kiekviena integracija autentifikuojama naudojant atšaukiamą, parduotuvės apimties prisijungimo duomenį, sukurtą Shoply Settings. Jums nereikia dalintis Shopify Admin API prieigos raktu, o integracija gali pasiekti tik tą parduotuvę, kuri išdavė jos prisijungimo duomenį.
Ką galiu daryti su Merchant API?
Merchant API galite naudoti, kad:
- Eksportuotumėte dienos, savaitės ar mėnesio našumo rezultatus į skaičiuoklę ar duomenų saugyklą.
- Sukurtumėte privatų prietaisų skydelį sesijoms, pokalbiams, paieškoms, produktų paspaudimams, įdėjimo į krepšelį įvykiams, pirkimams ir priskirtoms pajamoms.
- Stebėtumėte klientų veiklą ir aptiktumėte neįprastus įsitraukimo pokyčius.
- Peržiūrėtumėte pokalbių ir paieškos sesijas palaikymo, prekių pristatymo ir atsakymų kokybės darbams.
- Gauti atskiro pokalbio laiko juostą tiriant kliento problemą.
- Kurti, atnaujinti, išvardyti ir ištrinti Shoply AI naudojamas pasirinktines žinias.
- Pridėti išorinį tinklalapį arba įkeltą PDF, teksto ar Markdown failą į žinių bazę.
- Suderinti UTC įvykių duomenis su vietine parduotuvės laiko zona.
Šiame vadove aprašomi septyni endpoint’ai. Penki iš jų yra tie patys endpoint’ai, kuriuos naudoja Shoply Admin → Analytics, o du valdo žinių bazę:
| API | Kategorija | Ką grąžina |
|---|---|---|
admin_store_analytics | Našumas | Dienos, savaitės ar mėnesio našumo eilutės ir sumos |
query_api_usage_count | Įsitraukimas | Veiklos skaičiai, sugrupuoti pagal UTC minutę arba dieną |
query_sessionized_chat | Pokalbiai | Pokalbių ir paieškos sesijų santraukos |
query_log_visualization | Pokalbiai | Visa vienos pasirinktos sesijos įvykių laiko juosta |
admin_get_store_metadata | Parduotuvės konfigūracija | Parduotuvės laiko zona, naudojama teisingam UTC duomenų rodymui |
admin_store_knowledge | Žinios | Pasirinktinis tekstas, išoriniai puslapiai, įkelti failai, trynimas ir pakartotinis nuskaitymas |
user_generated_file | Žinių failai | Įkelia PDF, teksto ar Markdown failą prieš jį užregistruojant kaip žinias |
Toliau pateikti atsakymų turiniai yra reprezentatyvūs pavyzdžiai. Jūsų laukai ir reikšmės atspindės jūsų parduotuvei užfiksuotą veiklą.
Diegimo reikalavimas: Parduotuvės savininko slapto rakto autentifikavimas turi būti įdiegtas API serveryje, į kurį kreipiatės. Jei galiojantis slaptas raktas grąžina HTTP
403suNo access_token found, tame serveryje vis dar veikia senesnis autentifikavimo kodas, palaikantis tik prieigos raktą.
Kaip sukurti API slaptą raktą?
- Atidarykite savo Shoply AI administravimo aplinką.
- Eikite į Settings → Store owner API secret.
- Sukurkite slaptą raktą ir suteikite jam integraciją identifikuojantį pavadinimą, pavyzdžiui,
Weekly reporting export. - Nukopijuokite slaptą raktą, kai jis pasirodys. Shoply paprasto teksto reikšmę parodo tik vieną kartą.
Kiekvienas slaptas raktas galioja 90 dienų. Parduotuvė gali turėti atskirus slaptus raktus atskiroms integracijoms, ir galite atšaukti vieną slaptą raktą nenutraukdami kitų veikimo.
Išsaugokite šias reikšmes kaip serverio pusės aplinkos kintamuosius:
export SHOPLY_STORE_KEY="your-store.myshopify.com"
export SHOPLY_STORE_OWNER_API_SECRETE="shoply_owner_key_example123.secret-value"SHOPLY_STORE_KEY naudokite nuolatinį parduotuvės myshopify.com domeną, net jei pirkėjai paprastai lankosi pasirinktiniame domene.

Kaip veikia autentifikavimas?
Kiekviena Merchant API užklausa siunčia Authorization antraštę, kurios reikšmė yra JSON eilutė:
{
"store_key": "your-store.myshopify.com",
"store_owner_api_secrete": "YOUR_STORE_OWNER_API_SECRET"
}store_owner_api_secrete yra tikslus viešo lauko pavadinimas, įskaitant istorinę jo rašybą. Tai nėra Bearer raktas. Įdėkite visą JSON eilutę tiesiai į Authorization antraštę.
Slaptą raktą laikykite tik backend kode. Nedėkite jo į URL, naršyklės paketą, viešą repozitoriją, analitikos įvykį ar programos žurnalą.
Ar yra oficialūs Python ir Node.js paketai?
Taip. Shoply skelbia du serverio pusės paketus, kurie automatiškai prideda reikiamą autentifikavimą ir pateikia Merchant API kaip tipizuotas funkcijas. Abu paketai yra atvirojo kodo pagal shoplyai-public GitHub organizaciją.
Python paketas
Paketas shoply-merchant-api palaiko Python 3.12 ir naudoja Pydantic v2 atsakymų modelius. Įdiekite fiksuotą 2.1.3 versiją:
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"Gaukite naujausias pokalbių ir paieškos sesijas kaip tipizuotus SessionSummary modelius:
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)Paketas taip pat pateikia funkcijas analitikai, veiklos skaičiams, pilnoms sesijų laiko juostoms, parduotuvės laiko zonai ir žinių valdymui. Žr. jo verslo naudojimo atvejų vadovą ir API nuorodą .
Node.js ir TypeScript paketas
Repozitorija shoply-merchant-api-js pateikia @shoplyai/merchant-api paketą, skirtą Node.js 20 ar naujesnei versijai. Tai ESM paketas su integruotomis TypeScript deklaracijomis ir be vykdymo aplinkos priklausomybių. Įdiekite fiksuotą 2.1.3 versiją tiesiai iš GitHub:
npm install "github:shoplyai-public/shoply-merchant-api-js#v2.1.3"Gaukite tas pačias naujausias sesijas iš Node.js serverio:
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 paketas apima tuos pačius Merchant API endpoint’us kaip ir Python paketas. Žr. jo verslo naudojimo atvejų vadovą ir API nuorodą .
Abu paketai skirti patikimoms backend paslaugoms, suplanuotoms užduotims ir privatiems vidiniams įrankiams. Neimportuokite nė vieno paketo į vitrinos kodą ir neatskleiskite API slapto rakto naršyklės pakete.
Ar galiu kviesti HTTP API be paketo?
Taip. Merchant API išlieka standartine HTTPS API. Toliau pateikti žemo lygio Python pavyzdžiai naudoja Requests, kad galėtumėte matyti visą perdavimo sutartį arba integruoti iš kitos kalbos.
Įdiekite Requests, jei jūsų aplinkoje jo dar nėra:
python -m pip install requestsToliau pateikta pagalbinė funkcija prie kiekvienos užklausos prideda parduotuvės raktą ir autentifikavimo antraštę:
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 resultToliau pateikti pavyzdžiai naudoja šį bendrą klientą. Abi pagalbinės funkcijos automatiškai prideda autentifikuotą parduotuvės raktą.
Ar galiu valdyti Shoply AI žinias per API?
Taip. admin_store_knowledge naudoja GET žinioms gauti ir POST joms kurti, atnaujinti, trinti arba pakartotinai nuskaityti. POST, kuris naudoja esamą žinių ID, atnaujina tą įrašą; naudojant naują ID, įrašas sukuriamas.
Prieš automatizuodami atnaujinimus, suplanuokite naudingas parduotuvės žinias naudodamiesi pavyzdžiais mūsų mokymo vadove.
Žinių įrašymai gali pakeisti pirkėjams rodomus atsakymus. Naudokite atskirą slaptą raktą sistemai, kuri valdo žinias, prieš siųsdami patvirtinkite turinį ir niekada neatskleiskite šio rašymo teises turinčio prisijungimo duomens vitrinos JavaScript kode.
Esamų žinių sąrašo gavimas
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"))Atsakymo pavyzdys
{
"data": {
"knowledge::shipping-policy": {
"title": "Shipping policy",
"text": "Orders leave our warehouse within two business days.",
"epoch_edit": 1787211246
}
}
}Pasirinktinio tekstinio žinių įrašo kūrimas arba atnaujinimas
Pasirinkite stabilų, unikalų žinių ID. Atnaujindami tą įrašą, naudokite tą patį ID.
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)Atsakymo pavyzdys
{
"statusCode": 200
}Sėkmingas atsakymas reiškia, kad žinios buvo išsaugotos. Paieškos indeksavimas gali užtrukti kelias minutes, todėl naujas atsakymas gali pasirodyti ne iš karto. Jei API praneša, kad turinys buvo išsaugotas, tačiau indeksavimas vėluoja, prieš kartodami įrašymą patvirtinkite išsaugotą įrašą naudodami GET.
Išorinio tinklalapio pridėjimas
Naudokite ID, prasidedantį external_url::. Į text įdėkite visą http:// arba https:// URL.
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()),
}
},
)Žinių failo įkėlimas ir registravimas
Žinių failai turi būti PDF, TXT arba Markdown formato ir mažesni nei 5 MB. Pirmiausia įkelkite failą, tada išsaugokite grąžintą privatų S3 adresą kaip žinių įrašą.
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()),
}
},
)Įkėlimo atsakymo pavyzdys
{
"message": "File uploaded successfully",
"statusCode": 200,
"file_url": "s3://shoplystores/your-store.myshopify.com/uploads/shipping-policy.md"
}Laikykite file_url nepermatoma privačia vieta, kurią grąžino Shoply. Nekonstruokite ir nekeiskite jos patys.
Žinių trynimas
Trynimas yra negrįžtamas. Pirmiausia gaukite dabartinius įrašus ir siųskite tik tikslius ID, kuriuos ketinate pašalinti.
result = shoply_post(
"admin_store_knowledge",
{
"knowledge_ids_to_delete": [
"knowledge::shipping-policy",
"external_url::returns-policy",
"knowledge_file::shipping-policy",
]
},
)Svetainės pakartotinio nuskaitymo užklausa
Naudokite pakartotinį nuskaitymą po to, kai pasikeičia prekybininko svetainės turinys. Paprastai tai nėra būtina po kiekvieno pasirinktinio teksto atnaujinimo.
result = shoply_post(
"admin_store_knowledge",
re_crawl_ind="true",
)Verslo naudojimo atvejai
- Sinchronizuoti pristatymo, grąžinimo, garantijos, dydžių ar produkto priežiūros gaires iš vidinės turinio sistemos.
- Skelbti laikiną kampanijos ar šventinę informaciją rankiniu būdu jos nekopijuojant į Shoply Admin.
- Pridėti taisyklių tinklalapį arba patvirtintą dokumentą į žinių bazę kaip diegimo darbo eigos dalį.
- Pašalinti pasenusias gaires iš karto, kai baigiasi taisyklė ar akcija.
Merchant API pavyzdžiai
1. Našumo analitikos gavimas
admin_store_analytics maitina Analytics → Summary lentelę. Jis grąžina sesijas, pokalbius, paieškas, paspaudimus, įdėjimo į krepšelį įvykius, pirkimus ir priskirtas pajamas.
Endpoint
GET https://api.shoplyai.ai/admin_store_analyticsUžklausos parametrai
| Parametras | Privalomas | Aprašymas |
|---|---|---|
store_key | Taip | Prideda bendras klientas |
report_type | Taip | daily, weekly arba monthly |
start_date | Dienos / savaitės | Įtraukianti UTC data formatu YYYYMMDD |
end_date | Dienos / savaitės | Įtraukianti UTC data formatu YYYYMMDD |
Mėnesio ataskaitose naudojama Shoply saugoma mėnesinė istorija, todėl datų ribų nereikia.
Python pavyzdys
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")Atsakymo pavyzdys
{
"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"
}Pajamos gali apimti daugiau nei vieną valiutą. revenue laikykite rodymo tekstu. Kai reikia Shoply rodomos normalizuotos USD reikšmės, naudokite revenue_usd.
Verslo naudojimo atvejai
- Siųsti kasdienę pardavimų poveikio santrauką prekybininkui arba el. prekybos komandai.
- Palyginti paieškas, produktų paspaudimus, įdėjimo į krepšelį įvykius ir pirkimus, kad rastumėte konversijos piltuvėlio nutrūkimus.
- Maitinti savaitinį ar mėnesinį verslo analitikos prietaisų skydelį nebraukiant duomenų iš Shoply Admin puslapio.
- Stebėti priskirtas pajamas laikui bėgant ir lyginti jas su prekių pateikimo ar kampanijų pokyčiais.
2. Parduotuvės laiko zonos gavimas
admin_get_store_metadata pateikia laiko zonos žymą, rodomą Analytics → Chat & Search History. Puslapis ją naudoja UTC veiklai paversti į vietinį parduotuvės laiką.
Endpoint
GET https://api.shoplyai.ai/admin_get_store_metadataUžklausos parametrai
| Parametras | Privalomas | Aprašymas |
|---|---|---|
store_key | Taip | Prideda bendras klientas |
metadata_key | Taip | Naudokite tiesioginę reikšmę time_zone |
Python pavyzdys
timezone_payload = shoply_get(
"admin_get_store_metadata",
metadata_key="time_zone",
)
timezone = timezone_payload["data"]
print(timezone["ianaTimezone"], timezone["timezoneOffsetMinutes"])Atsakymo pavyzdys
{
"data": {
"ianaTimezone": "America/Los_Angeles",
"timezoneOffset": -7,
"timezoneOffsetMinutes": -420
},
"statusCode": 200
}Verslo naudojimo atvejai
- Grupuoti UTC veiklą į tas pačias vietines kalendorines dienas, kurias prekybininkas mato Analytics.
- Suplanuoti kasdienius eksportus po to, kai pasibaigia vietinė parduotuvės diena.
- Žymėti ataskaitas nedviprasmiška IANA laiko zona, pavyzdžiui,
America/Los_Angeles.
Laiko zonų poslinkiai gali keistis dėl vasaros laiko taisyklių. Jei jūsų ataskaitų sistema tai palaiko, teikite pirmenybę ianaTimezone, o ne nuolat išsaugokite vieną skaitinį poslinkį.
3. Veiklos skaičių gavimas
query_api_usage_count grąžina parduotuvės veiklą, sugrupuotą pagal UTC datą arba pradinę UTC minutę. Tai taip pat yra veiklos diagramos šaltinis skiltyje Analytics → Chat & Search History.
Endpoint
GET https://api.shoplyai.ai/query_api_usage_countUžklausos parametrai
| Parametras | Privalomas | Aprašymas |
|---|---|---|
start_dt_utc | Taip | UTC pradžios laikas formatu YYYY-MM-DD HH:mm:ss |
end_dt_utc | Taip | UTC pabaigos laikas formatu YYYY-MM-DD HH:mm:ss |
groupby | Ne | utc_date dienos sumoms arba utc_date_time minučių eilutėms |
Python pavyzdys
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)Atsakymo pavyzdys
{
"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
}
]
}Eilutėse pateikiami tam laikotarpiui prieinami veiklos skaitikliai, tokie kaip pokalbių klausimai, paieškos, paspaudimai, įdėjimo į krepšelį įvykiai ir atsiskaitymo įvykiai. Skaitiklių be veiklos gali nebūti, užuot juos nustačius į nulį.
Verslo naudojimo atvejai
- Sukurti valandinę arba dieninę veiklos diagramą, panašią į esančią Chat & Search History.
- Aptikti neįprastus srauto šuolius ar staigius klientų įsitraukimo kritimus.
- Palyginti produktų paieškos apimtį su paspaudimais, įdėjimo į krepšelį įvykiais ir atsiskaitymais.
- Įvertinti, kada palaikymo ir prekių pateikimo komandos turėtų peržiūrėti aktyviausius laikotarpius.
4. Pokalbių ir paieškos sesijų santraukų gavimas
query_sessionized_chat grąžina po vieną kompaktišką įrašą kiekvienai kliento sesijai. Jis taip pat maitina sesijų sąrašą skiltyje Analytics → Chat & Search History.
Endpoint
GET https://api.shoplyai.ai/query_sessionized_chatUžklausos parametrai
| Parametras | Privalomas | Aprašymas |
|---|---|---|
start_dt_utc | Taip | UTC pradžios laikas arba tiesioginė reikšmė undefined |
end_dt_utc | Taip | UTC pabaigos laikas arba tiesioginė reikšmė undefined |
num_sessions | Ne | Sesijų skaičius, kurį reikia parinkti, kai viena iš ribų yra undefined |
ScanIndexForward | Ne | Naudokite false, kad pirmiausia būtų parinktos naujausios sesijos |
Gauti naujausias 40 sesijų
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", ""))Gauti sesijas UTC intervale
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",
)Kai pateikiamos abi laiko ribos, API grąžina sesijas visame intervale; num_sessions šios apribotos užklausos neriboja.
Atsakymo pavyzdys
{
"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
}
]
}Pasirinktiniai laukai skiriasi priklausomai nuo sesijos. Išsaugokite customer_id, start_timestamp_ms ir end_timestamp_ms, jei planuojate gauti visą laiko juostą.
Verslo naudojimo atvejai
- Peržiūrėti naujausių pokalbių pavyzdį atsakymų kokybei ir palaikymo mokymams.
- Rasti pasikartojančius klientų klausimus, kurie turėtų daryti įtaką produktų aprašymams ar DUK.
- Nustatyti didelio ketinimo sesijas, kuriose yra paieškų, produktų paspaudimų ar kitų apsipirkimo veiksmų.
- Eksportuoti po vieną eilutę kiekvienai sesijai tendencijų analizei, vengiant didesnio įvykių lygio duomenų kiekio.
5. Vienos pilnos sesijos gavimas
Perduokite pasirinktą santrauką į query_log_visualization, kad gautumėte jos kliento, AI, paieškos ir komercijos įvykius.
Endpoint
GET https://api.shoplyai.ai/query_log_visualizationUžklausos parametrai
| Parametras | Privalomas | Aprašymas |
|---|---|---|
date_time_utc_start | Taip | Sesijos pradžia, suformatuota kaip UTC YYYY-MM-DD HH:mm:ss |
date_time_utc_end | Taip | Sesijos pabaiga, suformatuota kaip UTC YYYY-MM-DD HH:mm:ss |
session_id | Ne | Santraukos customer_id, naudojamas senesniems istorijos įrašams |
start_timestamp_ms | Rekomenduojamas | Tikslus santraukos pradžios laiko žymos milisekundėmis laikas |
Python pavyzdys
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"))Atsakymo pavyzdys
{
"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": {}
}
]
}Laiko juostoje gali būti kliento klausimų, AI atsakymų, paieškos rezultatų, produktų paspaudimų, įdėjimo į krepšelį įvykių, atsiskaitymo įvykių ir žmogaus agento dalyvavimo. Naudokite server_timestamp_ms, kad surikiuotumėte mišrius įvykių tipus. Senesniuose įrašuose gali būti mažiau laukų.
Verslo naudojimo atvejai
- Patikrinti, ko tiksliai klientas klausė ir ką Shoply atsakė per palaikymo tyrimą.
- Peržiūrėti atsakymų kokybę kartu su pirkėjui parodytais paieškos rezultatais ir produktais.
- Atkurti kelią nuo klausimo iki paspaudimo, įdėjimo į krepšelį ar atsiskaitymo.
- Diagnozuoti vieną kliento nurodytą sesiją neieškant per nesusijusią istoriją.
Ar galiu naudoti vieną slaptą raktą visiems API?
Taip. Galiojantis store_owner_api_secrete yra apribotas vienai parduotuvei ir veikia visuose aukščiau nurodytuose Merchant API endpoint’uose. SiteChat paskyroms tas pats slaptas raktas taip pat autentifikuoja katalogo įkėlimo API. Saugesniam veikimui naudokite atskirus pavadintus slaptus raktus atskiroms sistemoms — pavyzdžiui, vieną naktiniam duomenų eksportui, o kitą vidiniam prietaisų skydeliui.
Jei viena integracija nebenaudojama arba buvo pažeista, atšaukite tik jos slaptą raktą Shoply Settings. Kitos integracijos toliau veiks.
Ką turėčiau žinoti apie galiojimo pabaigą, privatumą ir klaidas?
Taip pat peržiūrėkite Shoply duomenų šaltinius ir privatumą, kad suprastumėte, kokia informacija yra prieinama klientų atsakymams.
- Parduotuvės savininko API slapti raktai baigia galioti po 90 dienų. Sukurkite pakaitinį raktą ir atnaujinkite integraciją iki jo galiojimo pabaigos datos.
- Standartinis Shoply pokalbių ir paieškos istorijos saugojimo laikotarpis taip pat yra 90 dienų. Slapto rakto galiojimo pabaiga ir duomenų saugojimas yra atskiros politikos.
- Istorijos atsakymuose gali būti asmens duomenų, įskaitant klientų identifikatorius, el. pašto adresus, apytikslę vietą, klausimus ir apsipirkimo veiklą. Saugokite ir tvarkykite juos pagal savo privatumo politiką ir taikomus teisės aktus.
- HTTP
403reiškia, kad slaptas raktas nerastas, neteisingas, pasibaigęs, atšauktas arba priklauso kitai parduotuvei. - HTTP
422paprastai reiškia, kad trūksta privalomo užklausos parametro arba jo pavadinimas neteisingas. - HTTP
500arba atsakymas sustatusCode: 500reiškia, kad užklausa pasiekė Shoply, bet negalėjo būti įvykdyta. Laikiniems gedimams kartokite užklausą su didėjančiais intervalais ir susisiekite su mumis, jei klaida kartojasi. - Eksportams ir pasikartojančioms užduotims naudokite apribotus UTC intervalus, kad atsakymai išliktų valdomi.
Ar produktų paieška yra Merchant API dalis?
Viešasis Shoply produktų paieškos API turi kitokį autentifikavimo ir užklausos sutarties modelį. Žr. Kaip pasiekti Shoply AI Search per API, jei norite produktų paieškos rezultatų pirkėjui skirtoje patirtyje, o ne privačių prekybininko duomenų.
Ar SiteChat prekybininkai gali įkelti produktų katalogą?
Taip. SiteChat paskyros gali įkelti struktūrizuotus produktus ir produktų vaizdus naudodamos tą patį parduotuvės savininko API slaptą raktą. Tie katalogo endpoint’ai dokumentuoti atskirai straipsnyje Kaip įkelti savo katalogą SiteChat. Shopify parduotuvės toliau sinchronizuoja produktus per Shopify ir nenaudoja tų įkėlimo maršrutų.
Jei reikia pagalbos su integracija, susisiekite su Shoply AI.
