PriceCenter訂閱方案

一. 官方網址:


使用操作文件網站: https://ls.zbdigital.net/

訂閱者設定網站: https://gs.zbdigital.net/

二. 訂閱方案:



API訂閱Websocket訂閱主動發送訂閱
說明訂閱者自行開發抓取資料的服務,定時呼叫我方提供的API取得資料訂閱者建立Websocket連線,透過WSS取得及時變動資料

訂閱者提供API,我們設置服務主動將變動資料推送到訂閱者API接口
使用流程

訂閱者使用時間戳記呼叫API取得該時間區段中有變動的資料

建立WebSocket連線取得變動資料初始化時需要透過API取得所有資料,之後我們主動呼叫API傳送變動資料
即時性約慢另兩方案1秒最快最快
初始資料來源彙整後資料爬蟲原始資料爬蟲原始資料
即時警示訂閱者從API回傳資料中自行判斷Service提供Service提供,但訂閱者需提供對應的API接口
資料壓縮GzipGzip
範例:

Step1.透過API取得全部資料
ex:https://ls.zbdigital.net/api/data/SC/bet365.com/Odd
Step2.第二次之後加上lastAccessTime,透過API取得有變動的資料

ex:https://ls.zbdigital.net/api/data/SC/bet365.com/Odd?lastAccessTime=1606112039

程式碼請參考: https://ls.zbdigital.net/MatchClient

.NET Core C# 請下載: https://ls.zbdigital.net/downloads/MatchesSample.zip
(.NET Core 3.1)

頻道訂閱參數請參考 https://ls.zbdigital.net/WSSKey


Step1.透過API取得全部資料
ex:https://ls.zbdigital.net/api/data/SC/bet365.com/Odd

Step2.由我方Call對應API提供資料

三. API 文件:


參數說明請參考https://ls.zbdigital.net/Index   ,以下為常用的場景

場景API結果
第一次,要取得當天所有賽事​/api​/data​/{companyCode}​/{gameType}​/{site}​/{subscribeType} 取得今明兩天所有尚未結束的賽事
取得一個時段內有變動的賽事​/api​/data​/{companyCode}​/{gameType}​/{site}​/{subscribeType}?lastAccessTime=16061120391606112039到現在的所有變動賽事
取得比賽結果/api​/data​/{companyCode}​/{gameType}​/{site}​/{subscribeType}?IsFinal = true當天已經結束的比賽內容
某一個站台的聯盟名稱v1/siteleagues/{GameType}?site=bet365.combet365.com對應球種的聯盟,如有不同語系內容則一併回傳
某一個站台的特定聯盟的所有Team

/api​/siteteams/{GameType}/{site}/{sitelids} 或是

/api/siteteams/{GameType}?site=bet365.com 該站台所有的隊伍

bet365.com對應球種,聯盟的隊名,如有不同語系則一併內容回傳
某一場賽事的比賽進程/api/matchhistories/{GameType}/{site}/{sitelid}/{sitegid}單一場比賽的比分,PlayByPlay的全程內容(Match,PlayByPlay為Json字串)
檢查我方服務是否正常運行 /heart如有回傳現在時間表示目前系統正常運行中.
系統有哪些站台,球種/api/schema回傳系統的站台,球種代號

注意:呼叫API時,Header必須要給X-Auth作為驗證(測試用Token為: 4xj7SsVlROxLHggt )

(Postman範例)

四. WSS訂閱參數 :


伍. 回傳內容 : 


本文只對比賽內容結構和欄位進行說明.其他請參考https://ls.zbdigital.net/Index

賽事 (SiteGameOutputDto)結構層級如下(json)欄位說明:



NameTypeMemo
GameTypestring

球種


DefineDescriptionChinese
BSbaseball棒球
BKbasketball籃球
HLice hockey冰上曲棍球
SCsoccer足球
FLfootball美式足球/橄欖球
ESgame電競
TNtennis網球
VBvolleyball排球
BMbadminton羽毛球
SQSquash壁球
HBHandball手球
FBFloorball旱地冰球
FSFutsal室內五人制足球
MABoxing/MMA綜合格鬥
RURugby Union聯合式橄欖球
DTDarts飛鏢
SNSnooker撞球
TBTable Tennis桌球
RLRugby League聯盟式橄橄球
WPWater Polo水球
BDBandy俄式冰球
BV

Beach Volleyball

沙灘排球
BW

Bowls

草地滾球
GS

Gaelic Sports

蓋爾式運動
PLPool花式撞球
BLBowls草地滾球



Sitestring
SendTimelong傳送時間,unix 時間戳
VstringOutPut Data Version



