Kaip naudoti Shoply Merchant API

A secure merchant key unlocks an API connector carrying storefront chat, analytics, and knowledge into backend code

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

APIKategorijaKą grąžina
admin_store_analyticsNašumasDienos, savaitės ar mėnesio našumo eilutės ir sumos
query_api_usage_countĮsitraukimasVeiklos skaičiai, sugrupuoti pagal UTC minutę arba dieną
query_sessionized_chatPokalbiaiPokalbių ir paieškos sesijų santraukos
query_log_visualizationPokalbiaiVisa vienos pasirinktos sesijos įvykių laiko juosta
admin_get_store_metadataParduotuvės konfigūracijaParduotuvės laiko zona, naudojama teisingam UTC duomenų rodymui
admin_store_knowledgeŽiniosPasirinktinis 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 403 su No access_token found, tame serveryje vis dar veikia senesnis autentifikavimo kodas, palaikantis tik prieigos raktą.

Kaip sukurti API slaptą raktą?

  1. Atidarykite savo Shoply AI administravimo aplinką.
  2. Eikite į Settings → Store owner API secret.
  3. Sukurkite slaptą raktą ir suteikite jam integraciją identifikuojantį pavadinimą, pavyzdžiui, Weekly reporting export.
  4. Nukopijuokite slaptą raktą, kai jis pasirodys. Shoply paprasto teksto reikšmę parodo tik vieną kartą.
Shoply Settings showing the Store owner API secret panel, Create API secret button, expiry date, and revoke control

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:

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

Settings → Store owner API secret contains the Create API secret control. Keep generated secrets private.
Settings → Store owner API secret contains the Create API secret control. Keep generated secrets private. Click the screenshot to view it at full size.

Kaip veikia autentifikavimas?

Kiekviena Merchant API užklausa siunčia Authorization antraštę, kurios reikšmė yra JSON eilutė:

json
{ "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ą:

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

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

bash
npm install "github:shoplyai-public/shoply-merchant-api-js#v2.1.3"

Gaukite tas pačias naujausias sesijas iš Node.js serverio:

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

bash
python -m pip install requests

Toliau pateikta pagalbinė funkcija prie kiekvienos užklausos prideda parduotuvės raktą ir autentifikavimo antraštę:

python
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 result

Toliau 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

python
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

json
{ "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.

python
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

json
{ "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.

python
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šą.

python
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

json
{ "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.

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

python
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

text
GET https://api.shoplyai.ai/admin_store_analytics

Užklausos parametrai

ParametrasPrivalomasAprašymas
store_keyTaipPrideda bendras klientas
report_typeTaipdaily, weekly arba monthly
start_dateDienos / savaitėsĮtraukianti UTC data formatu YYYYMMDD
end_dateDienos / savaitėsĮtraukianti UTC data formatu YYYYMMDD

Mėnesio ataskaitose naudojama Shoply saugoma mėnesinė istorija, todėl datų ribų nereikia.

Python pavyzdys

python
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

json
{ "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

text
GET https://api.shoplyai.ai/admin_get_store_metadata

Užklausos parametrai

ParametrasPrivalomasAprašymas
store_keyTaipPrideda bendras klientas
metadata_keyTaipNaudokite tiesioginę reikšmę time_zone

Python pavyzdys

python
timezone_payload = shoply_get( "admin_get_store_metadata", metadata_key="time_zone", ) timezone = timezone_payload["data"] print(timezone["ianaTimezone"], timezone["timezoneOffsetMinutes"])

Atsakymo pavyzdys

json
{ "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

text
GET https://api.shoplyai.ai/query_api_usage_count

Užklausos parametrai

ParametrasPrivalomasAprašymas
start_dt_utcTaipUTC pradžios laikas formatu YYYY-MM-DD HH:mm:ss
end_dt_utcTaipUTC pabaigos laikas formatu YYYY-MM-DD HH:mm:ss
groupbyNeutc_date dienos sumoms arba utc_date_time minučių eilutėms

Python pavyzdys

python
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

json
{ "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

text
GET https://api.shoplyai.ai/query_sessionized_chat

Užklausos parametrai

ParametrasPrivalomasAprašymas
start_dt_utcTaipUTC pradžios laikas arba tiesioginė reikšmė undefined
end_dt_utcTaipUTC pabaigos laikas arba tiesioginė reikšmė undefined
num_sessionsNeSesijų skaičius, kurį reikia parinkti, kai viena iš ribų yra undefined
ScanIndexForwardNeNaudokite false, kad pirmiausia būtų parinktos naujausios sesijos

Gauti naujausias 40 sesijų

python
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

python
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

json
{ "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

text
GET https://api.shoplyai.ai/query_log_visualization

Užklausos parametrai

ParametrasPrivalomasAprašymas
date_time_utc_startTaipSesijos pradžia, suformatuota kaip UTC YYYY-MM-DD HH:mm:ss
date_time_utc_endTaipSesijos pabaiga, suformatuota kaip UTC YYYY-MM-DD HH:mm:ss
session_idNeSantraukos customer_id, naudojamas senesniems istorijos įrašams
start_timestamp_msRekomenduojamasTikslus santraukos pradžios laiko žymos milisekundėmis laikas

Python pavyzdys

python
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

json
{ "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 403 reiškia, kad slaptas raktas nerastas, neteisingas, pasibaigęs, atšauktas arba priklauso kitai parduotuvei.
  • HTTP 422 paprastai reiškia, kad trūksta privalomo užklausos parametro arba jo pavadinimas neteisingas.
  • HTTP 500 arba atsakymas su statusCode: 500 reiš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.