A Shoply Merchant API használata
A Shoply Merchant API lehetővé teszi, hogy egy kereskedő biztonságosan használja a saját Shoply-adatait jelentéskészítő eszközökben, támogatási munkafolyamatokban, ütemezett exportokban és privát üzleti alkalmazásokban.
Minden integráció egy visszavonható, bolthoz kötött hitelesítő adattal hitelesít, amelyet a Shoply Settingsben hoznak létre. Nincs szükség Shopify Admin API hozzáférési token megosztására, és egy integráció csak ahhoz a bolthoz férhet hozzá, amely kiadta a hitelesítő adatát.
Mire használható a Merchant API?
A Merchant API a következőkre használható:
- Napi, heti vagy havi teljesítményeredmények exportálása táblázatkezelőbe vagy adattárházba.
- Privát irányítópult készítése munkamenetekhez, csevegésekhez, keresésekhez, termékkattintásokhoz, kosárba helyezési eseményekhez, vásárlásokhoz és hozzárendelt bevételhez.
- Ügyféltevékenység figyelése és az aktivitásban bekövetkező szokatlan változások felfedezése.
- Csevegési és keresési munkamenetek áttekintése támogatási, merchandising- és válaszminőségi munkához.
- Egy adott beszélgetés idővonalának lekérése ügyfélprobléma vizsgálatakor.
- A Shoply AI által használt egyedi tudás létrehozása, frissítése, listázása és törlése.
- Külső weboldal vagy feltöltött PDF-, szöveg- vagy Markdown-fájl hozzáadása a tudásbázishoz.
- Az UTC eseményadatok összehangolása a bolt helyi időzónájával.
Ez az útmutató hét végpontot ismertet. Ezek közül öt ugyanaz a végpont, amelyet a Shoply Admin → Analytics használ, míg kettő a tudásbázist kezeli:
| API | Kategória | Mit ad vissza |
|---|---|---|
admin_store_analytics | Teljesítmény | Napi, heti vagy havi teljesítménysorok és összesítések |
query_api_usage_count | Elköteleződés | UTC perc vagy nap szerint csoportosított aktivitásszámok |
query_sessionized_chat | Beszélgetések | Csevegési és keresési munkamenet-összefoglalók |
query_log_visualization | Beszélgetések | Egy kiválasztott munkamenet teljes eseményidővonala |
admin_get_store_metadata | Boltkonfiguráció | A bolt időzónája, amely az UTC-adatok helyes megjelenítéséhez használatos |
admin_store_knowledge | Tudás | Egyedi szöveg, külső oldalak, feltöltött fájlok, törlés és újrafeltérképezés |
user_generated_file | Tudásfájlok | PDF-, szöveg- vagy Markdown-fájlok feltöltése, mielőtt tudásként regisztrálnák őket |
Az alábbi választestek reprezentatív minták. Az Ön mezői és értékei az adott boltban rögzített aktivitást fogják tükrözni.
Telepítési követelmény: A bolttulajdonosi titkos hitelesítést telepíteni kell azon az API-szerveren, amelyet hív. Ha egy érvényes titok HTTP
403választ adNo access_token foundüzenettel, akkor azon a szerveren még a régebbi, csak hozzáférési tokent támogató hitelesítési kód fut.
Hogyan hozhatok létre API-titkot?
- Nyissa meg a Shoply AI admin felületét.
- Lépjen a Settings → Store owner API secret menüpontra.
- Hozzon létre egy titkot, és adjon neki az integrációt azonosító nevet, például
Weekly reporting export. - Másolja ki a titkot, amikor megjelenik. A Shoply a sima szöveges értéket csak egyszer mutatja meg.
Minden titok 90 napig érvényes. Egy bolt külön titkokkal rendelkezhet külön integrációkhoz, és egyetlen titkot visszavonhat anélkül, hogy a többit megszakítaná.
Mentse ezeket az értékeket szerveroldali környezeti változókként:
export SHOPLY_STORE_KEY="your-store.myshopify.com"
export SHOPLY_STORE_OWNER_API_SECRETE="shoply_owner_key_example123.secret-value"A SHOPLY_STORE_KEY értékéhez a bolt állandó myshopify.com domainjét használja, még akkor is, ha a vásárlók általában egyéni domaint látogatnak.