NameTypeMemo
HeartBeatint心跳檢查
0 : 正常資料 
1 : 即使沒變資料
     (走地)固定30秒送一次所有資料
     (原盤)固定60秒送一次所有資料
Leaguestring聯盟名稱
Team1string資料源上面(或左邊)的球隊名稱
Team2string資料源下面(或右邊)名稱
GameDatestring比賽日期(美東時間)
GameTimestring比賽時間(美東時間) , 當比賽進行中或是結束,則GameTime內容為空(null)
GameIDstring賽事ID
Score2stringTeam2分數
Score1stringTeam1分數
ScoresList<Score>

上下半場(單節/單局)的分數 ,

Match :節/局數

ScoreTeam1 : Team1該節/局分數

ScoreTeam2 : Team2該節/局分數

GameStatusstring

賽事狀態


DefineDescription
InProgress正在比賽
Final完成
PreGame未來/預定
Postponed延賽
Cancelled取消



PlayByPlayList參考PlayByPlay Mapping , 不同Site會有所差異,ex:https://ls.zbdigital.net/B365PlayByPlay



NameTypeMemo
PlayModeList

玩法種類


DefineDescription
HAHandicap
OUOver/Under
Other-XXXXxxxx 除了HA/OU以外的玩法(xxxx看對應站台提供的玩法的顯示),請參考對應表,ex:https://ls.zbdigital.net/B365PlayMode
RBHAInPlay Handicap
RBOUInPlay Over/Under
RBOther-XXXXxxxx 除了RBHA/RBOU以外的玩法(xxxx看對應站台提供的玩法的顯示),請參考對應表,ex:https://ls.zbdigital.net/B365PlayMode





NameTypeMemo
Spreadstring

轉換成台灣盤顯示方式的讓分大小內容

HA/RBHA固定為Team1的讓分(B365為上面的隊伍)

OU/RBOU 固定為Over的分數


OriginSpreadstring對應站台的讓分大小顯示內容
Mainbool主要賠率
Suggestbool是否為換算後的資訊
OddList<string,string>

賠率為不含本金的港式賠率(小數式賠率) ,當對方關盤或是沒有顯示賠率時,則為-1,當比賽結束.根據結果Odd會給予Result

HA/RBHA 分別為 1 / 2 /T (Team1,Team2,和局)
OU分別為 O/U(大,小)

其他玩法則看對應網站的文件:





List賠率資訊



List



List





範例

{
    "GameType": "SC",
    "Site": "bet365.com",
    "SendTime": 1606114599,
    "SiteGames": [
        {
            "League": "Esoccer Battle - 8 mins play",
            "Team2": "Lazio (jkey) Esports",
            "Team1": "Napoli (Rebels) Esports",
            "GameDate": "2020-11-23",
            "GameTime": "02:42",
            "GameID": "1ae01408ba-2020-11-23",
            "Score2": 0,
            "Score1": 0,
            "GameStatus": "PreGame",
            "PlayByPlay": [],
            "Odds": [
                {
                    "PlayMode": "HA",
                    "Prices": [
                        {
                            "OriginSpread": "Full Time Result",
                            "Spread": "1X2",
                            "Odds": [
                                {
                                    "OddType": "1",
                                    "Odd": 7,
									"Result":"W"
                                },
                                {
                                    "OddType": "T",
                                    "Odd": 0.28,
									"Result":"L"
                                },
                                {
                                    "OddType": "2",
                                    "Odd": 4,
									"Result":"L"
                                }
                            ]
                        },
                        {
                            "OriginSpread": "1.0,1.5",
                            "Spread": "-1+50",
                            "Odds": [
                                {
                                    "OddType": "1",
                                    "Odd": -1,
									"Result":"WR"
                                },
                                {
                                    "OddType": "2",
                                    "Odd": -1,
									"Result":"LR"
                                }
                            ]
                        },
                        {
                            "OriginSpread": "1.5",
                            "Spread": "-1.5",
                            "Odds": [
                                {
                                    "OddType": "1",
                                    "Odd": 0.8,
									"Result":"W"
                                },
                                {
                                    "OddType": "2",
                                    "Odd": 0.9,
									"Result":"L"
                                }
                            ]
                        }
                    ]
                },
                {
                    "PlayMode": "OU",
                    "Prices": [
                        {
                            "OriginSpread": "3.0",
                            "Spread": "3",
                            "Odds": [
                                {
                                    "OddType": "O",
                                    "Odd": 0.95,
									"Result":"W"
                                },
                                {
                                    "OddType": "U",
                                    "Odd": 0.75,
									"Result":"L"
                                }
                            ]
                        }
                    ]
                }
            ]
        }]
}