微信開發介面API協議

lylDaisy發表於2019-03-26

微信開發介面API協議,出自冬天不穿秋褲,天冷也要風度的程式猿之手,必屬精品!

一、網路通訊協議

如上圖,採用 datalength+databytes 的自定義長度的協議,其中:

datalength:緊跟其後的databytes的資料長度(不包含自身長度),佔4位元組

databytes:protobuf 3.0協議資料序列化後的資料內容,長度不限

二、網路應答模型

1、業務訊息

服務端客戶端間的訊息大致分為以下四類:

1)通知類訊息

通常由客戶端發往伺服器端,或者由伺服器端發往客服客戶端,接收方一般需要作出接收確認回覆或不回覆(預設成功異常時回覆)。

2)客戶端同步請求類訊息

通常由手機客戶端或客服客戶端發出,服務端需要回復對應的響應訊息。

3)伺服器端指令類訊息

通常是由伺服器或者客服客戶端發出的操作手機客戶端的指令類訊息,手機客戶端收到後一般需要回復接收成功確認訊息,並在後續執行完指令後回覆傳送結果通知訊息。

客戶端在與伺服器建立連線後,需要先傳送DeviceAuthReq請求獲取accesstoken後才能正常進行後續通訊,建立連線時的通訊時序圖如下:

2、心跳機制

已於伺服器建立連線的客戶端需要每隔1分鐘傳送一個心跳包,時序圖如下:

三、Protobuf訊息定義

所有業務訊息都轉化為protobuf訊息進行序列化後傳輸,不同命令對應的訊息使用protobuf的Any型別巢狀入根訊息,接收方在收到根訊息後根據命令碼反序列化為相應型別訊息。

訊息結構定義基本約定:

1)使用proto3語法

2)package 名稱空間統一採用 Jubo.JuLiao.IM.Wx.Proto

3)訊息命名採用 Pascal命名法,例如 FirstName,LastName

4)時間欄位統一用Unix-Timestamp形式

5)message型別名全部為對應MsgType+Message字尾,如MsgType=DeviceAuthReq的訊息的訊息結構名定義為 message DeviceAuthReqMessage{}

根訊息(TransportMessage)

根訊息代表最終直接序列化為網路位元組流的訊息,其中應包含基本的傳送方資訊(用於授權認證)和其包含的具體的業務命令訊息及命令碼標識。

所有的其他型別的訊息都應該賦值到根訊息的Content欄位,並將MsgType欄位設為對應值,之後將TransportMessage資料序列化做網路傳輸。接收方在收到訊息後根據MsgType將Content內容反序列化成對應的強型別訊息。

sdk功能模組請參考:http://www.yunlauncher.com/Blog/articles/119.html

1、基礎訊息型別

1、客戶端傳送的心跳包

HeartBeatReq = 1001;

2、訊息接收確認回覆(接收或拒絕接收)

MsgReceivedAck = 1002;

3、錯誤單獨提升為一種訊息型別

Error = 1003;

2、裝置客戶端授權類訊息

1、裝置(手機客戶端、客服客戶端)獲取通訊token請求

DeviceAuthReq = 1010;

2、裝置(手機客戶端、客服客戶端)獲取通訊token響應

DeviceAuthRsp = 1011;

3、裝置授權後退出(僅用於服務端內部)

DeviceExitNotice = 1012;

4、賬號強制下線通知

AccountForceOfflineNotice = 1013;

3、手機客戶端上傳的通知類訊息

1、手機客戶端微信上線通知

WeChatOnlineNotice = 1020;

2、手機客戶端微信下線通知

WeChatOfflineNotice = 1021;

3、微信個人號新增好友通知

FriendAddNotice = 1022;

4、微信個人號移除好友通知

FriendDelNotice = 1023;

5、微信好友發來聊天訊息

FriendTalkNotice = 1024;

6、任務執行結果通知

TaskResultNotice = 1025;

7、手機上回復好友的聊天訊息

WeChatTalkToFriendNotice = 1026;

8、有好友請求新增好友的通知

FriendAddReqeustNotice = 1027;

9、手機端向服務端通知聊天執行結果

TalkToFriendTaskResultNotice = 1028;

10、圖片或視訊訊息的詳細內容結果

RequestTalkDetailTaskResultNotice = 1029;

11、上傳手機客戶端上微信的二維碼

PullWeChatQrCodeTaskResultNotice = 1030;

12、手機上傳送了朋友圈通知

CircleNewPublishNotice = 1031;

13、手機上刪除朋友圈通知

CircleDelNotice = 1032;

14、手機檢測到有人點贊/取消點贊通知

CircleLikeNotice = 1033;

15、手機檢測到有人評論/刪除朋友圈通知

CircleCommentNotice = 1034;

16、訊息標記為已讀

PostMessageReadNotice = 1035;

17、聯絡人資訊上傳

ContactsInfoNotice = 1036;

18、群聊新增通知

ChatRoomAddNotice = 1037;

19、聯絡人標籤新增,修改通知

ContactLabelAddNotice = 1038;

20、收錢任務執行結果通知

TakeMoneyTaskResultNotice = 1039;

21、朋友圈圖片上傳

