n8n-nodes-microsoft-teams-bot 1.0.0

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.
Files changed (127) hide show
  1. package/dist/credentials/TeamsBotApi.credentials.d.ts +7 -0
  2. package/dist/credentials/TeamsBotApi.credentials.js +107 -0
  3. package/dist/credentials/TeamsBotApi.credentials.js.map +1 -0
  4. package/dist/credentials/TeamsGraphApi.credentials.d.ts +7 -0
  5. package/dist/credentials/TeamsGraphApi.credentials.js +58 -0
  6. package/dist/credentials/TeamsGraphApi.credentials.js.map +1 -0
  7. package/dist/index.d.ts +4 -0
  8. package/dist/index.js +23 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/nodes/TeamsBot/TeamsBot.node.d.ts +21 -0
  11. package/dist/nodes/TeamsBot/TeamsBot.node.js +457 -0
  12. package/dist/nodes/TeamsBot/TeamsBot.node.js.map +1 -0
  13. package/dist/nodes/TeamsBot/TeamsBot.node.json +73 -0
  14. package/dist/nodes/TeamsBot/TeamsBotTrigger.node.d.ts +21 -0
  15. package/dist/nodes/TeamsBot/TeamsBotTrigger.node.js +506 -0
  16. package/dist/nodes/TeamsBot/TeamsBotTrigger.node.js.map +1 -0
  17. package/dist/nodes/TeamsBot/TeamsBotTrigger.node.json +57 -0
  18. package/dist/nodes/TeamsBot/actions/buildCard.d.ts +6 -0
  19. package/dist/nodes/TeamsBot/actions/buildCard.js +176 -0
  20. package/dist/nodes/TeamsBot/actions/buildCard.js.map +1 -0
  21. package/dist/nodes/TeamsBot/actions/cards.d.ts +34 -0
  22. package/dist/nodes/TeamsBot/actions/cards.js +731 -0
  23. package/dist/nodes/TeamsBot/actions/cards.js.map +1 -0
  24. package/dist/nodes/TeamsBot/actions/channels.d.ts +18 -0
  25. package/dist/nodes/TeamsBot/actions/channels.js +199 -0
  26. package/dist/nodes/TeamsBot/actions/channels.js.map +1 -0
  27. package/dist/nodes/TeamsBot/actions/messages.d.ts +86 -0
  28. package/dist/nodes/TeamsBot/actions/messages.js +1259 -0
  29. package/dist/nodes/TeamsBot/actions/messages.js.map +1 -0
  30. package/dist/nodes/TeamsBot/actions/router.d.ts +2 -0
  31. package/dist/nodes/TeamsBot/actions/router.js +186 -0
  32. package/dist/nodes/TeamsBot/actions/router.js.map +1 -0
  33. package/dist/nodes/TeamsBot/actions/teams.d.ts +18 -0
  34. package/dist/nodes/TeamsBot/actions/teams.js +227 -0
  35. package/dist/nodes/TeamsBot/actions/teams.js.map +1 -0
  36. package/dist/nodes/TeamsBot/actions/users.d.ts +13 -0
  37. package/dist/nodes/TeamsBot/actions/users.js +184 -0
  38. package/dist/nodes/TeamsBot/actions/users.js.map +1 -0
  39. package/dist/nodes/TeamsBot/descriptions/buildCard.description.d.ts +7 -0
  40. package/dist/nodes/TeamsBot/descriptions/buildCard.description.js +682 -0
  41. package/dist/nodes/TeamsBot/descriptions/buildCard.description.js.map +1 -0
  42. package/dist/nodes/TeamsBot/descriptions/card.description.d.ts +2 -0
  43. package/dist/nodes/TeamsBot/descriptions/card.description.js +564 -0
  44. package/dist/nodes/TeamsBot/descriptions/card.description.js.map +1 -0
  45. package/dist/nodes/TeamsBot/descriptions/index.d.ts +3 -0
  46. package/dist/nodes/TeamsBot/descriptions/index.js +20 -0
  47. package/dist/nodes/TeamsBot/descriptions/index.js.map +1 -0
  48. package/dist/nodes/TeamsBot/descriptions/message.description.d.ts +2 -0
  49. package/dist/nodes/TeamsBot/descriptions/message.description.js +964 -0
  50. package/dist/nodes/TeamsBot/descriptions/message.description.js.map +1 -0
  51. package/dist/nodes/TeamsBot/descriptions/node.description.d.ts +2 -0
  52. package/dist/nodes/TeamsBot/descriptions/node.description.js +567 -0
  53. package/dist/nodes/TeamsBot/descriptions/node.description.js.map +1 -0
  54. package/dist/nodes/TeamsBot/errors/authentication.d.ts +100 -0
  55. package/dist/nodes/TeamsBot/errors/authentication.js +110 -0
  56. package/dist/nodes/TeamsBot/errors/authentication.js.map +1 -0
  57. package/dist/nodes/TeamsBot/errors/graphApi.d.ts +44 -0
  58. package/dist/nodes/TeamsBot/errors/graphApi.js +84 -0
  59. package/dist/nodes/TeamsBot/errors/graphApi.js.map +1 -0
  60. package/dist/nodes/TeamsBot/errors/messages.d.ts +187 -0
  61. package/dist/nodes/TeamsBot/errors/messages.js +190 -0
  62. package/dist/nodes/TeamsBot/errors/messages.js.map +1 -0
  63. package/dist/nodes/TeamsBot/methods/listSearch.d.ts +4 -0
  64. package/dist/nodes/TeamsBot/methods/listSearch.js +78 -0
  65. package/dist/nodes/TeamsBot/methods/listSearch.js.map +1 -0
  66. package/dist/nodes/TeamsBot/teams.svg +11 -0
  67. package/dist/nodes/TeamsBot/transport/TeamsApiClient.d.ts +305 -0
  68. package/dist/nodes/TeamsBot/transport/TeamsApiClient.js +458 -0
  69. package/dist/nodes/TeamsBot/transport/TeamsApiClient.js.map +1 -0
  70. package/dist/nodes/TeamsBot/transport/api/BotFrameworkApi.d.ts +350 -0
  71. package/dist/nodes/TeamsBot/transport/api/BotFrameworkApi.js +1265 -0
  72. package/dist/nodes/TeamsBot/transport/api/BotFrameworkApi.js.map +1 -0
  73. package/dist/nodes/TeamsBot/transport/api/GraphApi.d.ts +158 -0
  74. package/dist/nodes/TeamsBot/transport/api/GraphApi.js +443 -0
  75. package/dist/nodes/TeamsBot/transport/api/GraphApi.js.map +1 -0
  76. package/dist/nodes/TeamsBot/transport/api/GraphApiClient.d.ts +160 -0
  77. package/dist/nodes/TeamsBot/transport/api/GraphApiClient.js +268 -0
  78. package/dist/nodes/TeamsBot/transport/api/GraphApiClient.js.map +1 -0
  79. package/dist/nodes/TeamsBot/transport/api/index.d.ts +7 -0
  80. package/dist/nodes/TeamsBot/transport/api/index.js +26 -0
  81. package/dist/nodes/TeamsBot/transport/api/index.js.map +1 -0
  82. package/dist/nodes/TeamsBot/transport/index.d.ts +12 -0
  83. package/dist/nodes/TeamsBot/transport/index.js +30 -0
  84. package/dist/nodes/TeamsBot/transport/index.js.map +1 -0
  85. package/dist/nodes/TeamsBot/types/api-types.d.ts +258 -0
  86. package/dist/nodes/TeamsBot/types/api-types.js +3 -0
  87. package/dist/nodes/TeamsBot/types/api-types.js.map +1 -0
  88. package/dist/nodes/TeamsBot/types/cards.d.ts +252 -0
  89. package/dist/nodes/TeamsBot/types/cards.js +3 -0
  90. package/dist/nodes/TeamsBot/types/cards.js.map +1 -0
  91. package/dist/nodes/TeamsBot/types/index.d.ts +5 -0
  92. package/dist/nodes/TeamsBot/types/index.js +24 -0
  93. package/dist/nodes/TeamsBot/types/index.js.map +1 -0
  94. package/dist/nodes/TeamsBot/utils/AdaptiveCardBuilder.d.ts +147 -0
  95. package/dist/nodes/TeamsBot/utils/AdaptiveCardBuilder.js +333 -0
  96. package/dist/nodes/TeamsBot/utils/AdaptiveCardBuilder.js.map +1 -0
  97. package/dist/nodes/TeamsBot/utils/AdaptiveCardTemplates.d.ts +122 -0
  98. package/dist/nodes/TeamsBot/utils/AdaptiveCardTemplates.js +467 -0
  99. package/dist/nodes/TeamsBot/utils/AdaptiveCardTemplates.js.map +1 -0
  100. package/dist/nodes/TeamsBot/utils/CardTemplates.d.ts +94 -0
  101. package/dist/nodes/TeamsBot/utils/CardTemplates.js +446 -0
  102. package/dist/nodes/TeamsBot/utils/CardTemplates.js.map +1 -0
  103. package/dist/nodes/TeamsBot/utils/apiHelpers.d.ts +30 -0
  104. package/dist/nodes/TeamsBot/utils/apiHelpers.js +95 -0
  105. package/dist/nodes/TeamsBot/utils/apiHelpers.js.map +1 -0
  106. package/dist/nodes/TeamsBot/utils/constants.d.ts +86 -0
  107. package/dist/nodes/TeamsBot/utils/constants.js +60 -0
  108. package/dist/nodes/TeamsBot/utils/constants.js.map +1 -0
  109. package/dist/nodes/TeamsBot/utils/fileProcessing.d.ts +66 -0
  110. package/dist/nodes/TeamsBot/utils/fileProcessing.js +276 -0
  111. package/dist/nodes/TeamsBot/utils/fileProcessing.js.map +1 -0
  112. package/dist/nodes/TeamsBot/utils/graphNotificationParser.d.ts +91 -0
  113. package/dist/nodes/TeamsBot/utils/graphNotificationParser.js +162 -0
  114. package/dist/nodes/TeamsBot/utils/graphNotificationParser.js.map +1 -0
  115. package/dist/nodes/TeamsBot/utils/index.d.ts +24 -0
  116. package/dist/nodes/TeamsBot/utils/index.js +90 -0
  117. package/dist/nodes/TeamsBot/utils/index.js.map +1 -0
  118. package/dist/nodes/TeamsBot/utils/installation.d.ts +15 -0
  119. package/dist/nodes/TeamsBot/utils/installation.js +41 -0
  120. package/dist/nodes/TeamsBot/utils/installation.js.map +1 -0
  121. package/dist/nodes/TeamsBot/utils/subscriptionManager.d.ts +63 -0
  122. package/dist/nodes/TeamsBot/utils/subscriptionManager.js +100 -0
  123. package/dist/nodes/TeamsBot/utils/subscriptionManager.js.map +1 -0
  124. package/dist/nodes/TeamsBot/utils/validation.d.ts +93 -0
  125. package/dist/nodes/TeamsBot/utils/validation.js +281 -0
  126. package/dist/nodes/TeamsBot/utils/validation.js.map +1 -0
  127. package/package.json +79 -0
