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.
@@ -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: true,
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 notification (POST)
538
- if (req.method === 'POST') {
539
- try {
540
- const body = req.body;
541
- // Parse Graph API notification
542
- const parser = new graphNotificationParser_1.GraphNotificationParser();
543
- const notifications = parser.parseNotification(body);
544
- if (notifications.length === 0) {
545
- res.status(202).json({ status: 'Accepted' });
546
- return { noWebhookResponse: true };
547
- }
548
- // Process each notification
549
- for (const notification of notifications) {
550
- // Check if this is a sendAndWait subscription
551
- if (!notification.clientState.startsWith('sendAndWait_')) {
552
- // Not a sendAndWait notification, ignore
553
- continue;
554
- }
555
- // Extract subscription ID and original message ID from clientState
556
- // Format: sendAndWait_${subscriptionId}_${messageId}
557
- const parts = notification.clientState.split('_');
558
- if (parts.length < 3) {
559
- this.logger.warn(`Invalid sendAndWait clientState format: ${notification.clientState}`);
560
- continue;
561
- }
562
- const subscriptionId = parts[1];
563
- const originalMessageId = parts.slice(2).join('_'); // Handle message IDs that might contain underscores
564
- // Get credentials for Graph API
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
- // Check if this is a reply to our original message
579
- const isReply = (resourceData === null || resourceData === void 0 ? void 0 : resourceData.replyToId) === originalMessageId;
580
- // Only process 'created' notifications that are replies
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
- catch (error) {
615
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
616
- this.logger.error(`Graph API webhook error: ${errorMessage}`, { error });
617
- res.status(500).json({
618
- error: 'Internal server error',
619
- message: errorMessage,
620
- });
621
- return { noWebhookResponse: true };
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 chat + app definition
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,chat`,
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
- // Send channel message
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
- // For 1:1 chat, get or create chat ID
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
- chatId = await getChatIdForUser(graphClient, userId, api, teamsAppId);
522
- // Send chat message via Graph API
523
- messageResponse = await graphClient.makeRequest({
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
- // Graph API returns message ID directly
535
- originalMessageId = messageResponse.id || '';
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 unique waiting callback URL
541
- const resumeUrl = this.evaluateExpression('{{ $execution?.resumeUrl }}', i);
542
- const nodeId = this.evaluateExpression('{{ $nodeId }}', i);
543
- const webhookUrl = `${resumeUrl}/${nodeId}`;
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(), 'Invalid callback URL. Resume URL must be a valid HTTPS URL.', { itemIndex: i });
546
- }
547
- // 3. Calculate timeout and expiration
548
- const waitTill = new Date(Date.now() + timeout * 1000);
549
- const expirationDateTime = new Date(Date.now() + (timeout + 60) * 1000);
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
- // Check if expiration is > 1 hour - if so, lifecycleNotificationUrl is required
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
- // If includeResourceData: true, must provide encryptionCertificate and encryptionCertificateId
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
- // Add lifecycleNotificationUrl if expiration > 1 hour (required by Graph API)
576
- if (requiresLifecycleNotification) {
577
- subscriptionParams.lifecycleNotificationUrl = webhookUrl;
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
- // 5. Update subscription with final clientState (subscription ID + message ID)
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
- // 6. Put execution on wait
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()];