CircleDetailNotice = 1040;

22、群聊刪除通知

ChatRoomDelNotice = 1041;

23、群聊資訊變更通知

ChatRoomChangedNotice = 1042;

24、群二維碼

PullChatRoomQrCodeTaskResultNotice = 1043;

4、服務端、客服客戶端發給裝置的指令類訊息

1、給好友發訊息任務

TalkToFriendTask = 1070;

2、傳送朋友圈任務

PostSNSNewsTask = 1071;

3、主動新增好友任務

AddFriendsTask = 1072;

4、傳送朋友圈任務後資料回傳

PostSNSNewsTaskResultNotice = 1073;

5、刪除朋友圈

DeleteSNSNewsTask = 1074;

6、客戶端或者服務端接受好友請求通知

AcceptFriendAddRequestTask = 1075;

7、群發訊息任務

WeChatGroupSendTask = 1076;

8、執行養號動作命令

WeChatMaintenanceTask = 1077;

9、請求圖片或視訊訊息的詳細內容

RequestTalkDetailTask = 1078;

10、服務端主動要求手機上傳當前登入的微信二維碼

PullWeChatQrCodeTask = 1079;

11、觸發手機推送好友列表任務

TriggerFriendPushTask = 1080;

12、觸發手機推送朋友圈列表任務

TriggerCirclePushTask = 1081;

13、朋友圈評論刪除任務

CircleCommentDeleteTask = 1082;

14、朋友圈評論刪除任務反饋

CircleCommentDeleteTaskResultNotice = 1083;

15、朋友圈評論回覆任務

CircleCommentReplyTask = 1084;

16、朋友圈評論回覆反饋

CircleCommentReplyTaskResultNotice = 1085;

17、通知手機將某個聊天視窗置為已讀

TriggerMessageReadTask = 1086;

18、訊息撤回

RevokeMessageTask = 1087;

19、轉發訊息

ForwardMessageTask = 1088;

20、通知手機推送聊天記錄

TriggerHistoryMsgPushTask = 1089;

21、獲取群聊二維碼

PullChatRoomQrCodeTask = 1090;

5、服務端通知執行的命令

1、服務端通知pc客戶版本升級

UpgradeAppNotice = 1093;

2、通知手機客戶端軟體升級

UpgradeDeviceAppNotice = 1094;

3、清粉任務

PostFriendDetectTask = 1095;

4、終止清粉任務

PostStopFriendDetectTask = 1096;

5、刪除裝置通知

PostDeleteDeviceNotice = 1097;

6、朋友圈點贊任務

PostMomentsPraiseTask = 1098;

7、停止朋友圈點贊任務

PostStopMomentsPraiseTask = 1099;

8、養號任務停止

PostStopWeChatMaintenanceTask = 1100;

9、修改備註任務

ModifyFriendMemoTask = 1101;

10、領取紅包或轉賬

TakeLuckyMoneyTask = 1200;

11、獲取指定好友朋友圈

PullFriendCircleTask = 1201;

12、獲取朋友圈圖片

PullCircleDetailTask = 1202;

13、單條朋友圈點贊任務

CircleLikeTask = 1203;

14、觸發手機推送群聊列表

TriggerChatroomPushTask = 1210;

15、請求具體群聊的詳細資訊

RequestChatRoomInfoTask = 1211;

16、獲取聯絡人詳細資訊(不一定是好友,如群聊成員)

RequestContactsInfoTask = 1212;

17、群聊管理

ChatRoomActionTask = 1213;

18、群內加好友

AddFriendInChatRoomTask = 1214;

19、通訊錄加好友

AddFriendFromPhonebookTask = 1215;

20、刪除好友

DeleteFriendTask = 1216;

21、發紅包

SendLuckyMoneyTask = 1217;

22、獲取聊天訊息的原始內容(主要是xml內容)

RequestTalkContentTask = 1218;

23、返回聊天訊息的原始內容

RequestTalkContentTaskResultNotice = 1219;

24、轉發訊息內容

ForwardMessageByContentTask = 1220;

6、手機端主動發出的互動類訊息

1、手機端推送好友列表

FriendPushNotice = 2026;

2、手機端推送當前安裝版本

PostDeviceInfoNotice = 2027;

3、手機端回傳檢測清粉好友數

PostFriendDetectCountNotice = 2028;

4、手機回傳朋友圈資料

CirclePushNotice = 2029;

5、手機回傳朋友圈點贊數量

PostMomentsPraiseCountNotice = 2030;

9、手機端推送群聊列表

ChatroomPushNotice = 2031;

7、手機端推送標籤列表

ContactLabelInfoNotice = 2032;

8、推送歷史訊息

HistoryMsgPushNotice = 2033;

9、群成員(陌生人)資訊

ChatRoomMembersNotice = 2034;

sdk適用於微信營銷軟體研發、微信營銷手機研發、微信手機群控雲控系統研發、微信SCRM客服系統研發、微信營銷工具研發、淘寶客機器人、導購返利機器人研發等,目前【聚客通】【有客來】等scrm都是基於這個sdk二次開發的。

微信開發介面API協議,以上均提供原始碼加微信tangjinjinwx獲取可自主二次開發。

相關文章