wechat-chat-tool
1
总安装量
1
周安装量
#48254
全站排名
安装命令
npx skills add https://github.com/dafang/taro-weapp-plugin --skill wechat-chat-tool
Agent 安装分布
trae
1
cursor
1
codex
1
claude-code
1
Skill 文档
微信å°ç¨åºèå¤©å·¥å ·å¼åæå
åºç¡åº 3.7.8+ æ¯æï¼Android/iOS 微信 8.0.56+
å¿«éé ç½®
app.json é 置示ä¾
{
"subPackages": [
{
"root": "packageChatTool",
"pages": ["pages/entry/index"],
"entry": "entry.js", // ç¬ç«åå
å
¥å£æä»¶ï¼å¿
é¡»ï¼
"independent": true,
"componentFramework": "glass-easel",
"renderer": "skyline"
}
],
"chatTools": [{
"root": "packageChatTool",
"entryPagePath": "pages/entry/index",
"desc": "åè½æè¿°",
"scopes": []
}],
"rendererOptions": {
"skyline": {
"disableABTest": true,
"defaultDisplayBlock": true,
"defaultContentBox": true
}
}
}
å
¶ä¸ entry.js ç代ç é常ï¼
// ç¬ç«åå
å
¥å£æä»¶
// ç¨äºè天工å
·æ¨¡å¼çåå§å
const enterOptions = wx.getEnterOptionsSync()
console.log('[ChatTool Entry] Enter options:', enterOptions)
注æäºé¡¹:
- åå ä½ç§¯ä¸è¶ è¿ 500KB
- å¿ é¡»ä½¿ç¨ skyline 渲æ
- æ¯ä¸ªå°ç¨åºç®åä» æ¯æé ç½®ä¸ä¸ªèå¤©å·¥å ·
æ ¸å¿ API
è¿å ¥/éåºè天模å¼
| API | ç¨é |
|---|---|
wx.openChatTool |
æå¼èå¤©å·¥å ·æ¨¡å¼ï¼å¯ä¼ å ¥ opengid æ open_single_roomidï¼ |
wx.getApiCategory |
夿æ¯å¦å¨èå¤©å·¥å ·æ¨¡å¼ï¼apiCategory === ‘chatTool’ï¼ |
wx.navigateBack |
éåºèå¤©å·¥å ·æ¨¡å¼ |
è·åè天信æ¯
| API | ç¨é |
|---|---|
wx.getChatToolInfo |
å¨èå¤©å·¥å ·åå å è·åç»å®ç¾¤èä¿¡æ¯ |
wx.getGroupEnterInfo |
è¿å ¥åè·å群è id ä¿¡æ¯ |
wx.selectGroupMembers |
éæ©è天室æåï¼è¿å group_openid |
ID ç±»å
opengid: 群èå¯ä¸æ è¯open_single_roomid: åèå¯ä¸æ è¯group_openid: ç¨æ·å¨æ¤è天室ä¸çå¯ä¸æ è¯
åéå°è天
| API | ç¨é |
|---|---|
wx.shareAppMessageToGroup |
åéå°ç¨åºå¡ç |
wx.notifyGroupMembers |
åéæéæ¶æ¯ï¼@æå + ä»»å¡ï¼ |
wx.shareImageToGroup |
åéå¾ç |
wx.shareVideoToGroup |
åéè§é¢ |
wx.shareFileToGroup |
åéæä»¶ |
wx.shareEmojiToGroup |
åé表æ |
å¨ææ¶æ¯
- æå¡ç«¯å建
activity_id - å端
wx.updateShareMenu声æå¨ææ¶æ¯ - æå¡ç«¯
setChatToolMsgæ´æ°ç¶æ
wx.updateShareMenu({
withShareTicket: true,
isUpdatableMessage: true,
activityId: "xxx",
useForChatTool: true,
chooseType: 1, // 1=æå®æå, 2=å
¨é¨æå
participant: members,
templateInfo: {
templateId: "4A68CBB88A92B0A9311848DBA1E94A199B166463", // å®æç±»
// æ '2A84254B945674A2F88CE4970782C402795EB607' åä¸ç±»
},
});
ç¦ç¨è½å
èå¤©å·¥å ·æ¨¡å¼ä¸ä¸æ¯æï¼
- æ®é转åï¼button open-type=shareï¼
- å¤è·³æ¥å£ï¼navigateToMiniProgram çï¼
- 广åç»ä»¶ï¼adãad-customï¼
7. èå¤©å·¥å ·æ ¸å¿API详解
wx.openChatTool
æå¼èå¤©å·¥å ·ã
åæ°
Object object
| 屿§ | ç±»å | é»è®¤å¼ | å¿ å¡« | 说æ |
|---|---|---|---|---|
| url | string | æ¯ | èå¤©å·¥å ·åå å ç页é¢è·¯å¾ | |
| roomid | string | å¦ | è天室idï¼ä¸ä¼ åæèµ·ç¾¤éæ©æ¡ï¼å¯ä»¥ä¼ å ¥å¤è群ç opengid å¼ï¼æè åè群ç open_single_roomid å¼ | |
| chatType | number | å¦ | 群èç±»å | |
| success | function | å¦ | æ¥å£è°ç¨æåçåè°å½æ° | |
| fail | function | å¦ | æ¥å£è°ç¨å¤±è´¥çåè°å½æ° | |
| complete | function | å¦ | æ¥å£è°ç¨ç»æçåè°å½æ°ï¼è°ç¨æåã失败é½ä¼æ§è¡ï¼ |
object.chatType åæ³å¼
| å¼ | 说æ |
|---|---|
| 1 | 微信è系人åè |
| 2 | ä¼ä¸å¾®ä¿¡è系人åè |
| 3 | æ®é微信群è |
| 4 | ä¼ä¸å¾®ä¿¡äºé群è |
示ä¾ä»£ç
wx.openChatTool({
url: "pages/chat/index", // 示ä¾è·¯å¾
chatType: 1, // 微信è系人åè
success(res) {
console.log("æå¼è天工å
·æå", res);
},
fail(err) {
console.error("æå¼è天工å
·å¤±è´¥", err);
},
});
wx.getApiCategory
wx.getApiCategory()
åºç¡åº 2.22.1 å¼å§æ¯æï¼ä½çæ¬éå å ¼å®¹å¤çã
è·åå½åå°ç¨åºç API ç±»å«ã
è¿åå¼
string
å½å API ç±»å«ã
åæ³å¼
| å¼ | 说æ |
|---|---|
| default | é»è®¤ç±»å« |
| nativeFunctionalized | åçåè½åï¼è§é¢å·ç´æååãååæ©±çªçåºæ¯æå¼çå°ç¨åº |
| browseOnly | ä» æµè§ï¼æååå¿«ç §é¡µçåºæ¯æå¼çå°ç¨åº |
| embedded | å åµï¼éè¿æå¼åå±å°ç¨åºè½åæå¼çå°ç¨åº |
| chatTool | èå¤©å·¥å ·æå¼å°ç¨åº |
示ä¾ä»£ç
const apiCategory = wx.getApiCategory();
console.log(apiCategory);
wx.shareAppMessageToGroup
wx.shareAppMessageToGroup(Object object)
åºç¡åº 3.7.12 å¼å§æ¯æï¼ä½çæ¬éå å ¼å®¹å¤çã
转åå°ç¨åºå¡çå°è天ã
åæ°
Object object
| 屿§ | ç±»å | é»è®¤å¼ | å¿ å¡« | 说æ |
|---|---|---|---|---|
| title | string | æ¯ | è½¬åæ é¢ | |
| path | string | å½åé¡µé¢ | å¦ | 转åè·¯å¾ï¼å¿ é¡»æ¯ä»¥ / å¼å¤´ç宿´è·¯å¾ï¼é»è®¤ä¸ºå½åé¡µé¢ |
| imageUrl | string | æªå¾ | å¦ | èªå®ä¹å¾çè·¯å¾ï¼æ¯æ PNG å JPGï¼æ¾ç¤ºå¾çé¿å®½æ¯æ¯ 5:4ï¼é»è®¤ä½¿ç¨æªå¾ |
| success | function | å¦ | æ¥å£è°ç¨æåçåè°å½æ° | |
| fail | function | å¦ | æ¥å£è°ç¨å¤±è´¥çåè°å½æ° | |
| complete | function | å¦ | æ¥å£è°ç¨ç»æçåè°å½æ°ï¼è°ç¨æåã失败é½ä¼æ§è¡ï¼ |
示ä¾ä»£ç
wx.shareAppMessageToGroup({
title: "å享æ é¢",
path: "/path/to/page",
imageUrl: "",
});
wx.shareVideoToGroup
wx.shareVideoToGroup(Object object)
å享è§é¢å°è天ã
åæ°
Object object
| 屿§ | ç±»å | é»è®¤å¼ | å¿ å¡« | 说æ |
|---|---|---|---|---|
| videoPath | string | æ¯ | è¦å享çè§é¢å°åï¼å¿ 须为æ¬å°è·¯å¾æä¸´æ¶è·¯å¾ | |
| thumbPath | string | å¦ | 缩ç¥å¾è·¯å¾ï¼è¥ç空å使ç¨è§é¢é¦å¸§ | |
| needShowEntrance | boolean | true | å¦ | å享çå¾çæ¶æ¯æ¯å¦è¦å¸¦å°ç¨åºå ¥å£ |
| entrancePath | string | ” | å¦ | 仿¶æ¯å°ç¨åºå ¥å£æå¼å°ç¨åºçè·¯å¾ï¼é»è®¤ä¸ºèå¤©å·¥å ·å¯å¨è·¯å¾ |
| success | function | å¦ | æ¥å£è°ç¨æåçåè°å½æ° | |
| fail | function | å¦ | æ¥å£è°ç¨å¤±è´¥çåè°å½æ° | |
| complete | function | å¦ | æ¥å£è°ç¨ç»æçåè°å½æ°ï¼è°ç¨æåã失败é½ä¼æ§è¡ï¼ |
示ä¾ä»£ç
wx.shareVideoToGroup({
videoPath: "path/to/video.mp4",
thumbPath: "path/to/thumb.png",
needShowEntrance: true,
success(res) {
console.log("å享è§é¢æå", res);
},
fail(err) {
console.error("å享è§é¢å¤±è´¥", err);
},
});
wx.shareImageToGroup
wx.shareImageToGroup(Object object)
å享å¾çå°è天ã
åæ°
Object object
| 屿§ | ç±»å | é»è®¤å¼ | å¿ å¡« | 说æ |
|---|---|---|---|---|
| imagePath | string | æ¯ | è¦å享çå¾çå°åï¼å¿ 须为æ¬å°è·¯å¾æä¸´æ¶è·¯å¾ | |
| needShowEntrance | boolean | true | å¦ | å享çå¾çæ¶æ¯æ¯å¦è¦å¸¦å°ç¨åºå ¥å£ |
| entrancePath | string | ” | å¦ | 仿¶æ¯å°ç¨åºå ¥å£æå¼å°ç¨åºçè·¯å¾ï¼é»è®¤ä¸ºèå¤©å·¥å ·å¯å¨è·¯å¾ |
| success | function | å¦ | æ¥å£è°ç¨æåçåè°å½æ° | |
| fail | function | å¦ | æ¥å£è°ç¨å¤±è´¥çåè°å½æ° | |
| complete | function | å¦ | æ¥å£è°ç¨ç»æçåè°å½æ°ï¼è°ç¨æåã失败é½ä¼æ§è¡ï¼ |
示ä¾ä»£ç
wx.shareImageToGroup({
imagePath: "path/to/image.png",
needShowEntrance: true,
success(res) {
console.log("å享å¾çæå", res);
},
fail(err) {
console.error("å享å¾ç失败", err);
},
});
wx.shareEmojiToGroup
wx.shareEmojiToGroup(Object object)
å享表æ å°è天ã
åæ°
Object object
| 屿§ | ç±»å | é»è®¤å¼ | å¿ å¡« | 说æ |
|---|---|---|---|---|
| imagePath | string | æ¯ | è¦å享ç表æ å°åï¼å¿ 须为æ¬å°è·¯å¾æä¸´æ¶è·¯å¾ | |
| needShowEntrance | boolean | true | å¦ | å享çè¡¨æ æ¶æ¯æ¯å¦è¦å¸¦å°ç¨åºå ¥å£ |
| entrancePath | string | ” | å¦ | 仿¶æ¯å°ç¨åºå ¥å£æå¼å°ç¨åºçè·¯å¾ï¼é»è®¤ä¸ºèå¤©å·¥å ·å¯å¨è·¯å¾ |
| success | function | å¦ | æ¥å£è°ç¨æåçåè°å½æ° | |
| fail | function | å¦ | æ¥å£è°ç¨å¤±è´¥çåè°å½æ° | |
| complete | function | å¦ | æ¥å£è°ç¨ç»æçåè°å½æ°ï¼è°ç¨æåã失败é½ä¼æ§è¡ï¼ |
示ä¾ä»£ç
wx.shareEmojiToGroup({
imagePath: "path/to/image.png",
needShowEntrance: true,
success(res) {
console.log("å享表æ
æå", res);
},
fail(err) {
console.error("å享表æ
失败", err);
},
});
wx.selectGroupMembers
wx.selectGroupMembers(Object object)
ä»ç¾¤ç»ä¸éæ©æåã
åæ°
Object object
| 屿§ | ç±»å | é»è®¤å¼ | å¿ å¡« | 说æ |
|---|---|---|---|---|
| maxSelectCount | number | å¦ | æå¤å¯éäººæ° | |
| success | function | å¦ | æ¥å£è°ç¨æåçåè°å½æ° | |
| fail | function | å¦ | æ¥å£è°ç¨å¤±è´¥çåè°å½æ° | |
| complete | function | å¦ | æ¥å£è°ç¨ç»æçåè°å½æ°ï¼è°ç¨æåã失败é½ä¼æ§è¡ï¼ |
object.success åè°å½æ°
####### åæ°
######## Object res
| 屿§ | ç±»å | 说æ |
|---|---|---|
| members | Array. | æéç¨æ·å¨æ¤è天室ä¸çå¯ä¸æ è¯ï¼åä¸ä¸ªç¨æ·å¨ä¸åçè天室ä¸idä¸å |
示ä¾ä»£ç
wx.selectGroupMembers({
maxSelectCount: 10,
success(res) {
console.log("éæ©æåæå", res.members);
},
fail(err) {
console.error("éæ©æå失败", err);
},
});
wx.notifyGroupMembers
wx.notifyGroupMembers(Object object)
åéæ¶æ¯æé群æåã
åæ°
Object object
| 屿§ | ç±»å | é»è®¤å¼ | å¿ å¡« | 说æ |
|---|---|---|---|---|
| title | string | æ¯ | æå龿 é¢ï¼åéçå 容å°ç±å¾®ä¿¡æ¼æ¥ä¸ºï¼@çæåå表+âè¯·å®æï¼â/”请åä¸ï¼”+æå¼å°ç¨åºçæåé¾ï¼å¦ã@alex @cindy è¯·å®æï¼å¢å»ºæ¥åç»è®¡ãã | |
| members | Array. | æ¯ | éè¦æéçç¨æ· group_openid å表 | |
| entrancePath | string | æ¯ | æåé¾è·³è½¬è·¯å¾ | |
| type | string | complete | å¦ | å±ç¤ºçå¨è¯ |
| success | function | å¦ | æ¥å£è°ç¨æåçåè°å½æ° | |
| fail | function | å¦ | æ¥å£è°ç¨å¤±è´¥çåè°å½æ° | |
| complete | function | å¦ | æ¥å£è°ç¨ç»æçåè°å½æ°ï¼è°ç¨æåã失败é½ä¼æ§è¡ï¼ |
object.type åæ³å¼
| å¼ | 说æ |
|---|---|
| participate | 请åä¸ |
| complete | è¯·å®æ |
示ä¾ä»£ç
wx.notifyGroupMembers({
title: "å¢å»ºæ¥åç»è®¡",
members: ["openid1", "openid2"],
entrancePath: "/pages/index/index",
type: "complete",
success(res) {
console.log("æéæå", res);
},
fail(err) {
console.error("æé失败", err);
},
});
宿´ææ¡£
è¯¦è§ reference.md