n8n-nodes-microsoft-teams-bot 1.2.5 → 1.2.7
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/nodes/TeamsBot/TeamsBot.node.d.ts +8 -1
- package/dist/nodes/TeamsBot/TeamsBot.node.js +122 -88
- package/dist/nodes/TeamsBot/TeamsBot.node.js.map +1 -1
- package/dist/nodes/TeamsBot/actions/messages.d.ts +4 -0
- package/dist/nodes/TeamsBot/actions/messages.js +115 -66
- package/dist/nodes/TeamsBot/actions/messages.js.map +1 -1
- package/dist/nodes/TeamsBot/errors/graphApi.d.ts +1 -1
- package/dist/nodes/TeamsBot/errors/graphApi.js +23 -3
- package/dist/nodes/TeamsBot/errors/graphApi.js.map +1 -1
- package/dist/nodes/TeamsBot/transport/api/GraphApi.d.ts +8 -0
- package/dist/nodes/TeamsBot/transport/api/GraphApi.js +101 -18
- package/dist/nodes/TeamsBot/transport/api/GraphApi.js.map +1 -1
- package/dist/nodes/TeamsBot/transport/api/GraphApiClient.d.ts +15 -0
- package/dist/nodes/TeamsBot/transport/api/GraphApiClient.js +160 -8
- package/dist/nodes/TeamsBot/transport/api/GraphApiClient.js.map +1 -1
- package/package.json +2 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IExecuteFunctions, ICredentialTestFunctions, ICredentialsDecrypted, INodeCredentialTestResult, INodeType, INodeTypeDescription, INodeTypeBaseDescription, INodeExecutionData, IWebhookFunctions, IWebhookResponseData } from 'n8n-workflow';
|
|
1
|
+
import type { IExecuteFunctions, ICredentialTestFunctions, ICredentialsDecrypted, INodeCredentialTestResult, INodeType, INodeTypeDescription, INodeTypeBaseDescription, INodeExecutionData, IWebhookFunctions, IWebhookResponseData, IHookFunctions } from 'n8n-workflow';
|
|
2
2
|
import * as listSearch from './methods/listSearch';
|
|
3
3
|
export declare class TeamsBot implements INodeType {
|
|
4
4
|
description: INodeTypeDescription;
|
|
@@ -14,5 +14,12 @@ export declare class TeamsBot implements INodeType {
|
|
|
14
14
|
};
|
|
15
15
|
};
|
|
16
16
|
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
17
|
+
webhookMethods: {
|
|
18
|
+
default: {
|
|
19
|
+
checkExists(this: IHookFunctions): Promise<boolean>;
|
|
20
|
+
create(this: IHookFunctions): Promise<boolean>;
|
|
21
|
+
delete(this: IHookFunctions): Promise<boolean>;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
17
24
|
webhook(this: IWebhookFunctions): Promise<IWebhookResponseData>;
|
|
18
25
|
}
|
|
@@ -165,6 +165,28 @@ class TeamsBot {
|
|
|
165
165
|
},
|
|
166
166
|
},
|
|
167
167
|
};
|
|
168
|
+
this.webhookMethods = {
|
|
169
|
+
default: {
|
|
170
|
+
async checkExists() {
|
|
171
|
+
// Webhook always exists when node is active
|
|
172
|
+
return true;
|
|
173
|
+
},
|
|
174
|
+
async create() {
|
|
175
|
+
// Store webhook URL in node static data for sendAndWait operations
|
|
176
|
+
const webhookUrl = this.getNodeWebhookUrl('default');
|
|
177
|
+
const nodeStaticData = this.getWorkflowStaticData('node');
|
|
178
|
+
nodeStaticData.webhookUrl = webhookUrl;
|
|
179
|
+
console.log('[TeamsBot] Webhook created and URL stored:', webhookUrl);
|
|
180
|
+
return true;
|
|
181
|
+
},
|
|
182
|
+
async delete() {
|
|
183
|
+
// Clean up node static data
|
|
184
|
+
const nodeStaticData = this.getWorkflowStaticData('node');
|
|
185
|
+
delete nodeStaticData.webhookUrl;
|
|
186
|
+
return true;
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
};
|
|
168
190
|
const nodeDesc = this.getNodeDescription();
|
|
169
191
|
this.description = {
|
|
170
192
|
...baseDescription,
|
|
@@ -192,8 +214,8 @@ class TeamsBot {
|
|
|
192
214
|
httpMethod: 'POST',
|
|
193
215
|
responseMode: 'onReceived',
|
|
194
216
|
path: '={{ $nodeId }}',
|
|
195
|
-
restartWebhook: true,
|
|
196
|
-
isFullPath
|
|
217
|
+
restartWebhook: true, // Enables resuming waiting executions
|
|
218
|
+
// isFullPath omitted (defaults to false) - n8n builds full webhook URL
|
|
197
219
|
},
|
|
198
220
|
],
|
|
199
221
|
credentials: [
|
|
@@ -523,10 +545,10 @@ class TeamsBot {
|
|
|
523
545
|
return router_1.router.call(this);
|
|
524
546
|
}
|
|
525
547
|
async webhook() {
|
|
526
|
-
var _a;
|
|
548
|
+
var _a, _b, _c, _d, _e;
|
|
527
549
|
const req = this.getRequestObject();
|
|
528
550
|
const res = this.getResponseObject();
|
|
529
|
-
// Handle Graph API validation
|
|
551
|
+
// 1. Handle Graph API validation
|
|
530
552
|
// Graph API sends validation requests as POST with a validationToken query parameter
|
|
531
553
|
const validationToken = req.query.validationToken;
|
|
532
554
|
if (validationToken) {
|
|
@@ -534,96 +556,108 @@ class TeamsBot {
|
|
|
534
556
|
res.status(200).contentType('text/plain').send(validationToken);
|
|
535
557
|
return { noWebhookResponse: true };
|
|
536
558
|
}
|
|
537
|
-
// Handle Graph API
|
|
538
|
-
if (req.method
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
const credentials = await this.getCredentials('teamsBotApi');
|
|
566
|
-
const graphClient = new index_1.GraphApiClient(this, credentials);
|
|
567
|
-
// Fetch full resource data if not included
|
|
568
|
-
let resourceData = notification.resourceData;
|
|
569
|
-
if (!resourceData && notification.resourceUrl) {
|
|
570
|
-
try {
|
|
571
|
-
resourceData = await graphClient.getResource(notification.resourceUrl);
|
|
572
|
-
}
|
|
573
|
-
catch (error) {
|
|
574
|
-
this.logger.warn(`Failed to fetch resource data: ${error}`);
|
|
575
|
-
// Continue without resource data
|
|
576
|
-
}
|
|
559
|
+
// 2. Handle Graph API notifications (POST)
|
|
560
|
+
if (req.method !== 'POST') {
|
|
561
|
+
res.status(405).json({ error: 'Method not allowed' });
|
|
562
|
+
return { noWebhookResponse: true };
|
|
563
|
+
}
|
|
564
|
+
try {
|
|
565
|
+
const body = req.body;
|
|
566
|
+
// Parse Graph API notification envelope
|
|
567
|
+
const parser = new graphNotificationParser_1.GraphNotificationParser();
|
|
568
|
+
const notifications = parser.parseNotification(body);
|
|
569
|
+
if (notifications.length === 0) {
|
|
570
|
+
res.status(202).json({ status: 'Accepted' });
|
|
571
|
+
return { noWebhookResponse: true };
|
|
572
|
+
}
|
|
573
|
+
// Get credentials and Graph client once per request
|
|
574
|
+
const credentials = await this.getCredentials('teamsBotApi');
|
|
575
|
+
const graphClient = new index_1.GraphApiClient(this, credentials);
|
|
576
|
+
// Get workflow static data for send-and-wait executions
|
|
577
|
+
const workflowStaticData = this.getWorkflowStaticData('global');
|
|
578
|
+
if (!workflowStaticData.sendAndWaitExecutions) {
|
|
579
|
+
workflowStaticData.sendAndWaitExecutions = {};
|
|
580
|
+
}
|
|
581
|
+
// Clean up expired waiting executions BEFORE processing notifications
|
|
582
|
+
const now = Date.now();
|
|
583
|
+
for (const [key, context] of Object.entries(workflowStaticData.sendAndWaitExecutions)) {
|
|
584
|
+
if (context.expiresAt < now) {
|
|
585
|
+
try {
|
|
586
|
+
await graphClient.deleteSubscription(context.subscriptionId);
|
|
577
587
|
}
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
if (notification.changeType === 'created' && isReply) {
|
|
582
|
-
// Clean up subscription
|
|
583
|
-
try {
|
|
584
|
-
await graphClient.deleteSubscription(subscriptionId);
|
|
585
|
-
}
|
|
586
|
-
catch (error) {
|
|
587
|
-
// Log but don't fail - subscription will expire anyway
|
|
588
|
-
this.logger.warn(`Failed to delete subscription ${subscriptionId}: ${error}`);
|
|
589
|
-
}
|
|
590
|
-
// Return data to resume execution and let n8n send the webhook response
|
|
591
|
-
return {
|
|
592
|
-
webhookResponse: '{"status":"Accepted"}',
|
|
593
|
-
workflowData: [
|
|
594
|
-
[
|
|
595
|
-
{
|
|
596
|
-
json: {
|
|
597
|
-
message: resourceData,
|
|
598
|
-
replyText: (_a = resourceData === null || resourceData === void 0 ? void 0 : resourceData.body) === null || _a === void 0 ? void 0 : _a.content,
|
|
599
|
-
from: resourceData === null || resourceData === void 0 ? void 0 : resourceData.from,
|
|
600
|
-
messageId: resourceData === null || resourceData === void 0 ? void 0 : resourceData.id,
|
|
601
|
-
replyToId: resourceData === null || resourceData === void 0 ? void 0 : resourceData.replyToId,
|
|
602
|
-
createdDateTime: resourceData === null || resourceData === void 0 ? void 0 : resourceData.createdDateTime,
|
|
603
|
-
},
|
|
604
|
-
},
|
|
605
|
-
],
|
|
606
|
-
],
|
|
607
|
-
};
|
|
588
|
+
catch (error) {
|
|
589
|
+
// Subscription may already be deleted - log but don't fail
|
|
590
|
+
this.logger.warn(`Failed to delete expired subscription ${context.subscriptionId}: ${String(error)}`);
|
|
608
591
|
}
|
|
592
|
+
delete workflowStaticData.sendAndWaitExecutions[key];
|
|
609
593
|
}
|
|
610
|
-
// No matching reply found, return accepted
|
|
611
|
-
res.status(202).json({ status: 'Accepted' });
|
|
612
|
-
return { noWebhookResponse: true };
|
|
613
594
|
}
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
595
|
+
// Process notifications and try to resume a waiting execution
|
|
596
|
+
for (const notification of notifications) {
|
|
597
|
+
// Extract subscription ID + message ID from clientState
|
|
598
|
+
// Expected format: sendAndWait_{subscriptionId}_{originalMessageId}
|
|
599
|
+
const match = (_a = notification.clientState) === null || _a === void 0 ? void 0 : _a.match(/^sendAndWait_(.+)_(.+)$/);
|
|
600
|
+
if (!match) {
|
|
601
|
+
continue;
|
|
602
|
+
}
|
|
603
|
+
const [, subscriptionId, originalMessageId] = match;
|
|
604
|
+
const executionKey = `${subscriptionId}_${originalMessageId}`;
|
|
605
|
+
const executionContext = workflowStaticData.sendAndWaitExecutions[executionKey];
|
|
606
|
+
if (!executionContext) {
|
|
607
|
+
// No matching waiting execution for this notification
|
|
608
|
+
continue;
|
|
609
|
+
}
|
|
610
|
+
// Fetch reply message content
|
|
611
|
+
// notification.resource or notification.resourceUrl is the Graph API path
|
|
612
|
+
// notification.resourceData is only present if includeResourceData: true (we use false)
|
|
613
|
+
const resourcePath = (_b = notification.resourceUrl) !== null && _b !== void 0 ? _b : notification.resource;
|
|
614
|
+
const resourceData = (_c = notification.resourceData) !== null && _c !== void 0 ? _c : (resourcePath
|
|
615
|
+
? await graphClient.getResource(resourcePath)
|
|
616
|
+
: undefined);
|
|
617
|
+
if (!resourceData) {
|
|
618
|
+
// No resource data available - log and continue
|
|
619
|
+
console.warn('[TeamsBot][Webhook] No resource data for notification', {
|
|
620
|
+
subscriptionId,
|
|
621
|
+
resourcePath,
|
|
622
|
+
});
|
|
623
|
+
continue;
|
|
624
|
+
}
|
|
625
|
+
// Build reply data payload for resumed execution
|
|
626
|
+
const replyData = {
|
|
627
|
+
messageId: resourceData.id,
|
|
628
|
+
content: ((_d = resourceData.body) === null || _d === void 0 ? void 0 : _d.content) || '',
|
|
629
|
+
contentType: ((_e = resourceData.body) === null || _e === void 0 ? void 0 : _e.contentType) || 'text',
|
|
630
|
+
from: resourceData.from,
|
|
631
|
+
createdDateTime: resourceData.createdDateTime,
|
|
632
|
+
notification,
|
|
633
|
+
};
|
|
634
|
+
// Clean up: delete subscription and execution context
|
|
635
|
+
try {
|
|
636
|
+
await graphClient.deleteSubscription(subscriptionId);
|
|
637
|
+
}
|
|
638
|
+
catch (error) {
|
|
639
|
+
// Subscription may already be deleted - log but don't fail
|
|
640
|
+
this.logger.warn(`Failed to delete subscription ${subscriptionId}: ${String(error)}`);
|
|
641
|
+
}
|
|
642
|
+
delete workflowStaticData.sendAndWaitExecutions[executionKey];
|
|
643
|
+
// Resume execution - n8n will send 200 OK automatically
|
|
644
|
+
return {
|
|
645
|
+
workflowData: [[{ json: replyData }]],
|
|
646
|
+
};
|
|
622
647
|
}
|
|
648
|
+
// No matching execution found - acknowledge notification manually
|
|
649
|
+
res.status(202).json({ status: 'Accepted' });
|
|
650
|
+
return { noWebhookResponse: true };
|
|
651
|
+
}
|
|
652
|
+
catch (error) {
|
|
653
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
654
|
+
this.logger.error(`Graph API webhook error: ${errorMessage}`, { error });
|
|
655
|
+
res.status(500).json({
|
|
656
|
+
error: 'Internal server error',
|
|
657
|
+
message: errorMessage,
|
|
658
|
+
});
|
|
659
|
+
return { noWebhookResponse: true };
|
|
623
660
|
}
|
|
624
|
-
// Unknown method
|
|
625
|
-
res.status(405).json({ error: 'Method not allowed' });
|
|
626
|
-
return { noWebhookResponse: true };
|
|
627
661
|
}
|
|
628
662
|
}
|
|
629
663
|
exports.TeamsBot = TeamsBot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TeamsBot.node.js","sourceRoot":"","sources":["../../../nodes/TeamsBot/TeamsBot.node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TeamsBot.node.js","sourceRoot":"","sources":["../../../nodes/TeamsBot/TeamsBot.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,10 @@ export declare const messageOperations: {
|
|
|
23
23
|
* Sends a message and waits for a response using Graph API subscriptions.
|
|
24
24
|
* Creates a subscription to monitor replies and resumes execution when reply received.
|
|
25
25
|
* Works with both active and manual workflows.
|
|
26
|
+
*
|
|
27
|
+
* Supports both **channel** and **1:1 chat** recipients when the Teams app is
|
|
28
|
+
* installed for the user and the Graph app has appropriate chat message permissions
|
|
29
|
+
* (for example, Chat.Read.All / Chat.ReadWrite.All + RSC).
|
|
26
30
|
*/
|
|
27
31
|
sendAndWait(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
28
32
|
/**
|
|
@@ -156,7 +156,7 @@ function validateMessageParams(params, requiredFields, executeFunctions, itemInd
|
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
158
|
* Gets the 1:1 chat ID between a user and the Teams app
|
|
159
|
-
* Uses app-only compatible Graph API pattern via installedApps
|
|
159
|
+
* Uses app-only compatible Graph API pattern via installedApps + chat relationship
|
|
160
160
|
* @param graphClient - Graph API client
|
|
161
161
|
* @param targetUserId - Target user ID or email
|
|
162
162
|
* @param api - Teams API client for user resolution
|
|
@@ -167,10 +167,10 @@ async function getChatIdForUser(graphClient, targetUserId, api, teamsAppId) {
|
|
|
167
167
|
var _a;
|
|
168
168
|
// 1. Resolve target user to AAD ID (or canonical ID)
|
|
169
169
|
const targetAadId = await api.resolveUserId(targetUserId);
|
|
170
|
-
// 2. Get installed apps for this user, including
|
|
170
|
+
// 2. Get installed apps for this user, including app + definition (chat must be fetched separately)
|
|
171
171
|
const installedApps = await graphClient.makeRequest({
|
|
172
172
|
method: 'GET',
|
|
173
|
-
url: `/users/${targetAadId}/teamwork/installedApps?$expand=teamsAppDefinition
|
|
173
|
+
url: `/users/${targetAadId}/teamwork/installedApps?$expand=teamsApp,teamsAppDefinition`,
|
|
174
174
|
});
|
|
175
175
|
const apps = installedApps.value || [];
|
|
176
176
|
// 3. Find our Teams app by teamsAppId
|
|
@@ -458,6 +458,10 @@ exports.messageOperations = {
|
|
|
458
458
|
* Sends a message and waits for a response using Graph API subscriptions.
|
|
459
459
|
* Creates a subscription to monitor replies and resumes execution when reply received.
|
|
460
460
|
* Works with both active and manual workflows.
|
|
461
|
+
*
|
|
462
|
+
* Supports both **channel** and **1:1 chat** recipients when the Teams app is
|
|
463
|
+
* installed for the user and the Graph app has appropriate chat message permissions
|
|
464
|
+
* (for example, Chat.Read.All / Chat.ReadWrite.All + RSC).
|
|
461
465
|
*/
|
|
462
466
|
async sendAndWait() {
|
|
463
467
|
const items = this.getInputData();
|
|
@@ -475,18 +479,12 @@ exports.messageOperations = {
|
|
|
475
479
|
const message = this.getNodeParameter('message', i);
|
|
476
480
|
const recipientType = this.getNodeParameter('recipientType', i);
|
|
477
481
|
const timeout = this.getNodeParameter('timeout', i, 300); // Default 5 minutes
|
|
482
|
+
console.log('[TeamsBot][SendAndWait] Starting send-and-wait operation', {
|
|
483
|
+
recipientType,
|
|
484
|
+
timeout,
|
|
485
|
+
messageLength: message.length,
|
|
486
|
+
});
|
|
478
487
|
const nodeOptions = this.getNodeParameter('options', i, {});
|
|
479
|
-
// Get required fields based on recipient type
|
|
480
|
-
let teamId;
|
|
481
|
-
let channelId;
|
|
482
|
-
let userId;
|
|
483
|
-
if (recipientType === 'channel') {
|
|
484
|
-
teamId = this.getNodeParameter('teamId', i);
|
|
485
|
-
channelId = this.getNodeParameter('channelId', i);
|
|
486
|
-
}
|
|
487
|
-
else if (recipientType === 'chat') {
|
|
488
|
-
userId = this.getNodeParameter('userId', i);
|
|
489
|
-
}
|
|
490
488
|
// Get credentials for Graph API
|
|
491
489
|
const credentials = await this.getCredentials('teamsBotApi');
|
|
492
490
|
const graphClient = new index_1.GraphApiClient(this, credentials);
|
|
@@ -500,70 +498,93 @@ exports.messageOperations = {
|
|
|
500
498
|
const options = {
|
|
501
499
|
textFormat: 'xml', // Teams uses 'xml' for HTML content
|
|
502
500
|
};
|
|
503
|
-
// 1. Send Teams message first
|
|
504
|
-
let chatId;
|
|
501
|
+
// 1. Send Teams message first (channel or chat)
|
|
505
502
|
let resource;
|
|
506
|
-
let messageResponse;
|
|
507
503
|
let originalMessageId;
|
|
508
504
|
if (recipientType === 'channel') {
|
|
509
|
-
//
|
|
505
|
+
// Get required fields for channel recipient
|
|
506
|
+
const teamId = this.getNodeParameter('teamId', i);
|
|
507
|
+
const channelId = this.getNodeParameter('channelId', i);
|
|
508
|
+
console.log('[TeamsBot][SendAndWait] Sending channel message via Bot Framework', {
|
|
509
|
+
teamId,
|
|
510
|
+
channelId,
|
|
511
|
+
});
|
|
512
|
+
// Send channel message via Bot Framework
|
|
510
513
|
const response = await api.sendChannelMessage(teamId, channelId, htmlContent, options);
|
|
511
514
|
resource = `/teams/${teamId}/channels/${channelId}/messages`;
|
|
512
|
-
messageResponse = response;
|
|
513
515
|
// Extract message ID from Bot Framework response
|
|
514
|
-
// Note: Bot Framework returns activity ID, but we need Graph API message ID
|
|
515
|
-
// For now, use the activity ID - we may need to convert this later
|
|
516
|
+
// Note: Bot Framework returns activity ID, but we need Graph API message ID.
|
|
517
|
+
// For now, use the activity ID - we may need to convert this later.
|
|
516
518
|
originalMessageId = response.id || response.activityId || '';
|
|
519
|
+
console.log('[TeamsBot][SendAndWait] Channel message sent successfully', {
|
|
520
|
+
messageId: originalMessageId,
|
|
521
|
+
});
|
|
517
522
|
}
|
|
518
|
-
else {
|
|
519
|
-
//
|
|
523
|
+
else if (recipientType === 'chat') {
|
|
524
|
+
// Get required user for 1:1 chat
|
|
525
|
+
const userId = this.getNodeParameter('userId', i);
|
|
520
526
|
const teamsAppId = credentials.teamsAppId;
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
method: 'POST',
|
|
525
|
-
url: `/chats/${chatId}/messages`,
|
|
526
|
-
body: {
|
|
527
|
-
body: {
|
|
528
|
-
contentType: 'html',
|
|
529
|
-
content: htmlContent,
|
|
530
|
-
},
|
|
531
|
-
},
|
|
527
|
+
console.log('[TeamsBot][SendAndWait] Starting 1:1 chat send-and-wait operation', {
|
|
528
|
+
userId,
|
|
529
|
+
teamsAppId,
|
|
532
530
|
});
|
|
531
|
+
if (!teamsAppId) {
|
|
532
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Teams app ID (teamsAppId) is missing from credentials. It is required for 1:1 chat send and wait.', { itemIndex: i });
|
|
533
|
+
}
|
|
534
|
+
// Proactive check (non-throwing)
|
|
535
|
+
await (0, index_1.handleAutoInstall)(api, userId, i, this);
|
|
536
|
+
// Send 1:1 chat message via Bot Framework (same as regular send operation)
|
|
537
|
+
// Graph API doesn't support sending chat messages with app-only auth
|
|
538
|
+
console.log('[TeamsBot][SendAndWait] Sending 1:1 chat message via Bot Framework');
|
|
539
|
+
const response = await (0, index_1.withAutoInstallRetry)(() => api.sendMessage(userId, htmlContent, options), () => api.installBot(userId), this, userId, 'user');
|
|
540
|
+
// Now resolve the chat ID for the subscription resource
|
|
541
|
+
console.log('[TeamsBot][SendAndWait] Resolving chat ID for subscription via Graph installedApps');
|
|
542
|
+
const chatId = await getChatIdForUser(graphClient, userId, api, teamsAppId);
|
|
543
|
+
console.log('[TeamsBot][SendAndWait] Resolved chat ID:', chatId);
|
|
533
544
|
resource = `/chats/${chatId}/messages`;
|
|
534
|
-
//
|
|
535
|
-
|
|
545
|
+
// Bot Framework returns activity ID, but we need Graph message ID for subscription
|
|
546
|
+
// For now, use the activity ID - the subscription will catch replies regardless
|
|
547
|
+
originalMessageId = response.id || response.activityId || '';
|
|
548
|
+
console.log('[TeamsBot][SendAndWait] Chat message sent successfully', {
|
|
549
|
+
messageId: originalMessageId,
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
else {
|
|
553
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unsupported recipient type: ${recipientType}`, { itemIndex: i });
|
|
536
554
|
}
|
|
537
555
|
if (!originalMessageId) {
|
|
538
556
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Failed to get message ID from response', { itemIndex: i });
|
|
539
557
|
}
|
|
540
|
-
// 2. Build
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
const
|
|
558
|
+
// 2. Build webhook URL from node static data
|
|
559
|
+
// The webhook URL is stored by the node's webhook lifecycle (if webhook is active)
|
|
560
|
+
// For send-and-wait to work, the node must have an active webhook
|
|
561
|
+
const nodeStaticData = this.getWorkflowStaticData('node');
|
|
562
|
+
const webhookUrl = nodeStaticData.webhookUrl;
|
|
563
|
+
console.log('[TeamsBot][SendAndWait] Using node webhook URL for Graph notifications', {
|
|
564
|
+
webhookUrl,
|
|
565
|
+
hasWebhook: !!webhookUrl,
|
|
566
|
+
});
|
|
544
567
|
if (!webhookUrl || !webhookUrl.startsWith('https://')) {
|
|
545
|
-
throw new n8n_workflow_1.NodeOperationError(this.getNode(),
|
|
546
|
-
}
|
|
547
|
-
// 3.
|
|
548
|
-
const
|
|
549
|
-
|
|
568
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Webhook URL not available. The node webhook must be active for send-and-wait operations. Got: "${webhookUrl}"`, { itemIndex: i });
|
|
569
|
+
}
|
|
570
|
+
// 3. Get workflow static data for storing send-and-wait execution context
|
|
571
|
+
const workflowStaticData = this.getWorkflowStaticData('global');
|
|
572
|
+
if (!workflowStaticData.sendAndWaitExecutions) {
|
|
573
|
+
workflowStaticData.sendAndWaitExecutions = {};
|
|
574
|
+
}
|
|
575
|
+
// 4. Calculate timeout and subscription expiration
|
|
576
|
+
// Enforce max timeout for Teams chatMessage subscriptions
|
|
577
|
+
// Graph API only allows up to 60 minutes for /chats/.../messages and /teams/.../channels/.../messages
|
|
578
|
+
const MAX_TIMEOUT_SECONDS = 3300; // 55 minutes (safe buffer under 60 min limit)
|
|
579
|
+
const cappedTimeout = Math.min(timeout, MAX_TIMEOUT_SECONDS);
|
|
580
|
+
const waitTill = new Date(Date.now() + cappedTimeout * 1000);
|
|
581
|
+
// Give subscription slightly longer lifetime (~56 min) than wait time
|
|
582
|
+
// to reduce chance of expiry just before reply
|
|
583
|
+
const expirationDateTime = new Date(Date.now() + (cappedTimeout + 60) * 1000);
|
|
550
584
|
const subscriptionExpiration = expirationDateTime.toISOString();
|
|
551
|
-
//
|
|
552
|
-
// Per Microsoft Graph API Teams chatMessage subscriptions:
|
|
553
|
-
// "If you request a subscription expirationDateTime that is more than 1 hour in the
|
|
554
|
-
// future, you must subscribe to lifecycle notifications by including a
|
|
555
|
-
// lifecycleNotificationUrl property in your subscription request."
|
|
556
|
-
// Reference: https://learn.microsoft.com/en-us/graph/teams-changenotifications-chatmessage
|
|
557
|
-
const oneHourInMs = 60 * 60 * 1000;
|
|
558
|
-
const expirationInMs = expirationDateTime.getTime() - Date.now();
|
|
559
|
-
const requiresLifecycleNotification = expirationInMs > oneHourInMs;
|
|
560
|
-
// 4. Create Graph subscription with initial clientState (message ID only)
|
|
561
|
-
// Required permissions:
|
|
562
|
-
// - Channel messages: ChannelMessage.Read.All (application) or ChannelMessage.Read.All (delegated)
|
|
563
|
-
// - Chat messages: Chat.Read.All (application) or Chat.Read, Chat.ReadWrite (delegated)
|
|
585
|
+
// 5. Create Graph subscription with temporary clientState
|
|
564
586
|
// Using includeResourceData: false to avoid encryption certificate requirements
|
|
565
|
-
|
|
566
|
-
const initialClientState = `sendAndWait_${originalMessageId}_${Date.now()}`;
|
|
587
|
+
const initialClientState = `sendAndWait_temp_${originalMessageId}_${Date.now()}`;
|
|
567
588
|
const subscriptionParams = {
|
|
568
589
|
changeType: 'created',
|
|
569
590
|
notificationUrl: webhookUrl,
|
|
@@ -571,18 +592,46 @@ exports.messageOperations = {
|
|
|
571
592
|
includeResourceData: false,
|
|
572
593
|
expirationDateTime: subscriptionExpiration,
|
|
573
594
|
clientState: initialClientState,
|
|
595
|
+
// lifecycleNotificationUrl omitted - not needed for subscriptions ≤ 60 minutes
|
|
574
596
|
};
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
597
|
+
console.log('[TeamsBot][SendAndWait] Creating Graph subscription', {
|
|
598
|
+
resource,
|
|
599
|
+
notificationUrl: webhookUrl,
|
|
600
|
+
expirationDateTime: subscriptionExpiration,
|
|
601
|
+
cappedTimeout,
|
|
602
|
+
originalTimeout: timeout,
|
|
603
|
+
});
|
|
579
604
|
const subscription = await graphClient.createSubscription(subscriptionParams);
|
|
580
|
-
|
|
605
|
+
console.log('[TeamsBot][SendAndWait] Subscription created successfully', {
|
|
606
|
+
subscriptionId: subscription.id,
|
|
607
|
+
});
|
|
608
|
+
// 6. Update subscription with final clientState (subscription ID + message ID)
|
|
581
609
|
const finalClientState = `sendAndWait_${subscription.id}_${originalMessageId}`;
|
|
582
610
|
await graphClient.updateSubscription(subscription.id, {
|
|
583
611
|
clientState: finalClientState,
|
|
584
612
|
});
|
|
585
|
-
|
|
613
|
+
console.log('[TeamsBot][SendAndWait] Updated subscription clientState', {
|
|
614
|
+
subscriptionId: subscription.id,
|
|
615
|
+
clientState: finalClientState,
|
|
616
|
+
});
|
|
617
|
+
// 7. Store execution context in workflow static data for webhook to resume later
|
|
618
|
+
const executionKey = `${subscription.id}_${originalMessageId}`;
|
|
619
|
+
if (!workflowStaticData.sendAndWaitExecutions) {
|
|
620
|
+
workflowStaticData.sendAndWaitExecutions = {};
|
|
621
|
+
}
|
|
622
|
+
workflowStaticData.sendAndWaitExecutions[executionKey] = {
|
|
623
|
+
subscriptionId: subscription.id,
|
|
624
|
+
originalMessageId,
|
|
625
|
+
resource,
|
|
626
|
+
recipientType,
|
|
627
|
+
createdAt: Date.now(),
|
|
628
|
+
expiresAt: waitTill.getTime(),
|
|
629
|
+
};
|
|
630
|
+
console.log('[TeamsBot][SendAndWait] Stored send-and-wait execution context', {
|
|
631
|
+
executionKey,
|
|
632
|
+
expiresAt: new Date(waitTill.getTime()).toISOString(),
|
|
633
|
+
});
|
|
634
|
+
// 8. Put execution on wait
|
|
586
635
|
await this.putExecutionToWait(waitTill);
|
|
587
636
|
// Return input data; n8n will use the stored state when the execution is resumed
|
|
588
637
|
return [this.getInputData()];
|