# 发送应用消息

# 效果图

# 源码

TNWX-QySendMsgApi

# 示例

app.get('/sendMsg', (req, res) => {
    let type: string = req.query.type;
    let agentId = QyApiConfigKit.getApiConfig.getAppId
    let toUser = 'Javen'
    switch (parseInt(type)) {
        case 0:
            // 发送文本消息
            let text = new QyTextMsg(
                new QyText('TNWX 微信系开发脚手架 \n https://gitee.com/javen205/TNWX'),
                agentId,
                toUser
            )
            QySendMsgApi.sendTextMessage(text)
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        case 1:
            // 图片消息
            let image = new QyImageMsg(
                new QyMediaId('1X7ARFWFBZBnOgNEtpRbmSR46LdLuX1aDtoxbJgpBzRqT34EmnQtXxiPk9DfBXzSa'),
                agentId,
                toUser
            )
            QySendMsgApi.sendImageMessage(image)
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        case 2:
            // 语音消息
            let voice = new QyVoiceMsg(
                new QyMediaId('1mxRvPy6x2UkcxFZ22z1CssutVW-Ybez3Oj18N2FfUAY'),
                agentId,
                toUser
            )
            QySendMsgApi.sendVoiceMessage(voice)
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        case 3:
            // 视频消息
            let video = new QyVideoMsg(
                new QyVideo(
                    '1EWVjcD-veu9ZMOduIEFVwh3IAraTa5JZi6XvCQ6Z4zJZup-2YrnHt4ZhEqjyvbtG',
                    'TNWX 视频消息',
                    'TNWX 微信系开发脚手架'
                ),
                agentId,
                toUser
            )
            QySendMsgApi.sendVideoMessage(video)
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        case 4:
            // 文件消息
            let file = new QyFileMsg(
                new QyMediaId(
                    '1X7ARFWFBZBnOgNEtpRbmSR46LdLuX1aDtoxbJgpBzRqT34EmnQtXxiPk9DfBXzSa',
                ),
                agentId,
                toUser
            )
            QySendMsgApi.sendFileMessage(file)
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        case 5:
            // 文本卡片消息
            let textcard = new QyTextCardMsg(
                new QyTextCard(
                    'TNWX 微信系开发脚手架',
                    'TNWX: TypeScript + Node.js + WeiXin 微信系开发脚手架,支持微信公众号、微信支付、微信小游戏、微信小程序、企业微信/企业号。最最最重要的是能快速的集成至任何 Node.js 框架(Express、Nest、Egg、Koa 等)',
                    'https://gitee.com/javen205/TNWX',
                    '了解更多'
                ),
                agentId,
                toUser
            )
            QySendMsgApi.sendTextCardMessage(textcard)
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        case 6:
            // 图文消息
            let news = new QyNewsMsg(
                new QyArticles(
                    [
                        new QyNews(
                            'TNWX 微信系开发脚手架',
                            'TNWX: TypeScript + Node.js + WeiXin 微信系开发脚手架,支持微信公众号、微信支付、微信小游戏、微信小程序、企业微信/企业号。最最最重要的是能快速的集成至任何 Node.js 框架(Express、Nest、Egg、Koa 等)',
                            'https://s2.ax1x.com/2020/02/01/1J9I9P.jpg',
                            'https://gitee.com/javen205/TNWX',    
                        ),
                        new QyNews(
                            'IJPay 聚合支付SDK',
                            '聚合支付,IJPay 让支付触手可及,封装了微信支付、QQ支付、支付宝支付、京东支付、银联支付常用的支付方式以及各种常用的接口。不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。',
                            'https://gitee.com/javen205/IJPay/raw/master/assets/img/logo.png',
                            'https://javen205.gitee.io/ijpay',    
                        ),
                    ]
                    
                ),
                agentId,
                toUser
            )
            QySendMsgApi.sendNewsMessage(news)
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        case 7:
            // 多图文消息
            let mpnews = new QyMpNewsMsg(
                new QyMpNewsArticles([
                    new QyMpNews(
                        'TNWX 微信系开发脚手架',
                        '1X7ARFWFBZBnOgNEtpRbmSR46LdLuX1aDtoxbJgpBzRqT34EmnQtXxiPk9DfBXzSa',
                        'TNWX: TypeScript + Node.js + WeiXin 微信系开发脚手架,支持微信公众号、微信支付、微信小游戏、微信小程序、企业微信/企业号。最最最重要的是能快速的集成至任何 Node.js 框架(Express、Nest、Egg、Koa 等)',
                        'Javen',
                        'https://gitee.com/javen205/TNWX',
                        '了解一下'
                    )
                ]),
                agentId,
                toUser
            )
            QySendMsgApi.sendMpNewsMessage(mpnews)
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        case 8:
            // markdown 消息
            let markDown = new QyMarkDownMsg(
                new QyText(
                    "Javen 开源项目列表:\n"+
                    "[TNWX 微信系开发脚手架](https://gitee.com/javen205/TNWX)\n" +
                    "[IJPay 让支付触手可及](https://gitee.com/javen205/IJPay)\n" +
                    "[JPay 简易而不简单的支付 SDK](https://gitee.com/javen205/IJPay)\n"
                ),
                agentId,
                toUser
            )
            QySendMsgApi.sendMarkDownMessage(markDown)
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        case 9:
            // 小程序通知消息
            let miniprogram = new QyMiNiProgramNoticeMsg(
                new QyMiniprogram(
                    'wxf30d9b9b316d5de4',
                    '老铁开源项目了解一下',
                    [
                        new QyKv('项目名称', 'TNWX'),
                        new QyKv('参与人员', '所有开发者'),
                    ],
                    'pages/index',
                    '2月2日 14:00',
                    true
                ),
                agentId,
                toUser
            )
            QySendMsgApi.sendMiniprogramNoticeMessage(miniprogram)
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        case 10:
            // 任务卡片消息
            let taskCard = new QyTaskCardMsg(
                new QyTaskCard(
                    '123456789',
                    '邀请参加TNWX线下活动',
                    '抽奖时间:15:00<br>礼品:TNWX 周边礼物',
                    [
                        new QyTaskCardBtn('receive', '同意', '已同意', 'red', true),
                        new QyTaskCardBtn('cancel', '取消', '已取消'),
                    ],
                    'https://gitee.com/javen205/TNWX'
                ),
                agentId,
                toUser
            )
            QySendMsgApi.sendTaskCardMessage(taskCard)
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        case 11:
            // 更新任务卡片消息状态
            QyWxApi.updateTaskCard('Javen',agentId,'123456789','receive')
                .then(data => {
                    res.send(data);
                })
                .catch(error =>console.log(error))
            break;
        default:
            break;
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220