Hogyan működik a hitelesítés?
Minden Merchant API-kérés egy Authorization fejlécet küld, amelynek értéke egy JSON-karakterlánc:
{
"store_key": "your-store.myshopify.com",
"store_owner_api_secrete": "YOUR_STORE_OWNER_API_SECRET"
}A store_owner_api_secrete a pontos nyilvános mezőnév, beleértve a történeti helyesírását is. Ez nem egy Bearer token. A teljes JSON-karakterláncot közvetlenül az Authorization fejlécbe kell tenni.
A titkot csak a backendkódban tartsa meg. Ne helyezze URL-be, böngészőcsomagba, nyilvános tárolóba, analitikai eseménybe vagy alkalmazásnaplóba.
Vannak hivatalos Python- és Node.js-csomagok?
Igen. A Shoply két szerveroldali csomagot tesz közzé, amelyek automatikusan hozzáadják a szükséges hitelesítést, és típusos függvényekként teszik elérhetővé a Merchant API-t. Mindkét csomag nyílt forráskódú a shoplyai-public GitHub-szervezet alatt.
Python-csomag
A shoply-merchant-api csomag támogatja a Python 3.12-t, és Pydantic v2 válaszmodelleket használ. Telepítse a rögzített 2.1.3 kiadást:
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"Kérje le a legújabb csevegési és keresési munkameneteket típusos SessionSummary modellekként:
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)A csomag függvényeket biztosít analitikához, aktivitásszámokhoz, teljes munkamenet-idővonalakhoz, bolt időzónájához és tudáskezeléshez is. Lásd a business-use-case útmutatóját és az API-referenciát .
Node.js és TypeScript csomag
A shoply-merchant-api-js tároló biztosítja a @shoplyai/merchant-api csomagot Node.js 20 vagy újabb verzióhoz. Ez egy ESM-csomag beépített TypeScript-deklarációkkal és futásidejű függőségek nélkül. Telepítse a rögzített 2.1.3 kiadást közvetlenül a GitHubról:
npm install "github:shoplyai-public/shoply-merchant-api-js#v2.1.3"Kérje le ugyanazokat a legújabb munkameneteket egy Node.js-szerverről:
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);
}Az npm-csomag ugyanazokat a Merchant API-végpontokat fedi le, mint a Python-csomag. Lásd a business-use-case útmutatóját és az API-referenciát .
Mindkét csomag megbízható backend szolgáltatásokhoz, ütemezett feladatokhoz és privát belső eszközökhöz készült. Egyik csomagot se importálja storefront kódba, és ne tegye közzé az API-titkot böngészőcsomagban.
Meghívhatom a HTTP API-t csomag nélkül?
Igen. A Merchant API továbbra is egy szabványos HTTPS API. Az alábbi alacsony szintű Python-példák a Requests könyvtárat használják, hogy látható legyen a teljes kommunikációs szerződés, vagy hogy más nyelvből is integrálható legyen.
Telepítse a Requests könyvtárat, ha a környezete még nem tartalmazza:
python -m pip install requestsAz alábbi segédfüggvény minden kéréshez hozzáadja a bolt kulcsát és a hitelesítési fejlécet:
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 resultAz alábbi példák ezt a megosztott klienst használják. Mindkét segéd automatikusan hozzáadja a hitelesített boltkulcsot.
Kezelhetem a Shoply AI tudását az API-n keresztül?
Igen. Az admin_store_knowledge a tudás lekéréséhez GET metódust használ, létrehozáshoz, frissítéshez, törléshez vagy újrafeltérképezéshez pedig POST-ot. Egy POST, amely meglévő tudásazonosítót használ, frissíti azt a bejegyzést; új azonosító használata esetén újat hoz létre.
Mielőtt automatizálná a frissítéseket, tervezzen hasznos bolti tudást a képzési útmutatónk példái alapján.
A tudás módosítása megváltoztathatja a vásárlóknak megjelenő válaszokat. Használjon külön titkot a tudást kezelő rendszerhez, érvényesítse a tartalmat elküldés előtt, és soha ne tegye elérhetővé ezt az írási jogosultságú hitelesítő adatot storefront JavaScriptben.
Meglévő tudás listázása
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"))Mintaválasz
{
"data": {
"knowledge::shipping-policy": {
"title": "Shipping policy",
"text": "Orders leave our warehouse within two business days.",
"epoch_edit": 1787211246
}
}
}Egyedi szöveges tudás létrehozása vagy frissítése
Válasszon stabil, egyedi tudásazonosítót. Ugyanannak a bejegyzésnek a frissítésekor ugyanazt az azonosítót használja újra.
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)Mintaválasz
{
"statusCode": 200
}A sikeres válasz azt jelenti, hogy a tudás mentésre került. A keresési indexelés néhány percet igénybe vehet, ezért előfordulhat, hogy egy új válasz nem jelenik meg azonnal. Ha az API azt jelzi, hogy a tartalom mentésre került, de az indexelés késik, próbálkozás előtt ellenőrizze a tárolt bejegyzést GET segítségével.
Külső weboldal hozzáadása
Használjon external_url:: kezdetű azonosítót. A teljes http:// vagy https:// URL-t a text mezőbe helyezze.
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()),
}
},
)Tudásfájl feltöltése és regisztrálása
A tudásfájloknak PDF, TXT vagy Markdown formátumúnak kell lenniük, és 5 MB-nál kisebbnek. Először töltse fel a fájlt, majd a visszakapott privát S3-helyet mentse tudásbejegyzésként.
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()),
}
},
)Minta feltöltési válasz
{
"message": "File uploaded successfully",
"statusCode": 200,
"file_url": "s3://shoplystores/your-store.myshopify.com/uploads/shipping-policy.md"
}A file_url mezőt a Shoply által visszaadott, átlátszatlan privát helyként kezelje. Ne hozza létre és ne módosítsa saját maga.
Tudás törlése
A törlés végleges. Először kérje le az aktuális bejegyzéseket, és csak azokat a pontos azonosítókat küldje el, amelyeket valóban el akar távolítani.
result = shoply_post(
"admin_store_knowledge",
{
"knowledge_ids_to_delete": [
"knowledge::shipping-policy",
"external_url::returns-policy",
"knowledge_file::shipping-policy",
]
},
)Webhely újrafeltérképezésének kérése
Használjon újrafeltérképezést, miután a kereskedő webhelyének tartalma megváltozik. Erre általában nincs szükség minden egyes egyedi szövegfrissítés után.
result = shoply_post(
"admin_store_knowledge",
re_crawl_ind="true",
)Üzleti felhasználási esetek
- Szállítási, visszaküldési, garanciális, méretezési vagy termékápolási útmutatók szinkronizálása belső tartalomkezelő rendszerből.
- Ideiglenes kampány- vagy ünnepi információk közzététele anélkül, hogy azokat kézzel be kellene másolni a Shoply Adminba.
- Szabályzati weboldal vagy jóváhagyott dokumentum hozzáadása a tudásbázishoz egy telepítési munkafolyamat részeként.
- Elavult útmutatók eltávolítása azonnal, amint egy szabályzat vagy promóció véget ér.
Merchant API példák
1. Teljesítményelemzés lekérése
Az admin_store_analytics működteti az Analytics → Summary táblát. Munkameneteket, csevegéseket, kereséseket, kattintásokat, kosárba helyezési eseményeket, vásárlásokat és hozzárendelt bevételt ad vissza.
Végpont
GET https://api.shoplyai.ai/admin_store_analyticsLekérdezési paraméterek
| Paraméter | Kötelező | Leírás |
|---|---|---|
store_key | Igen | A megosztott kliens adja hozzá |
report_type | Igen | daily, weekly vagy monthly |
start_date | Napi/heti | Befoglaló UTC-dátum YYYYMMDD formátumban |
end_date | Napi/heti | Befoglaló UTC-dátum YYYYMMDD formátumban |
A havi jelentések a Shoply által tárolt havi előzményeket használják, és nem igényelnek dátumhatárokat.
Python-példa
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")Mintaválasz
{
"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"
}A bevétel több pénznemet is tartalmazhat. A revenue mezőt megjelenítési szövegként kezelje. Ha a Shoply által megjelenített normalizált USD-értékre van szüksége, használja a revenue_usd mezőt.
Üzleti felhasználási esetek
- Napi értékesítési hatásösszefoglaló küldése a kereskedőnek vagy az e-kereskedelmi csapatnak.
- Keresések, termékkattintások, kosárba helyezési események és vásárlások összehasonlítása az értékesítési tölcsér kiesési pontjainak megtalálásához.
- Heti vagy havi üzletiintelligencia-irányítópult táplálása a Shoply Admin oldal scrape-elése nélkül.
- A hozzárendelt bevétel időbeli nyomon követése és összevetése merchandising- vagy kampányváltozásokkal.
2. A bolt időzónájának lekérése
Az admin_get_store_metadata biztosítja az időzóna-jelvényt, amely az Analytics → Chat & Search History nézetben látható. Az oldal ezt használja az UTC-aktivitásnak a bolt helyi idejére való átalakításához.
Végpont
GET https://api.shoplyai.ai/admin_get_store_metadataLekérdezési paraméterek
| Paraméter | Kötelező | Leírás |
|---|---|---|
store_key | Igen | A megosztott kliens adja hozzá |
metadata_key | Igen | Használja a szó szerinti time_zone értéket |
Python-példa
timezone_payload = shoply_get(
"admin_get_store_metadata",
metadata_key="time_zone",
)
timezone = timezone_payload["data"]
print(timezone["ianaTimezone"], timezone["timezoneOffsetMinutes"])Mintaválasz
{
"data": {
"ianaTimezone": "America/Los_Angeles",
"timezoneOffset": -7,
"timezoneOffsetMinutes": -420
},
"statusCode": 200
}Üzleti felhasználási esetek
- UTC-aktivitás csoportosítása ugyanazokra a helyi naptári napokra, amelyeket a kereskedő az Analyticsben lát.
- Napi exportok ütemezése a bolt helyi napjának lezárulta után.
- Jelentések címkézése egyértelmű IANA időzónával, például
America/Los_Angeles.
Az időzónaeltolások megváltozhatnak a nyári időszámítás szabályai miatt. Ha a jelentéskészítő rendszer támogatja, részesítse előnyben az ianaTimezone használatát egyetlen számeltolás tartós mentése helyett.
3. Aktivitásszámok lekérése
A query_api_usage_count a bolt aktivitását UTC-dátum vagy az eredeti UTC-perc szerint csoportosítva adja vissza. Ez az Analytics → Chat & Search History aktivitási diagramjának forrása is.
Végpont
GET https://api.shoplyai.ai/query_api_usage_countLekérdezési paraméterek
| Paraméter | Kötelező | Leírás |
|---|---|---|
start_dt_utc | Igen | UTC kezdési idő YYYY-MM-DD HH:mm:ss formátumban |
end_dt_utc | Igen | UTC záró idő YYYY-MM-DD HH:mm:ss formátumban |
groupby | Nem | utc_date napi összesítésekhez vagy utc_date_time percszintű sorokhoz |
Python-példa
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)Mintaválasz
{
"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
}
]
}A sorok az adott időszakra elérhető aktivitásszámlálókat tartalmazzák, például csevegési kérdéseket, kereséseket, kattintásokat, kosárba helyezési eseményeket és checkout eseményeket. Az aktivitás nélküli számlálók hiányozhatnak ahelyett, hogy nullára lennének állítva.
Üzleti felhasználási esetek
- Óránkénti vagy napi aktivitási diagram készítése, mint a Chat & Search History nézetben.
- Szokatlan forgalmi csúcsok vagy a vásárlói elköteleződés hirtelen visszaesésének észlelése.
- Termékkeresési volumen összehasonlítása kattintásokkal, kosárba helyezési eseményekkel és checkoutokkal.
- Annak becslése, hogy a támogatási és merchandising csapatoknak mikor érdemes áttekinteniük a legforgalmasabb időszakokat.
4. Csevegési és keresési munkamenet-összefoglalók lekérése
A query_sessionized_chat ügyfelenkénti munkamenetenként egy tömör rekordot ad vissza. Ez működteti az Analytics → Chat & Search History munkamenetlistáját is.
Végpont
GET https://api.shoplyai.ai/query_sessionized_chatLekérdezési paraméterek
| Paraméter | Kötelező | Leírás |
|---|---|---|
start_dt_utc | Igen | UTC kezdési idő, vagy a szó szerinti undefined érték |
end_dt_utc | Igen | UTC záró idő, vagy a szó szerinti undefined érték |
num_sessions | Nem | A kiválasztandó munkamenetek száma, ha bármelyik határ undefined |
ScanIndexForward | Nem | Használja a false értéket, ha a legújabb munkameneteket szeretné előrehozni |
A legutóbbi 40 munkamenet lekérése
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", ""))Munkamenetek lekérése egy UTC-tartományban
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",
)Ha mindkét időhatár jelen van, az API a teljes tartományban lévő munkameneteket adja vissza; a num_sessions nem korlátozza ezt a határolt lekérdezést.
Mintaválasz
{
"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
}
]
}Az opcionális mezők munkamenetenként változnak. Tartsa meg a customer_id, start_timestamp_ms és end_timestamp_ms mezőket, ha később a teljes idővonalat is le szeretné kérni.
Üzleti felhasználási esetek
- A közelmúltbeli beszélgetések mintájának áttekintése válaszminőség és támogatási képzés céljából.
- Ismétlődő ügyfélkérdések keresése, amelyeknek hatással kell lenniük a termékszövegre vagy GYIK-re.
- Magas szándékú munkamenetek azonosítása, amelyek kereséseket, termékkattintásokat vagy egyéb vásárlási műveleteket tartalmaznak.
- Egy sor exportálása munkamenetenként trendelemzéshez, miközben elkerüli a nagyobb eseményszintű payloadot.
5. Egy teljes munkamenet lekérése
Adjon át egy kiválasztott összefoglalót a query_log_visualization végpontnak, hogy lekérje annak ügyfél-, AI-, keresési és kereskedelmi eseményeit.
Végpont
GET https://api.shoplyai.ai/query_log_visualizationLekérdezési paraméterek
| Paraméter | Kötelező | Leírás |
|---|---|---|
date_time_utc_start | Igen | A munkamenet kezdete UTC YYYY-MM-DD HH:mm:ss formátumban |
date_time_utc_end | Igen | A munkamenet vége UTC YYYY-MM-DD HH:mm:ss formátumban |
session_id | Nem | Az összefoglaló customer_id mezője, régebbi előzményrekordokhoz használva |
start_timestamp_ms | Ajánlott | Az összefoglaló pontos, ezredmásodperces kezdő időbélyege |
Python-példa
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"))Mintaválasz
{
"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": {}
}
]
}Az idővonal tartalmazhat ügyfélkérdéseket, AI-válaszokat, keresési eredményeket, termékkattintásokat, kosárba helyezési eseményeket, checkout eseményeket és emberi ügyintéző részvételét. A vegyes eseménytípusok sorrendezéséhez használja a server_timestamp_ms mezőt. A régebbi rekordok kevesebb mezőt tartalmazhatnak.
Üzleti felhasználási esetek
- Pontosan annak auditálása, hogy mit kérdezett az ügyfél és mit válaszolt a Shoply egy támogatási vizsgálat során.
- A válaszminőség áttekintése együtt a vásárlónak megjelenített keresési eredményekkel és termékekkel.
- Az út rekonstruálása a kérdéstől a kattintásig, kosárba helyezésig vagy checkoutig.
- Egy ügyfél által jelentett munkamenet diagnosztizálása anélkül, hogy nem kapcsolódó előzmények között kellene keresni.
Használhatok egyetlen titkot minden API-hoz?
Igen. Egy érvényes store_owner_api_secrete egyetlen bolthoz van kötve, és működik a fenti Merchant API-végpontok mindegyikén. SiteChat-fiókok esetén ugyanez a titok hitelesíti a katalógusfeltöltő API-kat is. A biztonságosabb működés érdekében használjon külön elnevezett titkokat külön rendszerekhez — például egyet az éjszakai adatexporthoz, egy másikat pedig egy belső irányítópulthoz.
Ha egy integrációt megszüntetnek vagy kompromittálódik, csak annak a titkát vonja vissza a Shoply Settingsben. A többi integráció továbbra is működni fog.
Mit kell tudnom a lejáratról, az adatvédelemről és a hibákról?
Tekintse át a Shoply adatforrásait és adatvédelmét is, hogy megértse, milyen információk érhetők el az ügyfélválaszok számára.
- A bolttulajdonosi API-titkok 90 nap után lejárnak. Hozzon létre csere-titkot, és frissítse az integrációt a lejárati dátum előtt.
- A Shoply szabványos csevegési és keresési előzménymegőrzési ideje szintén 90 nap. A titok lejárata és az adatmegőrzés külön szabályzatok.
- Az előzményválaszok személyes adatokat tartalmazhatnak, beleértve az ügyfélazonosítókat, e-mail-címeket, hozzávetőleges helyadatokat, kérdéseket és vásárlási aktivitást. Tárolja és kezelje ezeket az adatvédelmi szabályzatának és a vonatkozó jogszabályoknak megfelelően.
- A HTTP
403azt jelenti, hogy a titok hiányzik, érvénytelen, lejárt, visszavonták, vagy másik bolthoz tartozik. - A HTTP
422általában azt jelenti, hogy egy kötelező lekérdezési paraméter hiányzik vagy rossz a neve. - A HTTP
500vagy astatusCode: 500értékű válasz azt jelenti, hogy a kérés eljutott a Shoplyhoz, de nem tudták befejezni. Az átmeneti hibákat próbálja újra visszalépéses stratégiával, és lépjen kapcsolatba velünk, ha a hiba továbbra is fennáll. - Exportokhoz és ismétlődő feladatokhoz használjon határolt UTC-tartományokat, hogy a válaszok kezelhető méretűek maradjanak.
A termékkeresés része a Merchant API-nak?
A Shoply nyilvános termékkereső API-ja más hitelesítési és kérési szerződést használ. Lásd: How to Access Shoply AI Search Through the API, ha vásárlóknak szánt felhasználói élményhez szeretne termékkeresési eredményeket, nem pedig privát kereskedői adatokat.
Feltölthetnek termékkatalógust a SiteChat kereskedők?
Igen. A SiteChat-fiókok strukturált termékeket és termékképeket tölthetnek fel ugyanazzal a bolttulajdonosi API-titokkal. Ezek a katalógusvégpontok külön dokumentálva vannak itt: How to Upload Your Catalog for SiteChat. A Shopify-boltok továbbra is a Shopifyon keresztül szinkronizálják a termékeket, és nem használják ezeket a feltöltési útvonalakat.
Ha segítségre van szüksége egy integrációval kapcsolatban, lépjen kapcsolatba a Shoply AI-jal.