@@ -0,0 +1,457 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.testTeamsBotApiAuth = exports.TeamsBot = void 0;
27
+ const router_1 = require("./actions/router");
28
+ const listSearch = __importStar(require("./methods/listSearch"));
29
+ const message_description_1 = require("./descriptions/message.description");
30
+ const card_description_1 = require("./descriptions/card.description");
31
+ const buildCard_description_1 = require("./descriptions/buildCard.description");
32
+ class TeamsBot {
33
+ constructor(baseDescription) {
34
+ this.methods = {
35
+ listSearch,
36
+ };
37
+ const nodeDesc = this.getNodeDescription();
38
+ this.description = {
39
+ ...baseDescription,
40
+ ...nodeDesc,
41
+ version: nodeDesc.version || 1,
42
+ };
43
+ }
44
+ getNodeDescription() {
45
+ return {
46
+ displayName: 'Microsoft Teams Bot',
47
+ name: 'teamsBot',
48
+ icon: 'file:teams.svg',
49
+ group: ['input'],
50
+ version: 1,
51
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
52
+ description: 'Send messages and cards via Microsoft Teams Bot',
53
+ defaults: {
54
+ name: 'Microsoft Teams Bot',
55
+ },
56
+ inputs: ["main" /* NodeConnectionType.Main */],
57
+ outputs: ["main" /* NodeConnectionType.Main */],
58
+ credentials: [
59
+ {
60
+ name: 'teamsBotApi',
61
+ required: true,
62
+ testedBy: 'testTeamsBotApiAuth',
63
+ },
64
+ ],
65
+ requestDefaults: {
66
+ baseURL: '={{$credentials.apiUrl}}',
67
+ headers: {
68
+ Accept: 'application/json',
69
+ 'Content-Type': 'application/json',
70
+ },
71
+ timeout: 10000,
72
+ ignoreHttpStatusErrors: false,
73
+ },
74
+ properties: [
75
+ {
76
+ displayName: 'Resource',
77
+ name: 'resource',
78
+ type: 'options',
79
+ noDataExpression: true,
80
+ options: [
81
+ {
82
+ name: 'Message',
83
+ value: 'message',
84
+ description: 'Send text messages to channels or chats',
85
+ },
86
+ {
87
+ name: 'Card',
88
+ value: 'card',
89
+ description: 'Send adaptive cards to channels or chats',
90
+ },
91
+ {
92
+ name: 'Card Builder',
93
+ value: 'cardBuilder',
94
+ description: 'Create adaptive cards that can be sent later',
95
+ },
96
+ {
97
+ name: 'Users',
98
+ value: 'users',
99
+ description: 'Work with Microsoft Teams users',
100
+ },
101
+ {
102
+ name: 'Teams',
103
+ value: 'teams',
104
+ description: 'Work with Microsoft Teams',
105
+ },
106
+ {
107
+ name: 'Channels',
108
+ value: 'channels',
109
+ description: 'Work with Microsoft Teams channels',
110
+ },
111
+ ],
112
+ default: 'message',
113
+ },
114
+ {
115
+ displayName: 'Operation',
116
+ name: 'operation',
117
+ type: 'options',
118
+ noDataExpression: true,
119
+ displayOptions: {
120
+ show: {
121
+ resource: ['cardBuilder'],
122
+ },
123
+ },
124
+ options: [
125
+ {
126
+ name: 'Create',
127
+ value: 'create',
128
+ description: 'Create an adaptive card that can be sent later',
129
+ action: 'Create an adaptive card',
130
+ },
131
+ ],
132
+ default: 'create',
133
+ },
134
+ {
135
+ displayName: 'Operation',
136
+ name: 'operation',
137
+ type: 'options',
138
+ noDataExpression: true,
139
+ displayOptions: {
140
+ show: {
141
+ resource: ['users'],
142
+ },
143
+ },
144
+ options: [
145
+ {
146
+ name: 'Get Many',
147
+ value: 'getMany',
148
+ description: 'Get a list of users',
149
+ action: 'Get a list of users',
150
+ },
151
+ {
152
+ name: 'Get by UPN',
153
+ value: 'getByUpn',
154
+ description: 'Look up a user by User Principal Name (email)',
155
+ action: 'Get a user by UPN',
156
+ },
157
+ ],
158
+ default: 'getByUpn',
159
+ },
160
+ {
161
+ displayName: 'Max Results',
162
+ name: 'maxResults',
163
+ type: 'number',
164
+ default: 50,
165
+ description: 'Max number of results to return',
166
+ typeOptions: {
167
+ minValue: 1,
168
+ maxValue: 999,
169
+ },
170
+ displayOptions: {
171
+ show: {
172
+ resource: ['users'],
173
+ operation: ['getMany'],
174
+ },
175
+ },
176
+ },
177
+ {
178
+ displayName: 'Operation',
179
+ name: 'operation',
180
+ type: 'options',
181
+ noDataExpression: true,
182
+ displayOptions: {
183
+ show: {
184
+ resource: ['teams'],
185
+ },
186
+ },
187
+ options: [
188
+ {
189
+ name: 'Get Many',
190
+ value: 'getMany',
191
+ description: 'Get a list of teams',
192
+ action: 'Get all teams in the tenant',
193
+ },
194
+ {
195
+ name: 'Get by Name',
196
+ value: 'getByName',
197
+ description: 'Find teams by display name',
198
+ action: 'Get teams by name',
199
+ },
200
+ {
201
+ name: 'Get by ID',
202
+ value: 'getById',
203
+ description: 'Get a specific team by ID',
204
+ action: 'Get team by ID',
205
+ },
206
+ ],
207
+ default: 'getMany',
208
+ },
209
+ {
210
+ displayName: 'Operation',
211
+ name: 'operation',
212
+ type: 'options',
213
+ noDataExpression: true,
214
+ displayOptions: {
215
+ show: {
216
+ resource: ['channels'],
217
+ },
218
+ },
219
+ options: [
220
+ {
221
+ name: 'Get Many',
222
+ value: 'getMany',
223
+ description: 'Get all channels in a team',
224
+ action: 'Get all channels in a team',
225
+ },
226
+ {
227
+ name: 'Get by ID',
228
+ value: 'getById',
229
+ description: 'Get a specific channel by ID',
230
+ action: 'Get channel by ID',
231
+ },
232
+ {
233
+ name: 'Get by Name',
234
+ value: 'getByName',
235
+ description: 'Find channels by display name',
236
+ action: 'Get channels by name',
237
+ },
238
+ ],
239
+ default: 'getMany',
240
+ },
241
+ // Import field descriptions from separate files
242
+ ...this.getMessageFields(),
243
+ ...this.getCardFields(),
244
+ ...this.getCardBuilderFields(),
245
+ // Additional field configurations
246
+ {
247
+ displayName: 'User Principal Name (UPN)',
248
+ name: 'upn',
249
+ type: 'string',
250
+ required: true,
251
+ default: '',
252
+ description: 'Email address or user principal name to search for (case insensitive)',
253
+ displayOptions: {
254
+ show: {
255
+ resource: ['users'],
256
+ operation: ['getByUpn'],
257
+ },
258
+ },
259
+ },
260
+ {
261
+ displayName: 'Include Details',
262
+ name: 'includeDetails',
263
+ type: 'boolean',
264
+ default: false,
265
+ description: 'Whether to include additional team details',
266
+ displayOptions: {
267
+ show: {
268
+ resource: ['teams'],
269
+ operation: ['getMany'],
270
+ },
271
+ },
272
+ },
273
+ {
274
+ displayName: 'Team Name',
275
+ name: 'teamName',
276
+ type: 'string',
277
+ required: true,
278
+ default: '',
279
+ description: 'Full or partial name of the team to search for (case insensitive)',
280
+ displayOptions: {
281
+ show: {
282
+ resource: ['teams'],
283
+ operation: ['getByName'],
284
+ },
285
+ },
286
+ },
287
+ {
288
+ displayName: 'Exact Match',
289
+ name: 'exactMatch',
290
+ type: 'boolean',
291
+ default: false,
292
+ description: 'Whether to find only teams that exactly match the name',
293
+ displayOptions: {
294
+ show: {
295
+ resource: ['teams'],
296
+ operation: ['getByName'],
297
+ },
298
+ },
299
+ },
300
+ {
301
+ displayName: 'Team ID',
302
+ name: 'teamId',
303
+ type: 'string',
304
+ required: true,
305
+ default: '',
306
+ description: 'ID of the team to retrieve',
307
+ displayOptions: {
308
+ show: {
309
+ resource: ['teams'],
310
+ operation: ['getById'],
311
+ },
312
+ },
313
+ },
314
+ {
315
+ displayName: 'Team ID',
316
+ name: 'teamId',
317
+ type: 'string',
318
+ required: true,
319
+ default: '',
320
+ description: 'ID of the team the channel belongs to',
321
+ displayOptions: {
322
+ show: {
323
+ resource: ['channels'],
324
+ },
325
+ },
326
+ },
327
+ {
328
+ displayName: 'Channel ID',
329
+ name: 'channelId',
330
+ type: 'string',
331
+ required: true,
332
+ default: '',
333
+ description: 'ID of the channel to retrieve',
334
+ displayOptions: {
335
+ show: {
336
+ resource: ['channels'],
337
+ operation: ['getById'],
338
+ },
339
+ },
340
+ },
341
+ {
342
+ displayName: 'Channel Name',
343
+ name: 'channelName',
344
+ type: 'string',
345
+ required: true,
346
+ default: '',
347
+ description: 'Full or partial name of the channel to search for (case insensitive)',
348
+ displayOptions: {
349
+ show: {
350
+ resource: ['channels'],
351
+ operation: ['getByName'],
352
+ },
353
+ },
354
+ },
355
+ {
356
+ displayName: 'Exact Match',
357
+ name: 'exactMatch',
358
+ type: 'boolean',
359
+ default: false,
360
+ description: 'Whether to find only channels that exactly match the name',
361
+ displayOptions: {
362
+ show: {
363
+ resource: ['channels'],
364
+ operation: ['getByName'],
365
+ },
366
+ },
367
+ },
368
+ ],
369
+ };
370
+ }
371
+ getMessageFields() {
372
+ // Return message field descriptions
373
+ return message_description_1.messageFields;
374
+ }
375
+ getCardFields() {
376
+ // Return card field descriptions
377
+ return card_description_1.cardFields;
378
+ }
379
+ getCardBuilderFields() {
380
+ // Return card builder field descriptions
381
+ return [
382
+ ...buildCard_description_1.buildCardOperations,
383
+ ...buildCard_description_1.notificationCardFields,
384
+ ...buildCard_description_1.approvalCardFields,
385
+ ...buildCard_description_1.listCardFields,
386
+ ...buildCard_description_1.welcomeCardFields,
387
+ ...buildCard_description_1.customCardFields,
388
+ ];
389
+ }
390
+ async execute() {
391
+ return router_1.router.call(this);
392
+ }
393
+ }
394
+ exports.TeamsBot = TeamsBot;
395
+ /**
396
+ * Test the Teams Bot API credentials
397
+ */
398
+ async function testTeamsBotApiAuth() {
399
+ try {
400
+ // Get credentials
401
+ const credentials = await this.getCredentials('teamsBotApi');
402
+ if (!credentials) {
403
+ return {
404
+ status: 'Error',
405
+ message: 'No credentials provided',
406
+ };
407
+ }
408
+ // Basic validation of required fields
409
+ const { botId, botSecret, serviceUrl, clientId, tenantId, clientSecret, teamsAppId } = credentials;
410
+ if (!botId || !botSecret || !serviceUrl || !clientId || !tenantId || !clientSecret || !teamsAppId) {
411
+ return {
412
+ status: 'Error',
413
+ message: 'All credential fields are required',
414
+ };
415
+ }
416
+ // Test basic format validation
417
+ const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
418
+ const serviceUrlRegex = /^https:\/\/smba\.trafficmanager\.net\/[a-z]+\/$/;
419
+ if (!guidRegex.test(String(botId))) {
420
+ return {
421
+ status: 'Error',
422
+ message: 'Bot ID must be a valid GUID format',
423
+ };
424
+ }
425
+ if (!guidRegex.test(String(clientId))) {
426
+ return {
427
+ status: 'Error',
428
+ message: 'Client ID must be a valid GUID format',
429
+ };
430
+ }
431
+ if (!guidRegex.test(String(tenantId))) {
432
+ return {
433
+ status: 'Error',
434
+ message: 'Tenant ID must be a valid GUID format',
435
+ };
436
+ }
437
+ if (!serviceUrlRegex.test(String(serviceUrl))) {
438
+ return {
439
+ status: 'Error',
440
+ message: 'Service URL must be a valid Bot Framework service URL',
441
+ };
442
+ }
443
+ // If all validations pass
444
+ return {
445
+ status: 'OK',
446
+ message: 'Credentials are valid',
447
+ };
448
+ }
449
+ catch (error) {
450
+ return {
451
+ status: 'Error',
452
+ message: `Credential test failed: ${error instanceof Error ? error.message : 'Unknown error'}`,
453
+ };
454
+ }
455
+ }
456
+ exports.testTeamsBotApiAuth = testTeamsBotApiAuth;
457
+ //# sourceMappingURL=TeamsBot.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamsBot.node.js","sourceRoot":"","sources":["../../../nodes/TeamsBot/TeamsBot.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ {
2
+ "node": "n8n-nodes-microsoft-teams-bot",
3
+ "nodeVersion": 1,
4
+ "codexVersion": 1,
5
+ "categories": [
6
+ "Communication"
7
+ ],
8
+ "resources": {
9
+ "credentialDocumentation": [
10
+ {
11
+ "url": "https://learn.microsoft.com/en-us/azure/bot-service/bot-service-quickstart-registration"
12
+ }
13
+ ],
14
+ "primaryDocumentation": [
15
+ {
16
+ "url": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-basics?view=azure-bot-service-4.0"
17
+ }
18
+ ]
19
+ },
20
+ "subcategories": {
21
+ "Core Nodes": [
22
+ "Communication"
23
+ ]
24
+ },
25
+ "alias": [
26
+ "Microsoft",
27
+ "Teams",
28
+ "Bot",
29
+ "Chat",
30
+ "Message",
31
+ "Channel",
32
+ "Card",
33
+ "Adaptive Card"
34
+ ],
35
+ "operations": {
36
+ "channel": {
37
+ "send": {
38
+ "description": "Send a message to a channel (Bot Framework)",
39
+ "documentationUrl": "https://learn.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-send-and-receive-messages"
40
+ },
41
+ "sendCard": {
42
+ "description": "Send an adaptive card to a channel (Bot Framework)",
43
+ "documentationUrl": "https://learn.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-add-rich-cards"
44
+ }
45
+ },
46
+ "user": {
47
+ "send": {
48
+ "description": "Send a message to a user (Bot Framework)",
49
+ "documentationUrl": "https://learn.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-send-and-receive-messages"
50
+ },
51
+ "sendCard": {
52
+ "description": "Send an adaptive card to a user (Bot Framework)",
53
+ "documentationUrl": "https://learn.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-add-rich-cards"
54
+ }
55
+ },
56
+ "card": {
57
+ "update": {
58
+ "description": "Update an existing adaptive card (Bot Framework)",
59
+ "documentationUrl": "https://learn.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-add-rich-cards"
60
+ }
61
+ },
62
+ "app": {
63
+ "install": {
64
+ "description": "Install the bot in a team or for a user (Graph API)",
65
+ "documentationUrl": "https://learn.microsoft.com/en-us/graph/api/teamsappinstallation-add"
66
+ },
67
+ "check": {
68
+ "description": "Check if the bot is installed (Graph API)",
69
+ "documentationUrl": "https://learn.microsoft.com/en-us/graph/api/teamsappinstallation-list"
70
+ }
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,21 @@
1
+ import type { INodeType, INodeTypeDescription, IWebhookFunctions, IWebhookResponseData, IHookFunctions } from 'n8n-workflow';
2
+ /**
3
+ * Teams Bot Trigger Node
4
+ *
5
+ * This node provides webhook functionality for receiving Teams events via Microsoft Graph API subscriptions.
6
+ * It listens for incoming notifications from Graph API and triggers workflows based on Teams message events.
7
+ */
8
+ export declare class TeamsBotTrigger implements INodeType {
9
+ description: INodeTypeDescription;
10
+ webhook(this: IWebhookFunctions): Promise<IWebhookResponseData>;
11
+ /**
12
+ * Webhook lifecycle methods for subscription management
13
+ */
14
+ webhookMethods: {
15
+ default: {
16
+ checkExists(this: IHookFunctions): Promise<boolean>;
17
+ create(this: IHookFunctions): Promise<boolean>;
18
+ delete(this: IHookFunctions): Promise<boolean>;
19
+ };
20
+ };
21
+ }