共用方式為


範例 API 要求

本文顯示一些範例 API 要求及相關的回覆。 每個範例都會顯示基本建議案例以及其他回覆修改功能,例如篩選、分頁、選取替代演算法等等。 如果想要在您的智慧建議端點上試用這些範例,請務必根據您的資料,更換端點名稱 (DNS 部分) 並調整參數。

注意

計數參數會控制每個回覆中傳回的項目數目。 為清晰簡潔起見,範例將計數設定為 5。 如需 API 要求建構方式的詳細資訊,請參閱智慧建議 API呼叫 API 快速入門手冊

範例

以下是一些可以使用智慧建議帳戶進行測試的範例:

如果測試回覆時遇到錯誤,請查看錯誤記錄

取得新項目

新項目 API 會傳回依發行日期排序的產品清單。

API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/New?modeling=adw&Count=5

成功的回覆看起來像這樣:

{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "70000",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "70002",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "70003",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "70004",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "70005",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "New",
    "longTitle": "New",
    "titleId": 3,
    "pagingInfo": {
        "totalItems": 278
    },
    "status": "Success"
}

回到頁首

在跳過前 3 名的同時取得新項目

您可以藉由將 "SkipItems" 附加至要求,跳過清單中的項目。

API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/New?modeling=adw&Count=5&SkipItems=3

成功的回覆看起來像這樣:

{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "70004",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "70005",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "70006",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "66001",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "66002",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "New",
    "longTitle": "New",
    "titleId": 3,
    "pagingInfo": {
        "totalItems": 278
    },
    "status": "Success"
}

回到頁首

[取得熱門項目] API 傳回依互動計數 (例如交易、購買、觀看、選取或下載) 排序的項目清單。 不論使用者與項目間互動在您業務中的意義為何,清單中第一個項目都是互動次數最多的項目,其餘項目則依遞減順序排列。

API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Popular?modeling=adw&Count=5

成功的回覆看起來像這樣:

{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "65106",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62604",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "70006",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "63503",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Popular",
    "longTitle": "Popular",
    "titleId": 5,
    "pagingInfo": {
        "totalItems": 278
    },
    "status": "Success"
}

回到頁首

您可以在 ItemCategories 資料實體中定義類別。 如需詳細資訊,請參閱資料合約概觀

搜尋最流行服裝項目時的 API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Popular?modeling=adw&Count=5&Category=Clothing

成功的回覆看起來像這樣:

{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "62604",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62502",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62606",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "63402",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Popular",
    "longTitle": "Popular",
    "titleId": 5,
    "pagingInfo": {
        "totalItems": 95
    },
    "status": "Success"
}

回到頁首

您可以在 ItemAndVariantFilters 資料實體中定義篩選。 如需詳細資訊,請參閱資料合約概觀

API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Popular?modeling=adw&Count=5&Category=Clothing&Size=S

成功的回覆看起來像這樣:

{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "61453",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62104",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62100",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62103",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61406",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Popular",
    "longTitle": "Popular",
    "titleId": 5,
    "pagingInfo": {
        "totalItems": 32
    },
    "status": "Success"
}

回到頁首

如需依範圍篩選的語法的詳細資訊,請參閱範圍篩選指南

API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Popular?modeling=adw&Count=10&Category=Clothing&$filter=rating gt 2 and rating lt 5

成功的回覆看起來像這樣:

{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "62604",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62502",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62507",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62106",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Popular",
    "longTitle": "Popular",
    "titleId": 5,
    "pagingInfo": {
        "totalItems": 5
    },
    "status": "Success"
}

回到頁首

取得類似項目

類似項目 API 提供根據特定種子項目的關聯式建議。 種子項目是產品建議依據的樞紐點。 緊隨 Similar/ 之後的是種子項目識別碼指定的 API 要求。 例如,與男士西裝外套相比,條紋毛衣種子項目會有不同的產品建議。

API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/64702?modeling=adw&Count=5

成功的回覆看起來像這樣:

{
    "id": "Related",
    "name": "Related",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "63102",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62106",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61511",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "63503",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "68100",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "People also like",
    "longTitle": "People also like",
    "titleId": 1,
    "pagingInfo": {
        "totalItems": 138
    },
    "status": "Success"
}

回到頁首

使用隨機順序取得類似項目

為避免使用者一再看到相同建議,智慧建議提供加權隨機變換功能,此功能略微變更項目順序,而不會明顯影響相關性。 結果可以藉由加入細分 enableshuffling 來打亂順序。 您可以在這裡進一步了解微調以及其不同的類型。

API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/64702?modeling=adw&Count=5&Refinements=EnableShuffling

成功的回覆看起來像這樣:

{
    "id": "Related",
    "name": "Related",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "62403",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61511",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "71603",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "64201",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "People also like",
    "longTitle": "People also like",
    "titleId": 1,
    "pagingInfo": {
        "totalItems": 138
    },
    "status": "Success"
}

回到頁首

產生外觀

