crewly 1.4.69 → 1.4.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backend/backend/src/constants.d.ts +1 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +1 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +4 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
- package/dist/backend/backend/src/middleware/require-auth.middleware.d.ts +17 -9
- package/dist/backend/backend/src/middleware/require-auth.middleware.d.ts.map +1 -1
- package/dist/backend/backend/src/middleware/require-auth.middleware.js +60 -10
- package/dist/backend/backend/src/middleware/require-auth.middleware.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +3 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +6 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js +14 -2
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/adapters/wechat-messenger.adapter.d.ts +47 -0
- package/dist/backend/backend/src/services/messaging/adapters/wechat-messenger.adapter.d.ts.map +1 -0
- package/dist/backend/backend/src/services/messaging/adapters/wechat-messenger.adapter.js +69 -0
- package/dist/backend/backend/src/services/messaging/adapters/wechat-messenger.adapter.js.map +1 -0
- package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +1 -1
- package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/response-router.service.d.ts +21 -3
- package/dist/backend/backend/src/services/messaging/response-router.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/response-router.service.js +68 -5
- package/dist/backend/backend/src/services/messaging/response-router.service.js.map +1 -1
- package/dist/backend/backend/src/services/wechat/wechat-bridge.service.d.ts +69 -0
- package/dist/backend/backend/src/services/wechat/wechat-bridge.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wechat/wechat-bridge.service.js +133 -0
- package/dist/backend/backend/src/services/wechat/wechat-bridge.service.js.map +1 -0
- package/dist/backend/backend/src/services/wechat/wechat.controller.d.ts +51 -0
- package/dist/backend/backend/src/services/wechat/wechat.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wechat/wechat.controller.js +104 -0
- package/dist/backend/backend/src/services/wechat/wechat.controller.js.map +1 -0
- package/dist/backend/backend/src/services/wechat/wechat.service.d.ts +171 -0
- package/dist/backend/backend/src/services/wechat/wechat.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wechat/wechat.service.js +411 -0
- package/dist/backend/backend/src/services/wechat/wechat.service.js.map +1 -0
- package/dist/cli/backend/src/constants.d.ts +1 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +1 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WeChat iLink Bot Service
|
|
3
|
+
*
|
|
4
|
+
* Integrates with the Tencent iLink Bot API for WeChat messaging.
|
|
5
|
+
* Supports QR code login, message polling, and sending replies.
|
|
6
|
+
*
|
|
7
|
+
* API Base: https://ilinkai.weixin.qq.com
|
|
8
|
+
* Auth: Bearer token with AuthorizationType: ilink_bot_token header
|
|
9
|
+
*
|
|
10
|
+
* @module services/wechat/wechat.service
|
|
11
|
+
*/
|
|
12
|
+
import { EventEmitter } from 'events';
|
|
13
|
+
/** Persisted WeChat config. */
|
|
14
|
+
export interface WeChatConfig {
|
|
15
|
+
botToken: string;
|
|
16
|
+
connectedAt: string;
|
|
17
|
+
botName?: string;
|
|
18
|
+
}
|
|
19
|
+
/** QR code response from iLink API. */
|
|
20
|
+
export interface QRCodeResponse {
|
|
21
|
+
qrcode_url: string;
|
|
22
|
+
qrcode_ticket: string;
|
|
23
|
+
}
|
|
24
|
+
/** QR code status from iLink API. */
|
|
25
|
+
export interface QRCodeStatus {
|
|
26
|
+
status: 'waiting' | 'scanned' | 'confirmed' | 'expired';
|
|
27
|
+
bot_token?: string;
|
|
28
|
+
bot_name?: string;
|
|
29
|
+
}
|
|
30
|
+
/** Incoming WeChat message from getupdates. */
|
|
31
|
+
export interface WeChatMessage {
|
|
32
|
+
msg_id: string;
|
|
33
|
+
from_user: string;
|
|
34
|
+
from_user_name: string;
|
|
35
|
+
content: string;
|
|
36
|
+
msg_type: string;
|
|
37
|
+
context_token: string;
|
|
38
|
+
timestamp: number;
|
|
39
|
+
}
|
|
40
|
+
/** Service connection state. */
|
|
41
|
+
export type WeChatConnectionState = 'disconnected' | 'connecting' | 'connected' | 'error';
|
|
42
|
+
/**
|
|
43
|
+
* WeChat iLink Bot Service.
|
|
44
|
+
*
|
|
45
|
+
* Singleton service that manages the WeChat bot connection lifecycle:
|
|
46
|
+
* - QR code generation for login
|
|
47
|
+
* - Long-polling for incoming messages
|
|
48
|
+
* - Sending replies
|
|
49
|
+
* - Persisting credentials to disk
|
|
50
|
+
*
|
|
51
|
+
* Events:
|
|
52
|
+
* - `message` — Fired for each incoming WeChat message
|
|
53
|
+
* - `connected` — Fired when QR code scan is confirmed
|
|
54
|
+
* - `disconnected` — Fired when service disconnects
|
|
55
|
+
* - `error` — Fired on unrecoverable errors
|
|
56
|
+
*/
|
|
57
|
+
export declare class WeChatService extends EventEmitter {
|
|
58
|
+
private static instance;
|
|
59
|
+
private readonly logger;
|
|
60
|
+
private state;
|
|
61
|
+
private botToken;
|
|
62
|
+
private botName;
|
|
63
|
+
private pollCursor;
|
|
64
|
+
private pollTimer;
|
|
65
|
+
private isPolling;
|
|
66
|
+
private constructor();
|
|
67
|
+
/**
|
|
68
|
+
* Get the singleton instance.
|
|
69
|
+
*
|
|
70
|
+
* @returns WeChatService instance
|
|
71
|
+
*/
|
|
72
|
+
static getInstance(): WeChatService;
|
|
73
|
+
/**
|
|
74
|
+
* Reset the singleton (for testing).
|
|
75
|
+
*/
|
|
76
|
+
static resetInstance(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Get a QR code for WeChat login.
|
|
79
|
+
*
|
|
80
|
+
* Calls the iLink API to generate a QR code that the user scans
|
|
81
|
+
* with their WeChat app to authorize the bot.
|
|
82
|
+
*
|
|
83
|
+
* @returns QR code URL and ticket for status polling
|
|
84
|
+
* @throws Error if API call fails
|
|
85
|
+
*/
|
|
86
|
+
getQRCode(): Promise<QRCodeResponse>;
|
|
87
|
+
/**
|
|
88
|
+
* Poll the QR code status until the user scans and confirms.
|
|
89
|
+
*
|
|
90
|
+
* @param ticket - QR code ticket from getQRCode()
|
|
91
|
+
* @returns Resolved when confirmed, rejected on timeout/error
|
|
92
|
+
*/
|
|
93
|
+
pollQRCodeStatus(ticket: string): Promise<{
|
|
94
|
+
botToken: string;
|
|
95
|
+
botName?: string;
|
|
96
|
+
}>;
|
|
97
|
+
/**
|
|
98
|
+
* Send a message via WeChat.
|
|
99
|
+
*
|
|
100
|
+
* @param content - Message text
|
|
101
|
+
* @param contextToken - Context token from the received message (maintains thread)
|
|
102
|
+
* @throws Error if not connected or API call fails
|
|
103
|
+
*/
|
|
104
|
+
sendMessage(content: string, contextToken: string): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* Get the current connection state.
|
|
107
|
+
*
|
|
108
|
+
* @returns Connection status object
|
|
109
|
+
*/
|
|
110
|
+
getStatus(): {
|
|
111
|
+
state: WeChatConnectionState;
|
|
112
|
+
botName: string | null;
|
|
113
|
+
connectedAt: string | null;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Check if the service is connected.
|
|
117
|
+
*
|
|
118
|
+
* @returns True if connected with a valid bot token
|
|
119
|
+
*/
|
|
120
|
+
isConnected(): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Disconnect and stop message polling.
|
|
123
|
+
*/
|
|
124
|
+
disconnect(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Try to restore connection from persisted config.
|
|
127
|
+
*
|
|
128
|
+
* @returns True if config was loaded and connection restored
|
|
129
|
+
*/
|
|
130
|
+
tryRestore(): Promise<boolean>;
|
|
131
|
+
/**
|
|
132
|
+
* Start long-polling for incoming messages.
|
|
133
|
+
*/
|
|
134
|
+
private startMessagePolling;
|
|
135
|
+
/**
|
|
136
|
+
* Stop message polling.
|
|
137
|
+
*/
|
|
138
|
+
private stopMessagePolling;
|
|
139
|
+
/**
|
|
140
|
+
* Long-poll for new messages from the iLink API.
|
|
141
|
+
* Automatically reschedules on completion or error.
|
|
142
|
+
*/
|
|
143
|
+
private pollMessages;
|
|
144
|
+
/**
|
|
145
|
+
* Persist bot token to disk.
|
|
146
|
+
*/
|
|
147
|
+
private persistConfig;
|
|
148
|
+
/**
|
|
149
|
+
* Load persisted config from disk.
|
|
150
|
+
*
|
|
151
|
+
* @returns Config or null if not found
|
|
152
|
+
*/
|
|
153
|
+
private loadConfig;
|
|
154
|
+
/**
|
|
155
|
+
* Remove persisted config from disk.
|
|
156
|
+
*/
|
|
157
|
+
removeConfig(): Promise<void>;
|
|
158
|
+
/**
|
|
159
|
+
* Build authorization headers for iLink API.
|
|
160
|
+
*
|
|
161
|
+
* @returns Headers with Bearer token and AuthorizationType
|
|
162
|
+
*/
|
|
163
|
+
private authHeaders;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get the WeChat service singleton.
|
|
167
|
+
*
|
|
168
|
+
* @returns WeChatService instance
|
|
169
|
+
*/
|
|
170
|
+
export declare function getWeChatService(): WeChatService;
|
|
171
|
+
//# sourceMappingURL=wechat.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wechat.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wechat/wechat.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAqCtC,+BAA+B;AAC/B,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gCAAgC;AAChC,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAM1F;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;IAKP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAW5B;;;;;;;;OAQG;IACG,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IA0B1C;;;;;OAKG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA4DvF;;;;;;OAMG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvE;;;;OAIG;IACH,SAAS,IAAI;QAAE,KAAK,EAAE,qBAAqB,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAQjG;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,UAAU,IAAI,IAAI;IAUlB;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAqBpC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;OAGG;YACW,YAAY;IAqE1B;;OAEG;YACW,aAAa;IAiB3B;;;;OAIG;YACW,UAAU;IASxB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAanC;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAOpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD"}
|
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WeChat iLink Bot Service
|
|
3
|
+
*
|
|
4
|
+
* Integrates with the Tencent iLink Bot API for WeChat messaging.
|
|
5
|
+
* Supports QR code login, message polling, and sending replies.
|
|
6
|
+
*
|
|
7
|
+
* API Base: https://ilinkai.weixin.qq.com
|
|
8
|
+
* Auth: Bearer token with AuthorizationType: ilink_bot_token header
|
|
9
|
+
*
|
|
10
|
+
* @module services/wechat/wechat.service
|
|
11
|
+
*/
|
|
12
|
+
import { EventEmitter } from 'events';
|
|
13
|
+
import { readFile, writeFile, mkdir } from 'fs/promises';
|
|
14
|
+
import { join } from 'path';
|
|
15
|
+
import { homedir } from 'os';
|
|
16
|
+
import { LoggerService } from '../core/logger.service.js';
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Constants
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
const ILINK_API_BASE = 'https://ilinkai.weixin.qq.com';
|
|
21
|
+
/** Endpoints for the iLink Bot API. */
|
|
22
|
+
const ENDPOINTS = {
|
|
23
|
+
GET_QR_CODE: '/ilink/bot/get_bot_qrcode',
|
|
24
|
+
QR_CODE_STATUS: '/ilink/bot/get_qrcode_status',
|
|
25
|
+
GET_UPDATES: '/ilink/bot/getupdates',
|
|
26
|
+
SEND_MESSAGE: '/ilink/bot/sendmessage',
|
|
27
|
+
};
|
|
28
|
+
/** Default poll timeout for long-polling (seconds). */
|
|
29
|
+
const POLL_TIMEOUT_S = 35;
|
|
30
|
+
/** QR code status poll interval (milliseconds). */
|
|
31
|
+
const QR_STATUS_POLL_INTERVAL_MS = 5000;
|
|
32
|
+
/** Max time to wait for QR scan (milliseconds). */
|
|
33
|
+
const QR_SCAN_TIMEOUT_MS = 300_000;
|
|
34
|
+
/** Config storage path. */
|
|
35
|
+
const CONFIG_DIR = join(homedir(), '.crewly', 'wechat');
|
|
36
|
+
const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Service
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
/**
|
|
41
|
+
* WeChat iLink Bot Service.
|
|
42
|
+
*
|
|
43
|
+
* Singleton service that manages the WeChat bot connection lifecycle:
|
|
44
|
+
* - QR code generation for login
|
|
45
|
+
* - Long-polling for incoming messages
|
|
46
|
+
* - Sending replies
|
|
47
|
+
* - Persisting credentials to disk
|
|
48
|
+
*
|
|
49
|
+
* Events:
|
|
50
|
+
* - `message` — Fired for each incoming WeChat message
|
|
51
|
+
* - `connected` — Fired when QR code scan is confirmed
|
|
52
|
+
* - `disconnected` — Fired when service disconnects
|
|
53
|
+
* - `error` — Fired on unrecoverable errors
|
|
54
|
+
*/
|
|
55
|
+
export class WeChatService extends EventEmitter {
|
|
56
|
+
static instance = null;
|
|
57
|
+
logger;
|
|
58
|
+
state = 'disconnected';
|
|
59
|
+
botToken = null;
|
|
60
|
+
botName = null;
|
|
61
|
+
pollCursor = null;
|
|
62
|
+
pollTimer = null;
|
|
63
|
+
isPolling = false;
|
|
64
|
+
constructor() {
|
|
65
|
+
super();
|
|
66
|
+
this.logger = LoggerService.getInstance().createComponentLogger('WeChatService');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get the singleton instance.
|
|
70
|
+
*
|
|
71
|
+
* @returns WeChatService instance
|
|
72
|
+
*/
|
|
73
|
+
static getInstance() {
|
|
74
|
+
if (!WeChatService.instance) {
|
|
75
|
+
WeChatService.instance = new WeChatService();
|
|
76
|
+
}
|
|
77
|
+
return WeChatService.instance;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Reset the singleton (for testing).
|
|
81
|
+
*/
|
|
82
|
+
static resetInstance() {
|
|
83
|
+
if (WeChatService.instance) {
|
|
84
|
+
WeChatService.instance.disconnect();
|
|
85
|
+
}
|
|
86
|
+
WeChatService.instance = null;
|
|
87
|
+
}
|
|
88
|
+
// -------------------------------------------------------------------------
|
|
89
|
+
// Public API
|
|
90
|
+
// -------------------------------------------------------------------------
|
|
91
|
+
/**
|
|
92
|
+
* Get a QR code for WeChat login.
|
|
93
|
+
*
|
|
94
|
+
* Calls the iLink API to generate a QR code that the user scans
|
|
95
|
+
* with their WeChat app to authorize the bot.
|
|
96
|
+
*
|
|
97
|
+
* @returns QR code URL and ticket for status polling
|
|
98
|
+
* @throws Error if API call fails
|
|
99
|
+
*/
|
|
100
|
+
async getQRCode() {
|
|
101
|
+
this.state = 'connecting';
|
|
102
|
+
this.logger.info('Requesting WeChat login QR code');
|
|
103
|
+
const response = await fetch(`${ILINK_API_BASE}${ENDPOINTS.GET_QR_CODE}?bot_type=3`, {
|
|
104
|
+
method: 'GET',
|
|
105
|
+
headers: { 'Content-Type': 'application/json' },
|
|
106
|
+
});
|
|
107
|
+
if (!response.ok) {
|
|
108
|
+
this.state = 'error';
|
|
109
|
+
throw new Error(`Failed to get QR code: ${response.status}`);
|
|
110
|
+
}
|
|
111
|
+
const data = await response.json();
|
|
112
|
+
if (data.errcode && data.errcode !== 0) {
|
|
113
|
+
this.state = 'error';
|
|
114
|
+
throw new Error(`iLink API error: ${data.errmsg || data.errcode}`);
|
|
115
|
+
}
|
|
116
|
+
const qrData = data.data || data;
|
|
117
|
+
this.logger.info('QR code generated', { hasUrl: !!qrData.qrcode_url });
|
|
118
|
+
return qrData;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Poll the QR code status until the user scans and confirms.
|
|
122
|
+
*
|
|
123
|
+
* @param ticket - QR code ticket from getQRCode()
|
|
124
|
+
* @returns Resolved when confirmed, rejected on timeout/error
|
|
125
|
+
*/
|
|
126
|
+
async pollQRCodeStatus(ticket) {
|
|
127
|
+
const startTime = Date.now();
|
|
128
|
+
return new Promise((resolve, reject) => {
|
|
129
|
+
const checkStatus = async () => {
|
|
130
|
+
if (Date.now() - startTime > QR_SCAN_TIMEOUT_MS) {
|
|
131
|
+
this.state = 'disconnected';
|
|
132
|
+
reject(new Error('QR code scan timed out'));
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
const response = await fetch(`${ILINK_API_BASE}${ENDPOINTS.QR_CODE_STATUS}`, {
|
|
137
|
+
method: 'POST',
|
|
138
|
+
headers: { 'Content-Type': 'application/json' },
|
|
139
|
+
body: JSON.stringify({ qrcode_ticket: ticket }),
|
|
140
|
+
});
|
|
141
|
+
if (!response.ok) {
|
|
142
|
+
throw new Error(`Status check failed: ${response.status}`);
|
|
143
|
+
}
|
|
144
|
+
const data = await response.json();
|
|
145
|
+
const status = data.data || data;
|
|
146
|
+
if (status.status === 'confirmed' && status.bot_token) {
|
|
147
|
+
this.botToken = status.bot_token;
|
|
148
|
+
this.botName = status.bot_name || null;
|
|
149
|
+
this.state = 'connected';
|
|
150
|
+
await this.persistConfig();
|
|
151
|
+
this.startMessagePolling();
|
|
152
|
+
this.emit('connected', { botName: this.botName });
|
|
153
|
+
this.logger.info('WeChat connected', { botName: this.botName });
|
|
154
|
+
resolve({ botToken: status.bot_token, botName: status.bot_name });
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
if (status.status === 'expired') {
|
|
158
|
+
this.state = 'disconnected';
|
|
159
|
+
reject(new Error('QR code expired'));
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
// Continue polling
|
|
163
|
+
setTimeout(checkStatus, QR_STATUS_POLL_INTERVAL_MS);
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
this.logger.warn('QR status poll error', {
|
|
167
|
+
error: err instanceof Error ? err.message : String(err),
|
|
168
|
+
});
|
|
169
|
+
// Retry on transient errors
|
|
170
|
+
setTimeout(checkStatus, QR_STATUS_POLL_INTERVAL_MS);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
checkStatus();
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Send a message via WeChat.
|
|
178
|
+
*
|
|
179
|
+
* @param content - Message text
|
|
180
|
+
* @param contextToken - Context token from the received message (maintains thread)
|
|
181
|
+
* @throws Error if not connected or API call fails
|
|
182
|
+
*/
|
|
183
|
+
async sendMessage(content, contextToken) {
|
|
184
|
+
if (!this.botToken) {
|
|
185
|
+
throw new Error('WeChat is not connected');
|
|
186
|
+
}
|
|
187
|
+
const response = await fetch(`${ILINK_API_BASE}${ENDPOINTS.SEND_MESSAGE}`, {
|
|
188
|
+
method: 'POST',
|
|
189
|
+
headers: this.authHeaders(),
|
|
190
|
+
body: JSON.stringify({
|
|
191
|
+
msg_type: 'text',
|
|
192
|
+
content: { text: content },
|
|
193
|
+
context_token: contextToken,
|
|
194
|
+
}),
|
|
195
|
+
});
|
|
196
|
+
if (!response.ok) {
|
|
197
|
+
const errorText = await response.text().catch(() => '');
|
|
198
|
+
throw new Error(`Failed to send message: ${response.status} ${errorText}`);
|
|
199
|
+
}
|
|
200
|
+
this.logger.info('WeChat message sent', { contentLength: content.length });
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get the current connection state.
|
|
204
|
+
*
|
|
205
|
+
* @returns Connection status object
|
|
206
|
+
*/
|
|
207
|
+
getStatus() {
|
|
208
|
+
return {
|
|
209
|
+
state: this.state,
|
|
210
|
+
botName: this.botName,
|
|
211
|
+
connectedAt: this.state === 'connected' ? new Date().toISOString() : null,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Check if the service is connected.
|
|
216
|
+
*
|
|
217
|
+
* @returns True if connected with a valid bot token
|
|
218
|
+
*/
|
|
219
|
+
isConnected() {
|
|
220
|
+
return this.state === 'connected' && !!this.botToken;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Disconnect and stop message polling.
|
|
224
|
+
*/
|
|
225
|
+
disconnect() {
|
|
226
|
+
this.logger.info('Disconnecting WeChat');
|
|
227
|
+
this.stopMessagePolling();
|
|
228
|
+
this.botToken = null;
|
|
229
|
+
this.botName = null;
|
|
230
|
+
this.pollCursor = null;
|
|
231
|
+
this.state = 'disconnected';
|
|
232
|
+
this.emit('disconnected');
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Try to restore connection from persisted config.
|
|
236
|
+
*
|
|
237
|
+
* @returns True if config was loaded and connection restored
|
|
238
|
+
*/
|
|
239
|
+
async tryRestore() {
|
|
240
|
+
try {
|
|
241
|
+
const config = await this.loadConfig();
|
|
242
|
+
if (config?.botToken) {
|
|
243
|
+
this.botToken = config.botToken;
|
|
244
|
+
this.botName = config.botName || null;
|
|
245
|
+
this.state = 'connected';
|
|
246
|
+
this.startMessagePolling();
|
|
247
|
+
this.logger.info('WeChat connection restored from config', { botName: this.botName });
|
|
248
|
+
return true;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
// Config doesn't exist or is invalid
|
|
253
|
+
}
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
// -------------------------------------------------------------------------
|
|
257
|
+
// Internal: Message Polling
|
|
258
|
+
// -------------------------------------------------------------------------
|
|
259
|
+
/**
|
|
260
|
+
* Start long-polling for incoming messages.
|
|
261
|
+
*/
|
|
262
|
+
startMessagePolling() {
|
|
263
|
+
if (this.isPolling)
|
|
264
|
+
return;
|
|
265
|
+
this.isPolling = true;
|
|
266
|
+
this.pollMessages();
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Stop message polling.
|
|
270
|
+
*/
|
|
271
|
+
stopMessagePolling() {
|
|
272
|
+
this.isPolling = false;
|
|
273
|
+
if (this.pollTimer) {
|
|
274
|
+
clearTimeout(this.pollTimer);
|
|
275
|
+
this.pollTimer = null;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Long-poll for new messages from the iLink API.
|
|
280
|
+
* Automatically reschedules on completion or error.
|
|
281
|
+
*/
|
|
282
|
+
async pollMessages() {
|
|
283
|
+
if (!this.isPolling || !this.botToken)
|
|
284
|
+
return;
|
|
285
|
+
try {
|
|
286
|
+
const body = { timeout: POLL_TIMEOUT_S };
|
|
287
|
+
if (this.pollCursor) {
|
|
288
|
+
body.cursor = this.pollCursor;
|
|
289
|
+
}
|
|
290
|
+
const controller = new AbortController();
|
|
291
|
+
const timeoutId = setTimeout(() => controller.abort(), (POLL_TIMEOUT_S + 10) * 1000);
|
|
292
|
+
const response = await fetch(`${ILINK_API_BASE}${ENDPOINTS.GET_UPDATES}`, {
|
|
293
|
+
method: 'POST',
|
|
294
|
+
headers: this.authHeaders(),
|
|
295
|
+
body: JSON.stringify(body),
|
|
296
|
+
signal: controller.signal,
|
|
297
|
+
});
|
|
298
|
+
clearTimeout(timeoutId);
|
|
299
|
+
if (!response.ok) {
|
|
300
|
+
if (response.status === 401 || response.status === 403) {
|
|
301
|
+
this.logger.error('WeChat auth failed during polling — disconnecting');
|
|
302
|
+
this.state = 'error';
|
|
303
|
+
this.stopMessagePolling();
|
|
304
|
+
this.emit('error', new Error('Authentication failed'));
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
throw new Error(`Poll failed: ${response.status}`);
|
|
308
|
+
}
|
|
309
|
+
const data = await response.json();
|
|
310
|
+
if (data.data?.cursor) {
|
|
311
|
+
this.pollCursor = data.data.cursor;
|
|
312
|
+
}
|
|
313
|
+
const messages = data.data?.messages || [];
|
|
314
|
+
for (const msg of messages) {
|
|
315
|
+
this.logger.info('WeChat message received', {
|
|
316
|
+
from: msg.from_user_name,
|
|
317
|
+
type: msg.msg_type,
|
|
318
|
+
contentLength: msg.content.length,
|
|
319
|
+
});
|
|
320
|
+
this.emit('message', msg);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
catch (err) {
|
|
324
|
+
if (err instanceof Error && err.name === 'AbortError') {
|
|
325
|
+
// Timeout — normal for long-polling
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
this.logger.warn('WeChat poll error', {
|
|
329
|
+
error: err instanceof Error ? err.message : String(err),
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
// Schedule next poll immediately (long-polling is self-regulating)
|
|
334
|
+
if (this.isPolling) {
|
|
335
|
+
this.pollTimer = setTimeout(() => this.pollMessages(), 1000);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
// -------------------------------------------------------------------------
|
|
339
|
+
// Internal: Config Persistence
|
|
340
|
+
// -------------------------------------------------------------------------
|
|
341
|
+
/**
|
|
342
|
+
* Persist bot token to disk.
|
|
343
|
+
*/
|
|
344
|
+
async persistConfig() {
|
|
345
|
+
try {
|
|
346
|
+
await mkdir(CONFIG_DIR, { recursive: true });
|
|
347
|
+
const config = {
|
|
348
|
+
botToken: this.botToken,
|
|
349
|
+
connectedAt: new Date().toISOString(),
|
|
350
|
+
botName: this.botName || undefined,
|
|
351
|
+
};
|
|
352
|
+
await writeFile(CONFIG_FILE, JSON.stringify(config, null, 2), 'utf-8');
|
|
353
|
+
this.logger.debug('WeChat config persisted');
|
|
354
|
+
}
|
|
355
|
+
catch (err) {
|
|
356
|
+
this.logger.warn('Failed to persist WeChat config', {
|
|
357
|
+
error: err instanceof Error ? err.message : String(err),
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Load persisted config from disk.
|
|
363
|
+
*
|
|
364
|
+
* @returns Config or null if not found
|
|
365
|
+
*/
|
|
366
|
+
async loadConfig() {
|
|
367
|
+
try {
|
|
368
|
+
const data = await readFile(CONFIG_FILE, 'utf-8');
|
|
369
|
+
return JSON.parse(data);
|
|
370
|
+
}
|
|
371
|
+
catch {
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Remove persisted config from disk.
|
|
377
|
+
*/
|
|
378
|
+
async removeConfig() {
|
|
379
|
+
try {
|
|
380
|
+
const { unlink } = await import('fs/promises');
|
|
381
|
+
await unlink(CONFIG_FILE);
|
|
382
|
+
}
|
|
383
|
+
catch {
|
|
384
|
+
// File may not exist
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
// -------------------------------------------------------------------------
|
|
388
|
+
// Internal: Helpers
|
|
389
|
+
// -------------------------------------------------------------------------
|
|
390
|
+
/**
|
|
391
|
+
* Build authorization headers for iLink API.
|
|
392
|
+
*
|
|
393
|
+
* @returns Headers with Bearer token and AuthorizationType
|
|
394
|
+
*/
|
|
395
|
+
authHeaders() {
|
|
396
|
+
return {
|
|
397
|
+
'Content-Type': 'application/json',
|
|
398
|
+
Authorization: `Bearer ${this.botToken}`,
|
|
399
|
+
AuthorizationType: 'ilink_bot_token',
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Get the WeChat service singleton.
|
|
405
|
+
*
|
|
406
|
+
* @returns WeChatService instance
|
|
407
|
+
*/
|
|
408
|
+
export function getWeChatService() {
|
|
409
|
+
return WeChatService.getInstance();
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=wechat.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wechat.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/wechat/wechat.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1113,6 +1113,7 @@ export declare const MESSAGE_SOURCES: {
|
|
|
1113
1113
|
readonly GOOGLE_CHAT: "google_chat";
|
|
1114
1114
|
readonly TELEGRAM: "telegram";
|
|
1115
1115
|
readonly CROSS_MACHINE: "cross-machine";
|
|
1116
|
+
readonly WECHAT: "wechat";
|
|
1116
1117
|
};
|
|
1117
1118
|
/**
|
|
1118
1119
|
* Constants for Google Chat Pub/Sub integration.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../backend/src/constants.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../backend/src/constants.ts"],"names":[],"mappings":"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"}
|