此 API 要求接受複合影像,並傳回建議項目的清單,這些項目在視覺上與複合影像中所列的項目相似。 複合影像及其 itemId 對應可以使用這裡的影像至項目對應資料實體來設定。

指定複合影像 (642) 的 API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/642?AlgoType=BringSimilarItems

成功的回覆看起來像這樣:

{
    "id": "Related",
    "name": "Related",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "62403",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61511",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "71603",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "64201",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Bring Similar Items",
    "longTitle": "Bring Similar Items",
    "titleId": 1,
    "pagingInfo": {
        "totalItems": 138
    },
    "status": "Success"
}

回到頁首

完成類似樣式

此 API 要求會接受項目識別碼,並傳回包含項目或包含其他類似項目 (其中相似性根據視覺樣式而定) 的複合圖片識別碼清單。

指定項目識別碼 (64702) 的 API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/64702?AlgoType=CompleteSimilarStyles

成功的回覆看起來像這樣:

{
    "id": "Related",
    "name": "Related",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "403",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "511",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "603",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "201",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Complete Similar Styles",
    "longTitle": "Complete Similar Styles",
    "titleId": 1,
    "pagingInfo": {
        "totalItems": 138
    },
    "status": "Success"
}

回到頁首

完成類似項目

此 API 要求會接受項目識別碼、尋找包含項目或看起來類似之專案的複合圖片,並傳回從這些複合圖片擷取的項目識別碼清單。

指定項目識別碼 (64702) 的 API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/64702?AlgoType=CompleteSimilarItems

成功的回覆看起來像這樣:

{
    "id": "Related",
    "name": "Related",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "62403",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61511",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "71603",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "64201",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Complete Similar Items",
    "longTitle": "Complete Similar Items",
    "titleId": 1,
    "pagingInfo": {
        "totalItems": 138
    },
    "status": "Success"
}

回到頁首

取得使用者精選

精選 API 根據指定使用者的互動歷程記錄,傳回一組個人化建議。

API 要求看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Picks?modeling=adw&UserId=ID1644&Count=5

成功的回覆看起來像這樣:

{
    "id": "Picks",
    "name": "Picks",
    "version": "v1.0",
    "items": [
        {
            "id": "68100",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62500",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61504",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "65103",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61401",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Picks for you",
    "longTitle": "Picks for you",
    "titleId": 6,
    "personalizationConfidence": 1.0,
    "pagingInfo": {
        "totalItems": 139
    },
    "status": "Success"
}

回到頁首

使用 sessionId 取得使用者精選

無論使用者是已知 (已登入) 還是未知 (匿名),Picks API 都會根據工作階段中的目前檢視傳回個人化建議。 sessionId 參數可識別使用者在其目前瀏覽工作階段中觀看過的產品,API 會根據已登入使用者或匿名使用者的最近檢視活動傳回建議清單。

修改的 Picks API 要求會將 userId 取代為 sessionId,並使用 AlgoType「最近的檢視表」,如下所示:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/picks?SessionId=123&AlgoType=RecentViews.

注意

呼叫精選 API 之前,必須在特定工作階段的類似 API 要求中使用 SessionId 參數,否則最近的活動建議會傳回空的結果。

使用 Similar API 時:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Similar/64702?SessionId=123 

成功的最近活動精選回覆,如下所示:


```json
{
    "id": "Picks",
    "name": "Picks",
    "version": "v1.0",
    "items": [
        {
            "id": "68100",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62500",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61504",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "65103",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61401",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Picks for you",
    "longTitle": "Picks for you",
    "titleId": 6,
    "personalizationConfidence": 1.0,
    "pagingInfo": {
        "totalItems": 139
    },
    "status": "Success"
}

注意

SessionId 參數已新增至此範例中的 API 要求。

回到頁首

後續最佳動作

此 API 要求會傳回最常與使用者購物車中種子項目一起購買的項目清單 (不在零售購物車案例時,是搭配在一起購買的)。

單一種子項目/動作的 API 要求如下:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Cart/64702?AlgoType=DAS&modeling=adw&Count=5

多個種子項目/動作的 API 要求如下:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Cart/Items?SeedItemIds=22565300000,41023461-0005-0000-ffff-00ffffffff00,22565300000,22565300001&Count=5

成功的回覆為:

{
    "id": "Cart",
    "name": "Cart",
    "version": "v1.0",
    "items": [
        {
            "id": "63102",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62106",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61511",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "63503",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "68100",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Frequently bought together",
    "longTitle": "Frequently bought together",
    "titleId": 2,
    "pagingInfo": {
        "totalItems": 138
    },
    "status": "Success"
}

回到頁首

中繼資料標記和使用者貯體

實作中繼資料標記和使用者貯體時,需要對資料合約進行一些設定。 請參閱中繼資料標記和使用者貯體指南,以取得資料合約變更和 API 範例的概觀,包括逐步解說兩個受益於中繼資料標記的一般使用案例,每個案例各提供一些使用示範資料的範例。

  1. 為冷淡使用者取得「最受歡迎的推薦項目」。 若要查看範例,請參閱標題為「為冷淡使用者取得最受歡迎的項目」的章節。
  2. 建立使用者中繼資料/值的機器學習對應。 若要查看範例,請參閱標題為「建立使用者中繼資料值的 ML 對應」的章節。

回到頁首

如何使用 AlgoType 參數

智慧建議功能提供多個演算法以計算對各種案例的建議。 如果要使用預設以外的特定演算法,您可以使用 AlgoType 參數。

範例 AlgoType

如需目前支援的 AlgoTypes 完整清單,請參閱 AlgoTypes 表格。 AlgoType 的範例包括:

AlgoType 定義 支援 API
RecentPurchases 精選建議是根據使用者最近的購買項目計算而來。 僅適用於使用者精選 API。
視覺效果 項目相似性是根據目錄影像的視覺相似性計算而來。 僅適用於類似 API
文字 專案相似性是根據文字 (語言理解) 目錄文字描述的相似性來計算。 僅適用於類似 API

使用 AlgoType 建構 API 要求

用於將 Algo Type 新增至「取得使用者精選 API 要求」的 API 要求,看起來像這樣:

https://ir-example.mir.prod.reco.microsoft.com/Reco/V1.0/Picks?AlgoType=RecentPurchases&modeling=adw&UserId=ID1644&Count=5

成功的回覆看起來像這樣:

{
    "id": "Picks",
    "name": "Picks",
    "version": "v1.0",
    "items": [
        {
            "id": "61100",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61406",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "63203",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "73401",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "71801",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Picks for you",
    "longTitle": "Picks for you",
    "titleId": 6,
    "pagingInfo": {
        "totalItems": 327
    },
    "status": "Success"
}

回到頁首

如何使用 Refinements 參數

智慧建議功能提供各種行為來計算並傳回建議,但為了獲得更好的購買體驗,有時還是必須要求與預設行為不同的行為。 例如,僅在未購買的品項上顯示建議,或防止相同訂單的重複訂購。 在這種情況下,可以使用 Refinements 參數來達成所需的建議行為。

如需目前支援的微調完整清單,請參閱Refinements 資料表

使用 Refinements 建構 API 要求

只要微調不相互矛盾,您就可以新增多個以逗號分隔的微調。 在這裡可找到示範將微調新增至類似 API 的範例 API 要求。

API 狀態碼

API 狀態碼完整清單、描述以及如何解決錯誤,如下所示:

程式碼 執行狀態 原因 如何解決
200 成功 API 要求已成功。 無法使用
200 EmptyResults 對此種子項目 (itemId) 有一些建議,但是全都篩選掉了。 篩選的主要原因是資料已與目錄中的項目相關聯。 當您預計特定產品要遭到退回時,請務必驗證其可用日期,並確定這些產品都是使用適當的篩選指派 (例如類別、通路、目錄和可用性) 正確設定。
200 DataDoesNotExist 結果中沒有種子項目 (itemId)。 輸入資料中可能缺少指定的 itemId,或是資料不足,無法取得計算結果。 檢查項目是否:
- 有效
- 屬於正確管道
- 有足夠的互動/影像/文字。 如需詳細資訊,請參閱資料合約格式設定指南
200 WaitingForData 建立新的模型元件時,計算可能需要一些時間,並且可能尚未準備好傳回結果。 檢查記錄模型狀態報表 ,以了解是否發生錯誤。 如果 24 小時後問題仍然存在,且沒有錯誤記錄,請連絡我們
400 UnsupportedRequest 其中一個 API 參數有不支援的值,或是 API 要求發生另一個問題,例如:不支援或已停用的案例。 檢查標頭值是否與實際參數不同。 如需工作中 API 要求的範例,請移至本文頂端。 根據模型功能集是設定為標準還是進階,停用不同的 API 要求。 您也可以檢查模型狀態報表 ,以了解是否有任何演算法發生錯誤。
400 UnsupportedFeature 您正在嘗試根據目前的模型功能集呼叫不支援的 API。 啟用設定為 [標準] 或 [進階] 的正確模型功能集。 每個功能集可用的案例清單。
401 未驗證的要求 確定您的租用戶已指派要讓服務運作的權限。 依照下列步驟檢查您的驗證。
408 RequestTimeout 您的要求已逾時。 嘗試重新呼叫 API 要求。
429 RPS 高於預先配置階層,並且有遭到節流的風險。 將預先配置 RPS 容量增加至更高階層,或減少目前的 RPS。
500 內部伺服器錯誤 智慧建議一方發生錯誤。 這可能是暫時性問題,因此請在幾分鐘後再試一次。 檢查記錄模型狀態報表 ,以了解是否發生錯誤。 如果問題仍然存在,且沒有錯誤記錄,請連絡我們
503 ServiceUnavailable 服務無法處理帳戶。 檢查記錄模型狀態報表 ,以了解是否發生錯誤。 如果問題仍然存在,且沒有錯誤記錄,請連絡我們

回到頁首

另請參閱

智慧建議 API
呼叫 API 快速入門手冊
一般記錄錯誤
資料合約概觀