@microsoft/agents-hosting-extensions-teams 0.5.1-g2e246ff274

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 (317) hide show
  1. package/dist/src/activity-extensions/channelInfo.d.ts +38 -0
  2. package/dist/src/activity-extensions/channelInfo.js +17 -0
  3. package/dist/src/activity-extensions/channelInfo.js.map +1 -0
  4. package/dist/src/activity-extensions/index.d.ts +15 -0
  5. package/dist/src/activity-extensions/index.js +25 -0
  6. package/dist/src/activity-extensions/index.js.map +1 -0
  7. package/dist/src/activity-extensions/notificationInfo.d.ts +38 -0
  8. package/dist/src/activity-extensions/notificationInfo.js +17 -0
  9. package/dist/src/activity-extensions/notificationInfo.js.map +1 -0
  10. package/dist/src/activity-extensions/onBehalfOf.d.ts +45 -0
  11. package/dist/src/activity-extensions/onBehalfOf.js +18 -0
  12. package/dist/src/activity-extensions/onBehalfOf.js.map +1 -0
  13. package/dist/src/activity-extensions/teamInfo.d.ts +38 -0
  14. package/dist/src/activity-extensions/teamInfo.js +17 -0
  15. package/dist/src/activity-extensions/teamInfo.js.map +1 -0
  16. package/dist/src/activity-extensions/teamsChannelAccount.d.ts +34 -0
  17. package/dist/src/activity-extensions/teamsChannelAccount.js +7 -0
  18. package/dist/src/activity-extensions/teamsChannelAccount.js.map +1 -0
  19. package/dist/src/activity-extensions/teamsChannelData.d.ts +230 -0
  20. package/dist/src/activity-extensions/teamsChannelData.js +39 -0
  21. package/dist/src/activity-extensions/teamsChannelData.js.map +1 -0
  22. package/dist/src/activity-extensions/teamsChannelDataParser.d.ts +12 -0
  23. package/dist/src/activity-extensions/teamsChannelDataParser.js +19 -0
  24. package/dist/src/activity-extensions/teamsChannelDataParser.js.map +1 -0
  25. package/dist/src/activity-extensions/teamsChannelDataSettings.d.ts +49 -0
  26. package/dist/src/activity-extensions/teamsChannelDataSettings.js +16 -0
  27. package/dist/src/activity-extensions/teamsChannelDataSettings.js.map +1 -0
  28. package/dist/src/activity-extensions/teamsConversationUpdateEvents.d.ts +58 -0
  29. package/dist/src/activity-extensions/teamsConversationUpdateEvents.js +7 -0
  30. package/dist/src/activity-extensions/teamsConversationUpdateEvents.js.map +1 -0
  31. package/dist/src/activity-extensions/teamsMeetingInfo.d.ts +24 -0
  32. package/dist/src/activity-extensions/teamsMeetingInfo.js +15 -0
  33. package/dist/src/activity-extensions/teamsMeetingInfo.js.map +1 -0
  34. package/dist/src/activity-extensions/teamsMessageEvents.d.ts +5 -0
  35. package/dist/src/activity-extensions/teamsMessageEvents.js +7 -0
  36. package/dist/src/activity-extensions/teamsMessageEvents.js.map +1 -0
  37. package/dist/src/activity-extensions/tenantInfo.d.ts +24 -0
  38. package/dist/src/activity-extensions/tenantInfo.js +15 -0
  39. package/dist/src/activity-extensions/tenantInfo.js.map +1 -0
  40. package/dist/src/client/index.d.ts +6 -0
  41. package/dist/src/client/index.js +23 -0
  42. package/dist/src/client/index.js.map +1 -0
  43. package/dist/src/client/teamsConnectorClient.d.ts +146 -0
  44. package/dist/src/client/teamsConnectorClient.js +313 -0
  45. package/dist/src/client/teamsConnectorClient.js.map +1 -0
  46. package/dist/src/client/teamsConnectorClient.types.d.ts +157 -0
  47. package/dist/src/client/teamsConnectorClient.types.js +7 -0
  48. package/dist/src/client/teamsConnectorClient.types.js.map +1 -0
  49. package/dist/src/compat/readReceipInfo.d.ts +31 -0
  50. package/dist/src/compat/readReceipInfo.js +48 -0
  51. package/dist/src/compat/readReceipInfo.js.map +1 -0
  52. package/dist/src/compat/teamsActivityHandler.d.ts +423 -0
  53. package/dist/src/compat/teamsActivityHandler.js +911 -0
  54. package/dist/src/compat/teamsActivityHandler.js.map +1 -0
  55. package/dist/src/file/fileConsentCardResponse.d.ts +26 -0
  56. package/dist/src/file/fileConsentCardResponse.js +7 -0
  57. package/dist/src/file/fileConsentCardResponse.js.map +1 -0
  58. package/dist/src/file/fileUploadInfo.d.ts +29 -0
  59. package/dist/src/file/fileUploadInfo.js +7 -0
  60. package/dist/src/file/fileUploadInfo.js.map +1 -0
  61. package/dist/src/file/index.d.ts +6 -0
  62. package/dist/src/file/index.js +23 -0
  63. package/dist/src/file/index.js.map +1 -0
  64. package/dist/src/index.d.ts +10 -0
  65. package/dist/src/index.js +27 -0
  66. package/dist/src/index.js.map +1 -0
  67. package/dist/src/meeting/index.d.ts +22 -0
  68. package/dist/src/meeting/index.js +39 -0
  69. package/dist/src/meeting/index.js.map +1 -0
  70. package/dist/src/meeting/meeting.d.ts +115 -0
  71. package/dist/src/meeting/meeting.js +257 -0
  72. package/dist/src/meeting/meeting.js.map +1 -0
  73. package/dist/src/meeting/meetingDetails.d.ts +18 -0
  74. package/dist/src/meeting/meetingDetails.js +7 -0
  75. package/dist/src/meeting/meetingDetails.js.map +1 -0
  76. package/dist/src/meeting/meetingDetailsBase.d.ts +15 -0
  77. package/dist/src/meeting/meetingDetailsBase.js +7 -0
  78. package/dist/src/meeting/meetingDetailsBase.js.map +1 -0
  79. package/dist/src/meeting/meetingEndEventDetails.d.ts +12 -0
  80. package/dist/src/meeting/meetingEndEventDetails.js +7 -0
  81. package/dist/src/meeting/meetingEndEventDetails.js.map +1 -0
  82. package/dist/src/meeting/meetingEventDetails.d.ts +12 -0
  83. package/dist/src/meeting/meetingEventDetails.js +7 -0
  84. package/dist/src/meeting/meetingEventDetails.js.map +1 -0
  85. package/dist/src/meeting/meetingInfo.d.ts +24 -0
  86. package/dist/src/meeting/meetingInfo.js +7 -0
  87. package/dist/src/meeting/meetingInfo.js.map +1 -0
  88. package/dist/src/meeting/meetingNotification.d.ts +9 -0
  89. package/dist/src/meeting/meetingNotification.js +7 -0
  90. package/dist/src/meeting/meetingNotification.js.map +1 -0
  91. package/dist/src/meeting/meetingNotificationBase.d.ts +14 -0
  92. package/dist/src/meeting/meetingNotificationBase.js +7 -0
  93. package/dist/src/meeting/meetingNotificationBase.js.map +1 -0
  94. package/dist/src/meeting/meetingNotificationChannelData.d.ts +12 -0
  95. package/dist/src/meeting/meetingNotificationChannelData.js +7 -0
  96. package/dist/src/meeting/meetingNotificationChannelData.js.map +1 -0
  97. package/dist/src/meeting/meetingNotificationRecipientFailureInfo.d.ts +15 -0
  98. package/dist/src/meeting/meetingNotificationRecipientFailureInfo.js +7 -0
  99. package/dist/src/meeting/meetingNotificationRecipientFailureInfo.js.map +1 -0
  100. package/dist/src/meeting/meetingNotificationResponse.d.ts +14 -0
  101. package/dist/src/meeting/meetingNotificationResponse.js +7 -0
  102. package/dist/src/meeting/meetingNotificationResponse.js.map +1 -0
  103. package/dist/src/meeting/meetingParticipantsEventDetails.d.ts +12 -0
  104. package/dist/src/meeting/meetingParticipantsEventDetails.js +7 -0
  105. package/dist/src/meeting/meetingParticipantsEventDetails.js.map +1 -0
  106. package/dist/src/meeting/meetingStageSurface.d.ts +16 -0
  107. package/dist/src/meeting/meetingStageSurface.js +7 -0
  108. package/dist/src/meeting/meetingStageSurface.js.map +1 -0
  109. package/dist/src/meeting/meetingStartEventDetails.d.ts +14 -0
  110. package/dist/src/meeting/meetingStartEventDetails.js +7 -0
  111. package/dist/src/meeting/meetingStartEventDetails.js.map +1 -0
  112. package/dist/src/meeting/meetingSurface.d.ts +10 -0
  113. package/dist/src/meeting/meetingSurface.js +7 -0
  114. package/dist/src/meeting/meetingSurface.js.map +1 -0
  115. package/dist/src/meeting/meetingTabIconSurface.d.ts +17 -0
  116. package/dist/src/meeting/meetingTabIconSurface.js +7 -0
  117. package/dist/src/meeting/meetingTabIconSurface.js.map +1 -0
  118. package/dist/src/meeting/targetedMeetingNotification.d.ts +20 -0
  119. package/dist/src/meeting/targetedMeetingNotification.js +7 -0
  120. package/dist/src/meeting/targetedMeetingNotification.js.map +1 -0
  121. package/dist/src/meeting/targetedMeetingNotificationValue.d.ts +18 -0
  122. package/dist/src/meeting/targetedMeetingNotificationValue.js +7 -0
  123. package/dist/src/meeting/targetedMeetingNotificationValue.js.map +1 -0
  124. package/dist/src/meeting/teamsMeetingMember.d.ts +19 -0
  125. package/dist/src/meeting/teamsMeetingMember.js +7 -0
  126. package/dist/src/meeting/teamsMeetingMember.js.map +1 -0
  127. package/dist/src/meeting/teamsMeetingParticipant.d.ts +25 -0
  128. package/dist/src/meeting/teamsMeetingParticipant.js +7 -0
  129. package/dist/src/meeting/teamsMeetingParticipant.js.map +1 -0
  130. package/dist/src/meeting/userMeetingDetails.d.ts +17 -0
  131. package/dist/src/meeting/userMeetingDetails.js +7 -0
  132. package/dist/src/meeting/userMeetingDetails.js.map +1 -0
  133. package/dist/src/message-actions-payload/index.d.ts +13 -0
  134. package/dist/src/message-actions-payload/index.js +30 -0
  135. package/dist/src/message-actions-payload/index.js.map +1 -0
  136. package/dist/src/message-actions-payload/messageActionsPayload.d.ts +90 -0
  137. package/dist/src/message-actions-payload/messageActionsPayload.js +7 -0
  138. package/dist/src/message-actions-payload/messageActionsPayload.js.map +1 -0
  139. package/dist/src/message-actions-payload/messageActionsPayloadApp.d.ts +25 -0
  140. package/dist/src/message-actions-payload/messageActionsPayloadApp.js +7 -0
  141. package/dist/src/message-actions-payload/messageActionsPayloadApp.js.map +1 -0
  142. package/dist/src/message-actions-payload/messageActionsPayloadAttachment.d.ts +33 -0
  143. package/dist/src/message-actions-payload/messageActionsPayloadAttachment.js +7 -0
  144. package/dist/src/message-actions-payload/messageActionsPayloadAttachment.js.map +1 -0
  145. package/dist/src/message-actions-payload/messageActionsPayloadBody.d.ts +25 -0
  146. package/dist/src/message-actions-payload/messageActionsPayloadBody.js +7 -0
  147. package/dist/src/message-actions-payload/messageActionsPayloadBody.js.map +1 -0
  148. package/dist/src/message-actions-payload/messageActionsPayloadConversation.d.ts +25 -0
  149. package/dist/src/message-actions-payload/messageActionsPayloadConversation.js +7 -0
  150. package/dist/src/message-actions-payload/messageActionsPayloadConversation.js.map +1 -0
  151. package/dist/src/message-actions-payload/messageActionsPayloadFrom.d.ts +24 -0
  152. package/dist/src/message-actions-payload/messageActionsPayloadFrom.js +7 -0
  153. package/dist/src/message-actions-payload/messageActionsPayloadFrom.js.map +1 -0
  154. package/dist/src/message-actions-payload/messageActionsPayloadMention.d.ts +22 -0
  155. package/dist/src/message-actions-payload/messageActionsPayloadMention.js +7 -0
  156. package/dist/src/message-actions-payload/messageActionsPayloadMention.js.map +1 -0
  157. package/dist/src/message-actions-payload/messageActionsPayloadReaction.d.ts +26 -0
  158. package/dist/src/message-actions-payload/messageActionsPayloadReaction.js +7 -0
  159. package/dist/src/message-actions-payload/messageActionsPayloadReaction.js.map +1 -0
  160. package/dist/src/message-actions-payload/messageActionsPayloadUser.d.ts +29 -0
  161. package/dist/src/message-actions-payload/messageActionsPayloadUser.js +7 -0
  162. package/dist/src/message-actions-payload/messageActionsPayloadUser.js.map +1 -0
  163. package/dist/src/messageExtension/appBasedLinkQuery.d.ts +19 -0
  164. package/dist/src/messageExtension/appBasedLinkQuery.js +7 -0
  165. package/dist/src/messageExtension/appBasedLinkQuery.js.map +1 -0
  166. package/dist/src/messageExtension/index.d.ts +14 -0
  167. package/dist/src/messageExtension/index.js +29 -0
  168. package/dist/src/messageExtension/index.js.map +1 -0
  169. package/dist/src/messageExtension/messageExtension.d.ts +88 -0
  170. package/dist/src/messageExtension/messageExtension.js +283 -0
  171. package/dist/src/messageExtension/messageExtension.js.map +1 -0
  172. package/dist/src/messageExtension/messagingExtensionAction.d.ts +40 -0
  173. package/dist/src/messageExtension/messagingExtensionAction.js +7 -0
  174. package/dist/src/messageExtension/messagingExtensionAction.js.map +1 -0
  175. package/dist/src/messageExtension/messagingExtensionActionResponse.d.ts +23 -0
  176. package/dist/src/messageExtension/messagingExtensionActionResponse.js +7 -0
  177. package/dist/src/messageExtension/messagingExtensionActionResponse.js.map +1 -0
  178. package/dist/src/messageExtension/messagingExtensionAttachment.d.ts +14 -0
  179. package/dist/src/messageExtension/messagingExtensionAttachment.js +7 -0
  180. package/dist/src/messageExtension/messagingExtensionAttachment.js.map +1 -0
  181. package/dist/src/messageExtension/messagingExtensionParameter.d.ts +31 -0
  182. package/dist/src/messageExtension/messagingExtensionParameter.js +16 -0
  183. package/dist/src/messageExtension/messagingExtensionParameter.js.map +1 -0
  184. package/dist/src/messageExtension/messagingExtensionQuery.d.ts +84 -0
  185. package/dist/src/messageExtension/messagingExtensionQuery.js +31 -0
  186. package/dist/src/messageExtension/messagingExtensionQuery.js.map +1 -0
  187. package/dist/src/messageExtension/messagingExtensionQueryOptions.d.ts +31 -0
  188. package/dist/src/messageExtension/messagingExtensionQueryOptions.js +16 -0
  189. package/dist/src/messageExtension/messagingExtensionQueryOptions.js.map +1 -0
  190. package/dist/src/messageExtension/messagingExtensionResponse.d.ts +18 -0
  191. package/dist/src/messageExtension/messagingExtensionResponse.js +7 -0
  192. package/dist/src/messageExtension/messagingExtensionResponse.js.map +1 -0
  193. package/dist/src/messageExtension/messagingExtensionResult.d.ts +50 -0
  194. package/dist/src/messageExtension/messagingExtensionResult.js +7 -0
  195. package/dist/src/messageExtension/messagingExtensionResult.js.map +1 -0
  196. package/dist/src/messageExtension/messagingExtensionSuggestedAction.d.ts +14 -0
  197. package/dist/src/messageExtension/messagingExtensionSuggestedAction.js +7 -0
  198. package/dist/src/messageExtension/messagingExtensionSuggestedAction.js.map +1 -0
  199. package/dist/src/messages/messages.d.ts +40 -0
  200. package/dist/src/messages/messages.js +82 -0
  201. package/dist/src/messages/messages.js.map +1 -0
  202. package/dist/src/taskModule/index.d.ts +11 -0
  203. package/dist/src/taskModule/index.js +28 -0
  204. package/dist/src/taskModule/index.js.map +1 -0
  205. package/dist/src/taskModule/taskModule.d.ts +72 -0
  206. package/dist/src/taskModule/taskModule.js +210 -0
  207. package/dist/src/taskModule/taskModule.js.map +1 -0
  208. package/dist/src/taskModule/taskModuleContinueResponse.d.ts +15 -0
  209. package/dist/src/taskModule/taskModuleContinueResponse.js +7 -0
  210. package/dist/src/taskModule/taskModuleContinueResponse.js.map +1 -0
  211. package/dist/src/taskModule/taskModuleMessageResponse.d.ts +14 -0
  212. package/dist/src/taskModule/taskModuleMessageResponse.js +7 -0
  213. package/dist/src/taskModule/taskModuleMessageResponse.js.map +1 -0
  214. package/dist/src/taskModule/taskModuleRequest.d.ts +22 -0
  215. package/dist/src/taskModule/taskModuleRequest.js +7 -0
  216. package/dist/src/taskModule/taskModuleRequest.js.map +1 -0
  217. package/dist/src/taskModule/taskModuleRequestContext.d.ts +13 -0
  218. package/dist/src/taskModule/taskModuleRequestContext.js +7 -0
  219. package/dist/src/taskModule/taskModuleRequestContext.js.map +1 -0
  220. package/dist/src/taskModule/taskModuleResponse.d.ts +19 -0
  221. package/dist/src/taskModule/taskModuleResponse.js +7 -0
  222. package/dist/src/taskModule/taskModuleResponse.js.map +1 -0
  223. package/dist/src/taskModule/taskModuleResponseBase.d.ts +17 -0
  224. package/dist/src/taskModule/taskModuleResponseBase.js +7 -0
  225. package/dist/src/taskModule/taskModuleResponseBase.js.map +1 -0
  226. package/dist/src/taskModule/taskModuleTaskInfo.d.ts +38 -0
  227. package/dist/src/taskModule/taskModuleTaskInfo.js +7 -0
  228. package/dist/src/taskModule/taskModuleTaskInfo.js.map +1 -0
  229. package/dist/src/teamsAgentExtension.d.ts +30 -0
  230. package/dist/src/teamsAgentExtension.js +184 -0
  231. package/dist/src/teamsAgentExtension.js.map +1 -0
  232. package/dist/src/teamsAttachmentDownloader.d.ts +27 -0
  233. package/dist/src/teamsAttachmentDownloader.js +80 -0
  234. package/dist/src/teamsAttachmentDownloader.js.map +1 -0
  235. package/dist/src/teamsInfo.d.ts +174 -0
  236. package/dist/src/teamsInfo.js +387 -0
  237. package/dist/src/teamsInfo.js.map +1 -0
  238. package/package.json +37 -0
  239. package/src/activity-extensions/channelInfo.ts +33 -0
  240. package/src/activity-extensions/index.ts +16 -0
  241. package/src/activity-extensions/notificationInfo.ts +33 -0
  242. package/src/activity-extensions/onBehalfOf.ts +38 -0
  243. package/src/activity-extensions/teamInfo.ts +33 -0
  244. package/src/activity-extensions/teamsChannelAccount.ts +36 -0
  245. package/src/activity-extensions/teamsChannelData.ts +75 -0
  246. package/src/activity-extensions/teamsChannelDataParser.ts +17 -0
  247. package/src/activity-extensions/teamsChannelDataSettings.ts +28 -0
  248. package/src/activity-extensions/teamsConversationUpdateEvents.ts +61 -0
  249. package/src/activity-extensions/teamsMeetingInfo.ts +23 -0
  250. package/src/activity-extensions/teamsMessageEvents.ts +6 -0
  251. package/src/activity-extensions/tenantInfo.ts +23 -0
  252. package/src/client/index.ts +7 -0
  253. package/src/client/teamsConnectorClient.ts +340 -0
  254. package/src/client/teamsConnectorClient.types.ts +168 -0
  255. package/src/compat/readReceipInfo.ts +54 -0
  256. package/src/compat/teamsActivityHandler.ts +1140 -0
  257. package/src/file/fileConsentCardResponse.ts +31 -0
  258. package/src/file/fileUploadInfo.ts +34 -0
  259. package/src/file/index.ts +7 -0
  260. package/src/index.ts +10 -0
  261. package/src/meeting/index.ts +23 -0
  262. package/src/meeting/meeting.ts +307 -0
  263. package/src/meeting/meetingDetails.ts +20 -0
  264. package/src/meeting/meetingDetailsBase.ts +16 -0
  265. package/src/meeting/meetingEndEventDetails.ts +14 -0
  266. package/src/meeting/meetingEventDetails.ts +14 -0
  267. package/src/meeting/meetingInfo.ts +26 -0
  268. package/src/meeting/meetingNotification.ts +11 -0
  269. package/src/meeting/meetingNotificationBase.ts +15 -0
  270. package/src/meeting/meetingNotificationChannelData.ts +14 -0
  271. package/src/meeting/meetingNotificationRecipientFailureInfo.ts +16 -0
  272. package/src/meeting/meetingNotificationResponse.ts +16 -0
  273. package/src/meeting/meetingParticipantsEventDetails.ts +14 -0
  274. package/src/meeting/meetingStageSurface.ts +17 -0
  275. package/src/meeting/meetingStartEventDetails.ts +16 -0
  276. package/src/meeting/meetingSurface.ts +12 -0
  277. package/src/meeting/meetingTabIconSurface.ts +19 -0
  278. package/src/meeting/targetedMeetingNotification.ts +23 -0
  279. package/src/meeting/targetedMeetingNotificationValue.ts +21 -0
  280. package/src/meeting/teamsMeetingMember.ts +22 -0
  281. package/src/meeting/teamsMeetingParticipant.ts +29 -0
  282. package/src/meeting/userMeetingDetails.ts +19 -0
  283. package/src/message-actions-payload/index.ts +14 -0
  284. package/src/message-actions-payload/messageActionsPayload.ts +93 -0
  285. package/src/message-actions-payload/messageActionsPayloadApp.ts +27 -0
  286. package/src/message-actions-payload/messageActionsPayloadAttachment.ts +34 -0
  287. package/src/message-actions-payload/messageActionsPayloadBody.ts +27 -0
  288. package/src/message-actions-payload/messageActionsPayloadConversation.ts +27 -0
  289. package/src/message-actions-payload/messageActionsPayloadFrom.ts +26 -0
  290. package/src/message-actions-payload/messageActionsPayloadMention.ts +24 -0
  291. package/src/message-actions-payload/messageActionsPayloadReaction.ts +29 -0
  292. package/src/message-actions-payload/messageActionsPayloadUser.ts +31 -0
  293. package/src/messageExtension/appBasedLinkQuery.ts +20 -0
  294. package/src/messageExtension/index.ts +15 -0
  295. package/src/messageExtension/messageExtension.ts +324 -0
  296. package/src/messageExtension/messagingExtensionAction.ts +44 -0
  297. package/src/messageExtension/messagingExtensionActionResponse.ts +25 -0
  298. package/src/messageExtension/messagingExtensionAttachment.ts +16 -0
  299. package/src/messageExtension/messagingExtensionParameter.ts +28 -0
  300. package/src/messageExtension/messagingExtensionQuery.ts +51 -0
  301. package/src/messageExtension/messagingExtensionQueryOptions.ts +28 -0
  302. package/src/messageExtension/messagingExtensionResponse.ts +21 -0
  303. package/src/messageExtension/messagingExtensionResult.ts +60 -0
  304. package/src/messageExtension/messagingExtensionSuggestedAction.ts +16 -0
  305. package/src/messages/messages.ts +91 -0
  306. package/src/taskModule/index.ts +12 -0
  307. package/src/taskModule/taskModule.ts +241 -0
  308. package/src/taskModule/taskModuleContinueResponse.ts +17 -0
  309. package/src/taskModule/taskModuleMessageResponse.ts +16 -0
  310. package/src/taskModule/taskModuleRequest.ts +24 -0
  311. package/src/taskModule/taskModuleRequestContext.ts +14 -0
  312. package/src/taskModule/taskModuleResponse.ts +21 -0
  313. package/src/taskModule/taskModuleResponseBase.ts +19 -0
  314. package/src/taskModule/taskModuleTaskInfo.ts +40 -0
  315. package/src/teamsAgentExtension.ts +201 -0
  316. package/src/teamsAttachmentDownloader.ts +78 -0
  317. package/src/teamsInfo.ts +430 -0
@@ -0,0 +1,1140 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import * as z from 'zod'
6
+ import { ActivityHandler, InvokeResponse, TurnContext } from '@microsoft/agents-hosting'
7
+ import { AppBasedLinkQuery, MessagingExtensionAction, MessagingExtensionActionResponse, MessagingExtensionQuery, MessagingExtensionResponse, parseValueMessagingExtensionQuery } from '../messageExtension'
8
+ import { TaskModuleRequest, TaskModuleResponse } from '../taskModule'
9
+ import { FileConsentCardResponse } from '../file'
10
+ import { ChannelInfo, parseTeamsChannelData, TeamInfo, TeamsChannelAccount } from '../activity-extensions'
11
+ import { MeetingEndEventDetails, MeetingParticipantsEventDetails, MeetingStartEventDetails, TeamsMeetingMember } from '../meeting'
12
+ import { ReadReceiptInfo } from './readReceipInfo'
13
+
14
+ const TeamsMeetingStartT = z
15
+ .object({
16
+ Id: z.string(),
17
+ JoinUrl: z.string(),
18
+ MeetingType: z.string(),
19
+ Title: z.string(),
20
+ StartTime: z.string()
21
+ })
22
+
23
+ const TeamsMeetingEndT = z
24
+ .object({
25
+ Id: z.string(),
26
+ JoinUrl: z.string(),
27
+ MeetingType: z.string(),
28
+ Title: z.string(),
29
+ EndTime: z.string()
30
+ })
31
+
32
+ /**
33
+ * A handler for processing Microsoft Teams-specific activities.
34
+ * Extends the ActivityHandler class to provide additional Teams-specific functionality.
35
+ * This class includes methods for handling various Teams events, such as message updates, channel events, and meeting events.
36
+ */
37
+ export class TeamsActivityHandler extends ActivityHandler {
38
+ /**
39
+ * Handles invoke activities.
40
+ * @param {TurnContext} context - The context object for the turn.
41
+ * @returns {Promise<InvokeResponse>} The invoke response.
42
+ */
43
+ protected async onInvokeActivity (context: TurnContext): Promise<InvokeResponse> {
44
+ let runEvents = true
45
+ try {
46
+ if (!context.activity.name && context.activity.channelId === 'msteams') {
47
+ return await this.handleTeamsCardActionInvoke(context)
48
+ } else {
49
+ switch (context.activity.name) {
50
+ case 'config/fetch':
51
+ return ActivityHandler.createInvokeResponse(
52
+ await this.handleTeamsConfigFetch(context, context.activity.value)
53
+ )
54
+ case 'config/submit':
55
+ return ActivityHandler.createInvokeResponse(
56
+ await this.handleTeamsConfigSubmit(context, context.activity.value)
57
+ )
58
+ case 'fileConsent/invoke':
59
+ return ActivityHandler.createInvokeResponse(
60
+ await this.handleTeamsFileConsent(context, context.activity.value as FileConsentCardResponse)
61
+ )
62
+
63
+ case 'actionableMessage/executeAction':
64
+ // TODO: Uncomment when O365ConnectorCardActionQuery is available
65
+ // await this.handleTeamsO365ConnectorCardAction(context, context.activity.value) // as O365ConnectorCardActionQuery
66
+ return ActivityHandler.createInvokeResponse()
67
+
68
+ case 'composeExtension/queryLink':
69
+ return ActivityHandler.createInvokeResponse(
70
+ await this.handleTeamsAppBasedLinkQuery(context, context.activity.value as AppBasedLinkQuery)
71
+ )
72
+
73
+ case 'composeExtension/anonymousQueryLink':
74
+ return ActivityHandler.createInvokeResponse(
75
+ await this.handleTeamsAnonymousAppBasedLinkQuery(context, context.activity.value as AppBasedLinkQuery)
76
+ )
77
+
78
+ case 'composeExtension/query':
79
+ return ActivityHandler.createInvokeResponse(
80
+ await this.handleTeamsMessagingExtensionQuery(context, parseValueMessagingExtensionQuery(context.activity.value))
81
+ )
82
+
83
+ case 'composeExtension/selectItem':
84
+ return ActivityHandler.createInvokeResponse(
85
+ await this.handleTeamsMessagingExtensionSelectItem(context, context.activity.value)
86
+ )
87
+
88
+ case 'composeExtension/submitAction':
89
+ return ActivityHandler.createInvokeResponse(
90
+ await this.handleTeamsMessagingExtensionSubmitActionDispatch(
91
+ context,
92
+ context.activity.value as MessagingExtensionAction
93
+ )
94
+ )
95
+
96
+ case 'composeExtension/fetchTask':
97
+ return ActivityHandler.createInvokeResponse(
98
+ await this.handleTeamsMessagingExtensionFetchTask(context, context.activity.value as MessagingExtensionAction)
99
+ )
100
+
101
+ case 'composeExtension/querySettingUrl':
102
+ return ActivityHandler.createInvokeResponse(
103
+ await this.handleTeamsMessagingExtensionConfigurationQuerySettingUrl(
104
+ context,
105
+ context.activity.value as MessagingExtensionQuery
106
+ )
107
+ )
108
+
109
+ case 'composeExtension/setting':
110
+ await this.handleTeamsMessagingExtensionConfigurationSetting(context, context.activity.value)
111
+ return ActivityHandler.createInvokeResponse()
112
+
113
+ case 'composeExtension/onCardButtonClicked':
114
+ await this.handleTeamsMessagingExtensionCardButtonClicked(context, context.activity.value)
115
+ return ActivityHandler.createInvokeResponse()
116
+
117
+ case 'task/fetch':
118
+ return ActivityHandler.createInvokeResponse(
119
+ await this.handleTeamsTaskModuleFetch(context, context.activity.value as TaskModuleRequest)
120
+ )
121
+
122
+ case 'task/submit':
123
+ return ActivityHandler.createInvokeResponse(
124
+ await this.handleTeamsTaskModuleSubmit(context, context.activity.value as TaskModuleRequest)
125
+ )
126
+
127
+ case 'tab/fetch':
128
+ return ActivityHandler.createInvokeResponse(
129
+ // TODO: Uncomment when TabRequest is available
130
+ // await this.handleTeamsTabFetch(context, context.activity.value) // as TabRequest
131
+ )
132
+
133
+ case 'tab/submit':
134
+ return ActivityHandler.createInvokeResponse(
135
+ // TODO: Uncomment when TabSubmit is available
136
+ // await this.handleTeamsTabSubmit(context, context.activity.value) // as TabSubmit
137
+ )
138
+
139
+ default:
140
+ runEvents = false
141
+ return await super.onInvokeActivity(context)
142
+ }
143
+ }
144
+ } catch (err: any) {
145
+ if (err.message === 'NotImplemented') {
146
+ return { status: 501 }
147
+ } else if (err.message === 'BadRequest') {
148
+ return { status: 400 }
149
+ }
150
+ throw err
151
+ } finally {
152
+ if (runEvents) {
153
+ this.defaultNextEvent(context)()
154
+ }
155
+ }
156
+ }
157
+
158
+ /**
159
+ * Handles card action invoke.
160
+ * @param {TurnContext} _context - The context object for the turn.
161
+ * @returns {Promise<InvokeResponse>} The invoke response.
162
+ */
163
+ protected async handleTeamsCardActionInvoke (_context: TurnContext): Promise<InvokeResponse> {
164
+ throw new Error('NotImplemented')
165
+ }
166
+
167
+ /**
168
+ * Handles config fetch.
169
+ * @param {TurnContext} _context - The context object for the turn.
170
+ * @param {any} _configData - The config data.
171
+ * @returns {Promise<ConfigResponse>} The config response.
172
+ */
173
+ protected async handleTeamsConfigFetch (_context: TurnContext, _configData: any): Promise<any> { // TODO ConfigResponse
174
+ throw new Error('NotImplemented')
175
+ }
176
+
177
+ /**
178
+ * Handles config submit.
179
+ * @param {TurnContext} _context - The context object for the turn.
180
+ * @param {any} _configData - The config data.
181
+ * @returns {Promise<ConfigResponse>} The config response.
182
+ */
183
+ protected async handleTeamsConfigSubmit (_context: TurnContext, _configData: any): Promise<any> { // TODO ConfigResponse
184
+ throw new Error('NotImplemented')
185
+ }
186
+
187
+ /**
188
+ * Handles file consent.
189
+ * @param {TurnContext} context - The context object for the turn.
190
+ * @param {FileConsentCardResponse} fileConsentCardResponse - The file consent card response.
191
+ * @returns {Promise<void>}
192
+ */
193
+ protected async handleTeamsFileConsent (
194
+ context: TurnContext,
195
+ fileConsentCardResponse: FileConsentCardResponse
196
+ ): Promise<void> {
197
+ switch (fileConsentCardResponse.action) {
198
+ case 'accept':
199
+ return await this.handleTeamsFileConsentAccept(context, fileConsentCardResponse)
200
+ case 'decline':
201
+ return await this.handleTeamsFileConsentDecline(context, fileConsentCardResponse)
202
+ default:
203
+ throw new Error('BadRequest')
204
+ }
205
+ }
206
+
207
+ /**
208
+ * Handles file consent accept.
209
+ * @param {TurnContext} _context - The context object for the turn.
210
+ * @param {FileConsentCardResponse} _fileConsentCardResponse - The file consent card response.
211
+ * @returns {Promise<void>}
212
+ */
213
+ protected async handleTeamsFileConsentAccept (
214
+ _context: TurnContext,
215
+ _fileConsentCardResponse: FileConsentCardResponse
216
+ ): Promise<void> {
217
+ throw new Error('NotImplemented')
218
+ }
219
+
220
+ /**
221
+ * Handles file consent decline.
222
+ * @param {TurnContext} _context - The context object for the turn.
223
+ * @param {FileConsentCardResponse} _fileConsentCardResponse - The file consent card response.
224
+ * @returns {Promise<void>}
225
+ */
226
+ protected async handleTeamsFileConsentDecline (
227
+ _context: TurnContext,
228
+ _fileConsentCardResponse: FileConsentCardResponse
229
+ ): Promise<void> {
230
+ throw new Error('NotImplemented')
231
+ }
232
+
233
+ // TODO: Uncomment when O365ConnectorCardActionQuery is available
234
+ // /**
235
+ // * Handles O365 connector card action.
236
+ // * @param {TurnContext} _context - The context object for the turn.
237
+ // * @param {O365ConnectorCardActionQuery} _query - The O365 connector card action query.
238
+ // * @returns {Promise<void>}
239
+ // */
240
+ // protected async handleTeamsO365ConnectorCardAction (
241
+ // _context: TurnContext,
242
+ // _query: O365ConnectorCardActionQuery
243
+ // ): Promise<void> {
244
+ // throw new Error('NotImplemented')
245
+ // }
246
+
247
+ // TODO: Uncomment when SigninStateVerificationQuery is available
248
+ // /**
249
+ // * Handles sign-in verify state.
250
+ // * @param {TurnContext} _context - The context object for the turn.
251
+ // * @param {SigninStateVerificationQuery} _query - The sign-in state verification query.
252
+ // * @returns {Promise<void>}
253
+ // */
254
+ // protected async handleTeamsSigninVerifyState (
255
+ // _context: TurnContext,
256
+ // _query: SigninStateVerificationQuery
257
+ // ): Promise<void> {
258
+ // throw new Error('NotImplemented')
259
+ // }
260
+
261
+ // TODO: Uncomment when SigninStateVerificationQuery is available
262
+ // /**
263
+ // * Handles sign-in token exchange.
264
+ // * @param {TurnContext} _context - The context object for the turn.
265
+ // * @param {SigninStateVerificationQuery} _query - The sign-in state verification query.
266
+ // * @returns {Promise<void>}
267
+ // */
268
+ // protected async handleTeamsSigninTokenExchange (
269
+ // _context: TurnContext,
270
+ // _query: SigninStateVerificationQuery
271
+ // ): Promise<void> {
272
+ // throw new Error('NotImplemented')
273
+ // }
274
+
275
+ /**
276
+ * Handles messaging extension card button clicked.
277
+ * @param {TurnContext} _context - The context object for the turn.
278
+ * @param {any} _cardData - The card data.
279
+ * @returns {Promise<void>}
280
+ */
281
+ protected async handleTeamsMessagingExtensionCardButtonClicked (
282
+ _context: TurnContext,
283
+ _cardData: any
284
+ ): Promise<void> {
285
+ throw new Error('NotImplemented')
286
+ }
287
+
288
+ /**
289
+ * Handles task module fetch.
290
+ * @param {TurnContext} _context - The context object for the turn.
291
+ * @param {TaskModuleRequest} _taskModuleRequest - The task module request.
292
+ * @returns {Promise<TaskModuleResponse>} The task module response.
293
+ */
294
+ protected async handleTeamsTaskModuleFetch (
295
+ _context: TurnContext,
296
+ _taskModuleRequest: TaskModuleRequest
297
+ ): Promise<TaskModuleResponse> {
298
+ throw new Error('NotImplemented')
299
+ }
300
+
301
+ /**
302
+ * Handles task module submit.
303
+ * @param {TurnContext} _context - The context object for the turn.
304
+ * @param {TaskModuleRequest} _taskModuleRequest - The task module request.
305
+ * @returns {Promise<TaskModuleResponse>} The task module response.
306
+ */
307
+ protected async handleTeamsTaskModuleSubmit (
308
+ _context: TurnContext,
309
+ _taskModuleRequest: TaskModuleRequest
310
+ ): Promise<TaskModuleResponse> {
311
+ throw new Error('NotImplemented')
312
+ }
313
+
314
+ // TODO: Uncomment when TabRequest is available
315
+ // /**
316
+ // * Handles tab fetch.
317
+ // * @param {TurnContext} _context - The context object for the turn.
318
+ // * @param {TabRequest} _tabRequest - The tab request.
319
+ // * @returns {Promise<TabResponse>} The tab response.
320
+ // */
321
+ // protected async handleTeamsTabFetch (_context: TurnContext, _tabRequest: TabRequest): Promise<TabResponse> {
322
+ // throw new Error('NotImplemented')
323
+ // }
324
+
325
+ // TODO: Uncomment when TabSubmit is available
326
+ // /**
327
+ // * Handles tab submit.
328
+ // * @param {TurnContext} _context - The context object for the turn.
329
+ // * @param {TabSubmit} _tabSubmit - The tab submit.
330
+ // * @returns {Promise<TabResponse>} The tab response.
331
+ // */
332
+ // protected async handleTeamsTabSubmit (_context: TurnContext, _tabSubmit: TabSubmit): Promise<TabResponse> {
333
+ // throw new Error('NotImplemented')
334
+ // }
335
+
336
+ /**
337
+ * Handles app-based link query.
338
+ * @param {TurnContext} _context - The context object for the turn.
339
+ * @param {AppBasedLinkQuery} _query - The app-based link query.
340
+ * @returns {Promise<MessagingExtensionResponse>} The messaging extension response.
341
+ */
342
+ protected async handleTeamsAppBasedLinkQuery (
343
+ _context: TurnContext,
344
+ _query: AppBasedLinkQuery
345
+ ): Promise<MessagingExtensionResponse> {
346
+ throw new Error('NotImplemented')
347
+ }
348
+
349
+ /**
350
+ * Handles anonymous app-based link query.
351
+ * @param {TurnContext} _context - The context object for the turn.
352
+ * @param {AppBasedLinkQuery} _query - The app-based link query.
353
+ * @returns {Promise<MessagingExtensionResponse>} The messaging extension response.
354
+ */
355
+ protected async handleTeamsAnonymousAppBasedLinkQuery (
356
+ _context: TurnContext,
357
+ _query: AppBasedLinkQuery
358
+ ): Promise<MessagingExtensionResponse> {
359
+ throw new Error('NotImplemented')
360
+ }
361
+
362
+ /**
363
+ * Handles messaging extension query.
364
+ * @param {TurnContext} _context - The context object for the turn.
365
+ * @param {MessagingExtensionQuery} _query - The messaging extension query.
366
+ * @returns {Promise<MessagingExtensionResponse>} The messaging extension response.
367
+ */
368
+ protected async handleTeamsMessagingExtensionQuery (
369
+ _context: TurnContext,
370
+ _query: MessagingExtensionQuery
371
+ ): Promise<MessagingExtensionResponse> {
372
+ throw new Error('NotImplemented')
373
+ }
374
+
375
+ /**
376
+ * Handles messaging extension select item.
377
+ * @param {TurnContext} _context - The context object for the turn.
378
+ * @param {any} _query - The query.
379
+ * @returns {Promise<MessagingExtensionResponse>} The messaging extension response.
380
+ */
381
+ protected async handleTeamsMessagingExtensionSelectItem (
382
+ _context: TurnContext,
383
+ _query: any
384
+ ): Promise<MessagingExtensionResponse> {
385
+ throw new Error('NotImplemented')
386
+ }
387
+
388
+ /**
389
+ * Handles messaging extension submit action dispatch.
390
+ * @param {TurnContext} context - The context object for the turn.
391
+ * @param {MessagingExtensionAction} action - The messaging extension action.
392
+ * @returns {Promise<MessagingExtensionActionResponse>} The messaging extension action response.
393
+ */
394
+ protected async handleTeamsMessagingExtensionSubmitActionDispatch (
395
+ context: TurnContext,
396
+ action: MessagingExtensionAction
397
+ ): Promise<MessagingExtensionActionResponse> {
398
+ if (action.messagePreviewAction) {
399
+ switch (action.messagePreviewAction) {
400
+ case 'edit':
401
+ return await this.handleTeamsMessagingExtensionMessagePreviewEdit(context, action)
402
+ case 'send':
403
+ return await this.handleTeamsMessagingExtensionMessagePreviewSend(context, action)
404
+ default:
405
+ throw new Error('BadRequest')
406
+ }
407
+ } else {
408
+ return await this.handleTeamsMessagingExtensionSubmitAction(context, action)
409
+ }
410
+ }
411
+
412
+ /**
413
+ * Handles messaging extension submit action.
414
+ * @param {TurnContext} _context - The context object for the turn.
415
+ * @param {MessagingExtensionAction} _action - The messaging extension action.
416
+ * @returns {Promise<MessagingExtensionActionResponse>} The messaging extension action response.
417
+ */
418
+ protected async handleTeamsMessagingExtensionSubmitAction (
419
+ _context: TurnContext,
420
+ _action: MessagingExtensionAction
421
+ ): Promise<MessagingExtensionActionResponse> {
422
+ throw new Error('NotImplemented')
423
+ }
424
+
425
+ /**
426
+ * Handles messaging extension message preview edit.
427
+ * @param {TurnContext} _context - The context object for the turn.
428
+ * @param {MessagingExtensionAction} _action - The messaging extension action.
429
+ * @returns {Promise<MessagingExtensionActionResponse>} The messaging extension action response.
430
+ */
431
+ protected async handleTeamsMessagingExtensionMessagePreviewEdit (
432
+ _context: TurnContext,
433
+ _action: MessagingExtensionAction
434
+ ): Promise<MessagingExtensionActionResponse> {
435
+ throw new Error('NotImplemented')
436
+ }
437
+
438
+ /**
439
+ * Handles messaging extension message preview send.
440
+ * @param {TurnContext} _context - The context object for the turn.
441
+ * @param {MessagingExtensionAction} _action - The messaging extension action.
442
+ * @returns {Promise<MessagingExtensionActionResponse>} The messaging extension action response.
443
+ */
444
+ protected async handleTeamsMessagingExtensionMessagePreviewSend (
445
+ _context: TurnContext,
446
+ _action: MessagingExtensionAction
447
+ ): Promise<MessagingExtensionActionResponse> {
448
+ throw new Error('NotImplemented')
449
+ }
450
+
451
+ /**
452
+ * Handles messaging extension fetch task.
453
+ * @param {TurnContext} _context - The context object for the turn.
454
+ * @param {MessagingExtensionAction} _action - The messaging extension action.
455
+ * @returns {Promise<MessagingExtensionActionResponse>} The messaging extension action response.
456
+ */
457
+ protected async handleTeamsMessagingExtensionFetchTask (
458
+ _context: TurnContext,
459
+ _action: MessagingExtensionAction
460
+ ): Promise<MessagingExtensionActionResponse> {
461
+ throw new Error('NotImplemented')
462
+ }
463
+
464
+ /**
465
+ * Handles messaging extension configuration query setting URL.
466
+ * @param {TurnContext} _context - The context object for the turn.
467
+ * @param {MessagingExtensionQuery} _query - The messaging extension query.
468
+ * @returns {Promise<MessagingExtensionResponse>} The messaging extension response.
469
+ */
470
+ protected async handleTeamsMessagingExtensionConfigurationQuerySettingUrl (
471
+ _context: TurnContext,
472
+ _query: MessagingExtensionQuery
473
+ ): Promise<MessagingExtensionResponse> {
474
+ throw new Error('NotImplemented')
475
+ }
476
+
477
+ /**
478
+ * Handles messaging extension configuration setting.
479
+ * @param {TurnContext} _context - The context object for the turn.
480
+ * @param {any} _settings - The settings.
481
+ * @returns {Promise<void>}
482
+ */
483
+ protected async handleTeamsMessagingExtensionConfigurationSetting (_context: TurnContext, _settings: any): Promise<void> {
484
+ throw new Error('NotImplemented')
485
+ }
486
+
487
+ /**
488
+ * Dispatches conversation update activity.
489
+ * @param {TurnContext} context - The context object for the turn.
490
+ * @returns {Promise<void>}
491
+ */
492
+ protected async dispatchConversationUpdateActivity (context: TurnContext): Promise<void> {
493
+ if (context.activity.channelId === 'msteams') {
494
+ const channelData = parseTeamsChannelData(context.activity.channelData)
495
+
496
+ if ((context.activity.membersAdded != null) && context.activity.membersAdded.length > 0) {
497
+ return await this.onTeamsMembersAdded(context)
498
+ }
499
+
500
+ if ((context.activity.membersRemoved != null) && context.activity.membersRemoved.length > 0) {
501
+ return await this.onTeamsMembersRemoved(context)
502
+ }
503
+
504
+ if (!channelData || !channelData.eventType) {
505
+ return await super.dispatchConversationUpdateActivity(context)
506
+ }
507
+
508
+ switch (channelData.eventType) {
509
+ case 'channelCreated':
510
+ return await this.onTeamsChannelCreated(context)
511
+
512
+ case 'channelDeleted':
513
+ return await this.onTeamsChannelDeleted(context)
514
+
515
+ case 'channelRenamed':
516
+ return await this.onTeamsChannelRenamed(context)
517
+
518
+ case 'teamArchived':
519
+ return await this.onTeamsTeamArchived(context)
520
+
521
+ case 'teamDeleted':
522
+ return await this.onTeamsTeamDeleted(context)
523
+
524
+ case 'teamHardDeleted':
525
+ return await this.onTeamsTeamHardDeleted(context)
526
+
527
+ case 'channelRestored':
528
+ return await this.onTeamsChannelRestored(context)
529
+
530
+ case 'teamRenamed':
531
+ return await this.onTeamsTeamRenamed(context)
532
+
533
+ case 'teamRestored':
534
+ return await this.onTeamsTeamRestored(context)
535
+
536
+ case 'teamUnarchived':
537
+ return await this.onTeamsTeamUnarchived(context)
538
+
539
+ default:
540
+ return await super.dispatchConversationUpdateActivity(context)
541
+ }
542
+ } else {
543
+ return await super.dispatchConversationUpdateActivity(context)
544
+ }
545
+ }
546
+
547
+ /**
548
+ * Dispatches message update activity.
549
+ * @param {TurnContext} context - The context object for the turn.
550
+ * @returns {Promise<void>}
551
+ */
552
+ protected async dispatchMessageUpdateActivity (context: TurnContext): Promise<void> {
553
+ if (context.activity.channelId === 'msteams') {
554
+ const channelData = parseTeamsChannelData(context.activity.channelData)
555
+
556
+ switch (channelData.eventType) {
557
+ case 'undeleteMessage':
558
+ return await this.onTeamsMessageUndelete(context)
559
+
560
+ case 'editMessage':
561
+ return await this.onTeamsMessageEdit(context)
562
+
563
+ default:
564
+ return await super.dispatchMessageUpdateActivity(context)
565
+ }
566
+ } else {
567
+ return await super.dispatchMessageUpdateActivity(context)
568
+ }
569
+ }
570
+
571
+ /**
572
+ * Dispatches message delete activity.
573
+ * @param {TurnContext} context - The context object for the turn.
574
+ * @returns {Promise<void>}
575
+ */
576
+ protected async dispatchMessageDeleteActivity (context: TurnContext): Promise<void> {
577
+ if (context.activity.channelId === 'msteams') {
578
+ const channelData = parseTeamsChannelData(context.activity.channelData)
579
+
580
+ switch (channelData.eventType) {
581
+ case 'softDeleteMessage':
582
+ return await this.onTeamsMessageSoftDelete(context)
583
+
584
+ default:
585
+ return await super.dispatchMessageDeleteActivity(context)
586
+ }
587
+ } else {
588
+ return await super.dispatchMessageDeleteActivity(context)
589
+ }
590
+ }
591
+
592
+ /**
593
+ * Handles Teams message undelete.
594
+ * @param {TurnContext} context - The context object for the turn.
595
+ * @returns {Promise<void>}
596
+ */
597
+ protected async onTeamsMessageUndelete (context: TurnContext): Promise<void> {
598
+ await this.handle(context, 'TeamsMessageUndelete', this.defaultNextEvent(context))
599
+ }
600
+
601
+ /**
602
+ * Handles Teams message edit.
603
+ * @param {TurnContext} context - The context object for the turn.
604
+ * @returns {Promise<void>}
605
+ */
606
+ protected async onTeamsMessageEdit (context: TurnContext): Promise<void> {
607
+ await this.handle(context, 'TeamsMessageEdit', this.defaultNextEvent(context))
608
+ }
609
+
610
+ /**
611
+ * Handles Teams message soft delete.
612
+ * @param {TurnContext} context - The context object for the turn.
613
+ * @returns {Promise<void>}
614
+ */
615
+ protected async onTeamsMessageSoftDelete (context: TurnContext): Promise<void> {
616
+ await this.handle(context, 'onTeamsMessageSoftDelete', this.defaultNextEvent(context))
617
+ }
618
+
619
+ /**
620
+ * Handles Teams members added.
621
+ * @param {TurnContext} context - The context object for the turn.
622
+ * @returns {Promise<void>}
623
+ */
624
+ protected async onTeamsMembersAdded (context: TurnContext): Promise<void> {
625
+ await this.handle(context, 'TeamsMembersAdded', this.defaultNextEvent(context))
626
+ }
627
+
628
+ /**
629
+ * Handles Teams members removed.
630
+ * @param {TurnContext} context - The context object for the turn.
631
+ * @returns {Promise<void>}
632
+ */
633
+ protected async onTeamsMembersRemoved (context: TurnContext): Promise<void> {
634
+ if ('TeamsMembersRemoved' in this.handlers && this.handlers.TeamsMembersRemoved.length > 0) {
635
+ await this.handle(context, 'TeamsMembersRemoved', this.defaultNextEvent(context))
636
+ } else {
637
+ await this.handle(context, 'MembersRemoved', this.defaultNextEvent(context))
638
+ }
639
+ }
640
+
641
+ /**
642
+ * Handles Teams channel created.
643
+ * @param {TurnContext} context - The context object for the turn.
644
+ * @returns {Promise<void>}
645
+ */
646
+ protected async onTeamsChannelCreated (context: TurnContext): Promise<void> {
647
+ await this.handle(context, 'TeamsChannelCreated', this.defaultNextEvent(context))
648
+ }
649
+
650
+ /**
651
+ * Handles Teams channel deleted.
652
+ * @param {TurnContext} context - The context object for the turn.
653
+ * @returns {Promise<void>}
654
+ */
655
+ protected async onTeamsChannelDeleted (context: TurnContext): Promise<void> {
656
+ await this.handle(context, 'TeamsChannelDeleted', this.defaultNextEvent(context))
657
+ }
658
+
659
+ /**
660
+ * Handles Teams channel renamed.
661
+ * @param {TurnContext} context - The context object for the turn.
662
+ * @returns {Promise<void>}
663
+ */
664
+ protected async onTeamsChannelRenamed (context: TurnContext): Promise<void> {
665
+ await this.handle(context, 'TeamsChannelRenamed', this.defaultNextEvent(context))
666
+ }
667
+
668
+ /**
669
+ * Handles Teams team archived.
670
+ * @param {TurnContext} context - The context object for the turn.
671
+ * @returns {Promise<void>}
672
+ */
673
+ protected async onTeamsTeamArchived (context: TurnContext): Promise<void> {
674
+ await this.handle(context, 'TeamsTeamArchived', this.defaultNextEvent(context))
675
+ }
676
+
677
+ /**
678
+ * Handles Teams team deleted.
679
+ * @param {TurnContext} context - The context object for the turn.
680
+ * @returns {Promise<void>}
681
+ */
682
+ protected async onTeamsTeamDeleted (context: TurnContext): Promise<void> {
683
+ await this.handle(context, 'TeamsTeamDeleted', this.defaultNextEvent(context))
684
+ }
685
+
686
+ /**
687
+ * Handles Teams team hard deleted.
688
+ * @param {TurnContext} context - The context object for the turn.
689
+ * @returns {Promise<void>}
690
+ */
691
+ protected async onTeamsTeamHardDeleted (context: TurnContext): Promise<void> {
692
+ await this.handle(context, 'TeamsTeamHardDeleted', this.defaultNextEvent(context))
693
+ }
694
+
695
+ /**
696
+ * Handles Teams channel restored.
697
+ * @param {TurnContext} context - The context object for the turn.
698
+ * @returns {Promise<void>}
699
+ */
700
+ protected async onTeamsChannelRestored (context: TurnContext): Promise<void> {
701
+ await this.handle(context, 'TeamsChannelRestored', this.defaultNextEvent(context))
702
+ }
703
+
704
+ /**
705
+ * Handles Teams team renamed.
706
+ * @param {TurnContext} context - The context object for the turn.
707
+ * @returns {Promise<void>}
708
+ */
709
+ protected async onTeamsTeamRenamed (context: TurnContext): Promise<void> {
710
+ await this.handle(context, 'TeamsTeamRenamed', this.defaultNextEvent(context))
711
+ }
712
+
713
+ /**
714
+ * Handles Teams team restored.
715
+ * @param {TurnContext} context - The context object for the turn.
716
+ * @returns {Promise<void>}
717
+ */
718
+ protected async onTeamsTeamRestored (context: TurnContext): Promise<void> {
719
+ await this.handle(context, 'TeamsTeamRestored', this.defaultNextEvent(context))
720
+ }
721
+
722
+ /**
723
+ * Handles Teams team unarchived.
724
+ * @param {TurnContext} context - The context object for the turn.
725
+ * @returns {Promise<void>}
726
+ */
727
+ protected async onTeamsTeamUnarchived (context: TurnContext): Promise<void> {
728
+ await this.handle(context, 'TeamsTeamUnarchived', this.defaultNextEvent(context))
729
+ }
730
+
731
+ /**
732
+ * Registers a handler for Teams message undelete event.
733
+ * @param {function} handler - The handler function.
734
+ * @returns {this}
735
+ */
736
+ onTeamsMessageUndeleteEvent (handler: (context: TurnContext, next: () => Promise<void>) => Promise<void>): this {
737
+ return this.on('TeamsMessageUndelete', async (context, next) => {
738
+ await handler(context, next)
739
+ })
740
+ }
741
+
742
+ /**
743
+ * Registers a handler for Teams message edit event.
744
+ * @param {function} handler - The handler function.
745
+ * @returns {this}
746
+ */
747
+ onTeamsMessageEditEvent (handler: (context: TurnContext, next: () => Promise<void>) => Promise<void>): this {
748
+ return this.on('TeamsMessageEdit', async (context, next) => {
749
+ await handler(context, next)
750
+ })
751
+ }
752
+
753
+ /**
754
+ * Registers a handler for Teams message soft delete event.
755
+ * @param {function} handler - The handler function.
756
+ * @returns {this}
757
+ */
758
+ onTeamsMessageSoftDeleteEvent (handler: (context: TurnContext, next: () => Promise<void>) => Promise<void>): this {
759
+ return this.on('onTeamsMessageSoftDelete', async (context, next) => {
760
+ await handler(context, next)
761
+ })
762
+ }
763
+
764
+ /**
765
+ * Registers a handler for Teams members added event.
766
+ * @param {function} handler - The handler function.
767
+ * @returns {this}
768
+ */
769
+ onTeamsMembersAddedEvent (
770
+ handler: (
771
+ membersAdded: TeamsChannelAccount[],
772
+ teamInfo: TeamInfo,
773
+ context: TurnContext,
774
+ next: () => Promise<void>
775
+ ) => Promise<void>
776
+ ): this {
777
+ return this.on('TeamsMembersAdded', async (context, next) => {
778
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
779
+ await handler(context.activity.membersAdded || [], teamsChannelData.team as TeamInfo, context, next)
780
+ })
781
+ }
782
+
783
+ /**
784
+ * Registers a handler for Teams members removed event.
785
+ * @param {function} handler - The handler function.
786
+ * @returns {this}
787
+ */
788
+ onTeamsMembersRemovedEvent (
789
+ handler: (
790
+ membersRemoved: TeamsChannelAccount[],
791
+ teamInfo: TeamInfo,
792
+ context: TurnContext,
793
+ next: () => Promise<void>
794
+ ) => Promise<void>
795
+ ): this {
796
+ return this.on('TeamsMembersRemoved', async (context, next) => {
797
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
798
+ await handler(context.activity.membersRemoved || [], teamsChannelData.team as TeamInfo, context, next)
799
+ })
800
+ }
801
+
802
+ /**
803
+ * Registers a handler for Teams channel created event.
804
+ * @param {function} handler - The handler function.
805
+ * @returns {this}
806
+ */
807
+ onTeamsChannelCreatedEvent (
808
+ handler: (
809
+ channelInfo: ChannelInfo,
810
+ teamInfo: TeamInfo,
811
+ context: TurnContext,
812
+ next: () => Promise<void>
813
+ ) => Promise<void>
814
+ ): this {
815
+ return this.on('TeamsChannelCreated', async (context, next) => {
816
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
817
+ await handler(teamsChannelData.channel as ChannelInfo, teamsChannelData.team as TeamInfo, context, next)
818
+ })
819
+ }
820
+
821
+ /**
822
+ * Registers a handler for Teams channel deleted event.
823
+ * @param {function} handler - The handler function.
824
+ * @returns {this}
825
+ */
826
+ onTeamsChannelDeletedEvent (
827
+ handler: (
828
+ channelInfo: ChannelInfo,
829
+ teamInfo: TeamInfo,
830
+ context: TurnContext,
831
+ next: () => Promise<void>
832
+ ) => Promise<void>
833
+ ): this {
834
+ return this.on('TeamsChannelDeleted', async (context, next) => {
835
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
836
+ await handler(teamsChannelData.channel as ChannelInfo, teamsChannelData.team as TeamInfo, context, next)
837
+ })
838
+ }
839
+
840
+ /**
841
+ * Registers a handler for Teams channel renamed event.
842
+ * @param {function} handler - The handler function.
843
+ * @returns {this}
844
+ */
845
+ onTeamsChannelRenamedEvent (
846
+ handler: (
847
+ channelInfo: ChannelInfo,
848
+ teamInfo: TeamInfo,
849
+ context: TurnContext,
850
+ next: () => Promise<void>
851
+ ) => Promise<void>
852
+ ): this {
853
+ return this.on('TeamsChannelRenamed', async (context, next) => {
854
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
855
+ await handler(teamsChannelData.channel as ChannelInfo, teamsChannelData.team as TeamInfo, context, next)
856
+ })
857
+ }
858
+
859
+ /**
860
+ * Registers a handler for Teams team archived event.
861
+ * @param {function} handler - The handler function.
862
+ * @returns {this}
863
+ */
864
+ onTeamsTeamArchivedEvent (
865
+ handler: (teamInfo: TeamInfo, context: TurnContext, next: () => Promise<void>) => Promise<void>
866
+ ): this {
867
+ return this.on('TeamsTeamArchived', async (context, next) => {
868
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
869
+ await handler(teamsChannelData.team as TeamInfo, context, next)
870
+ })
871
+ }
872
+
873
+ /**
874
+ * Registers a handler for Teams team deleted event.
875
+ * @param {function} handler - The handler function.
876
+ * @returns {this}
877
+ */
878
+ onTeamsTeamDeletedEvent (
879
+ handler: (teamInfo: TeamInfo, context: TurnContext, next: () => Promise<void>) => Promise<void>
880
+ ): this {
881
+ return this.on('TeamsTeamDeleted', async (context, next) => {
882
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
883
+ await handler(teamsChannelData.team as TeamInfo, context, next)
884
+ })
885
+ }
886
+
887
+ /**
888
+ * Registers a handler for Teams team hard deleted event.
889
+ * @param {function} handler - The handler function.
890
+ * @returns {this}
891
+ */
892
+ onTeamsTeamHardDeletedEvent (
893
+ handler: (teamInfo: TeamInfo, context: TurnContext, next: () => Promise<void>) => Promise<void>
894
+ ): this {
895
+ return this.on('TeamsTeamHardDeleted', async (context, next) => {
896
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
897
+ await handler(teamsChannelData.team as TeamInfo, context, next)
898
+ })
899
+ }
900
+
901
+ /**
902
+ * Registers a handler for Teams channel restored event.
903
+ * @param {function} handler - The handler function.
904
+ * @returns {this}
905
+ */
906
+ onTeamsChannelRestoredEvent (
907
+ handler: (
908
+ channelInfo: ChannelInfo,
909
+ teamInfo: TeamInfo,
910
+ context: TurnContext,
911
+ next: () => Promise<void>
912
+ ) => Promise<void>
913
+ ): this {
914
+ return this.on('TeamsChannelRestored', async (context, next) => {
915
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
916
+ await handler(teamsChannelData.channel as ChannelInfo, teamsChannelData.team as TeamInfo, context, next)
917
+ })
918
+ }
919
+
920
+ /**
921
+ * Registers a handler for Teams team renamed event.
922
+ * @param {function} handler - The handler function.
923
+ * @returns {this}
924
+ */
925
+ onTeamsTeamRenamedEvent (
926
+ handler: (teamInfo: TeamInfo, context: TurnContext, next: () => Promise<void>) => Promise<void>
927
+ ): this {
928
+ return this.on('TeamsTeamRenamed', async (context, next) => {
929
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
930
+ await handler(teamsChannelData.team as TeamInfo, context, next)
931
+ })
932
+ }
933
+
934
+ /**
935
+ * Registers a handler for Teams team restored event.
936
+ * @param {function} handler - The handler function.
937
+ * @returns {this}
938
+ */
939
+ onTeamsTeamRestoredEvent (
940
+ handler: (teamInfo: TeamInfo, context: TurnContext, next: () => Promise<void>) => Promise<void>
941
+ ): this {
942
+ return this.on('TeamsTeamRestored', async (context, next) => {
943
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
944
+ await handler(teamsChannelData.team as TeamInfo, context, next)
945
+ })
946
+ }
947
+
948
+ /**
949
+ * Registers a handler for Teams team unarchived event.
950
+ * @param {function} handler - The handler function.
951
+ * @returns {this}
952
+ */
953
+ onTeamsTeamUnarchivedEvent (
954
+ handler: (teamInfo: TeamInfo, context: TurnContext, next: () => Promise<void>) => Promise<void>
955
+ ): this {
956
+ return this.on('TeamsTeamUnarchived', async (context, next) => {
957
+ const teamsChannelData = parseTeamsChannelData(context.activity.channelData)
958
+ await handler(teamsChannelData.team as TeamInfo, context, next)
959
+ })
960
+ }
961
+
962
+ /**
963
+ * Dispatches event activity.
964
+ * @param {TurnContext} context - The context object for the turn.
965
+ * @returns {Promise<void>}
966
+ */
967
+ protected async dispatchEventActivity (context: TurnContext): Promise<void> {
968
+ if (context.activity.channelId === 'msteams') {
969
+ switch (context.activity.name) {
970
+ case 'application/vnd.microsoft.readReceipt':
971
+ return await this.onTeamsReadReceipt(context)
972
+ case 'application/vnd.microsoft.meetingStart':
973
+ return await this.onTeamsMeetingStart(context)
974
+ case 'application/vnd.microsoft.meetingEnd':
975
+ return await this.onTeamsMeetingEnd(context)
976
+ case 'application/vnd.microsoft.meetingParticipantJoin':
977
+ return await this.onTeamsMeetingParticipantsJoin(context)
978
+ case 'application/vnd.microsoft.meetingParticipantLeave':
979
+ return await this.onTeamsMeetingParticipantsLeave(context)
980
+ }
981
+ }
982
+
983
+ return await super.dispatchEventActivity(context)
984
+ }
985
+
986
+ /**
987
+ * Handles Teams meeting start.
988
+ * @param {TurnContext} context - The context object for the turn.
989
+ * @returns {Promise<void>}
990
+ */
991
+ protected async onTeamsMeetingStart (context: TurnContext): Promise<void> {
992
+ await this.handle(context, 'TeamsMeetingStart', this.defaultNextEvent(context))
993
+ }
994
+
995
+ /**
996
+ * Handles Teams meeting end.
997
+ * @param {TurnContext} context - The context object for the turn.
998
+ * @returns {Promise<void>}
999
+ */
1000
+ protected async onTeamsMeetingEnd (context: TurnContext): Promise<void> {
1001
+ await this.handle(context, 'TeamsMeetingEnd', this.defaultNextEvent(context))
1002
+ }
1003
+
1004
+ /**
1005
+ * Handles Teams read receipt.
1006
+ * @param {TurnContext} context - The context object for the turn.
1007
+ * @returns {Promise<void>}
1008
+ */
1009
+ protected async onTeamsReadReceipt (context: TurnContext): Promise<void> {
1010
+ await this.handle(context, 'TeamsReadReceipt', this.defaultNextEvent(context))
1011
+ }
1012
+
1013
+ /**
1014
+ * Handles Teams meeting participants join.
1015
+ * @param {TurnContext} context - The context object for the turn.
1016
+ * @returns {Promise<void>}
1017
+ */
1018
+ protected async onTeamsMeetingParticipantsJoin (context: TurnContext): Promise<void> {
1019
+ await this.handle(context, 'TeamsMeetingParticipantsJoin', this.defaultNextEvent(context))
1020
+ }
1021
+
1022
+ /**
1023
+ * Handles Teams meeting participants leave.
1024
+ * @param {TurnContext} context - The context object for the turn.
1025
+ * @returns {Promise<void>}
1026
+ */
1027
+ protected async onTeamsMeetingParticipantsLeave (context: TurnContext): Promise<void> {
1028
+ await this.handle(context, 'TeamsMeetingParticipantsLeave', this.defaultNextEvent(context))
1029
+ }
1030
+
1031
+ /**
1032
+ * Registers a handler for Teams meeting start event.
1033
+ * @param {function} handler - The handler function.
1034
+ * @returns {this}
1035
+ */
1036
+ onTeamsMeetingStartEvent (
1037
+ handler: (meeting: MeetingStartEventDetails, context: TurnContext, next: () => Promise<void>) => Promise<void>
1038
+ ): this {
1039
+ return this.on('TeamsMeetingStart', async (context, next) => {
1040
+ const meeting = TeamsMeetingStartT.parse(context.activity.value)
1041
+ await handler(
1042
+ {
1043
+ id: meeting.Id,
1044
+ joinUrl: meeting.JoinUrl,
1045
+ meetingType: meeting.MeetingType,
1046
+ startTime: new Date(meeting.StartTime),
1047
+ title: meeting.Title
1048
+ },
1049
+ context,
1050
+ next
1051
+ )
1052
+ })
1053
+ }
1054
+
1055
+ /**
1056
+ * Registers a handler for Teams meeting end event.
1057
+ * @param {function} handler - The handler function.
1058
+ * @returns {this}
1059
+ */
1060
+ onTeamsMeetingEndEvent (
1061
+ handler: (meeting: MeetingEndEventDetails, context: TurnContext, next: () => Promise<void>) => Promise<void>
1062
+ ): this {
1063
+ return this.on('TeamsMeetingEnd', async (context, next) => {
1064
+ const meeting = TeamsMeetingEndT.parse(context.activity.value)
1065
+ await handler(
1066
+ {
1067
+ id: meeting.Id,
1068
+ joinUrl: meeting.JoinUrl,
1069
+ meetingType: meeting.MeetingType,
1070
+ endTime: new Date(meeting.EndTime),
1071
+ title: meeting.Title
1072
+ },
1073
+ context,
1074
+ next
1075
+ )
1076
+ })
1077
+ }
1078
+
1079
+ /**
1080
+ * Registers a handler for Teams read receipt event.
1081
+ * @param {function} handler - The handler function.
1082
+ * @returns {this}
1083
+ */
1084
+ onTeamsReadReceiptEvent (
1085
+ handler: (receiptInfo: ReadReceiptInfo, context: TurnContext, next: () => Promise<void>) => Promise<void>
1086
+ ): this {
1087
+ return this.on('TeamsReadReceipt', async (context, next) => {
1088
+ const receiptInfo = context.activity.value as { lastReadMessageId: string }
1089
+ await handler(new ReadReceiptInfo(receiptInfo.lastReadMessageId), context, next)
1090
+ })
1091
+ }
1092
+
1093
+ /**
1094
+ * Registers a handler for Teams meeting participants join event.
1095
+ * @param {function} handler - The handler function.
1096
+ * @returns {this}
1097
+ */
1098
+ onTeamsMeetingParticipantsJoinEvent (
1099
+ handler: (
1100
+ meeting: MeetingParticipantsEventDetails,
1101
+ context: TurnContext,
1102
+ next: () => Promise<void>
1103
+ ) => Promise<void>
1104
+ ): this {
1105
+ return this.on('TeamsMeetingParticipantsJoin', async (context, next) => {
1106
+ const meeting = TeamsMeetingStartT.parse(context.activity.value)
1107
+ await handler(
1108
+ {
1109
+ members: (meeting as unknown as { members: TeamsMeetingMember[] }).members
1110
+ },
1111
+ context,
1112
+ next
1113
+ )
1114
+ })
1115
+ }
1116
+
1117
+ /**
1118
+ * Registers a handler for Teams meeting participants leave event.
1119
+ * @param {function} handler - The handler function.
1120
+ * @returns {this}
1121
+ */
1122
+ onTeamsMeetingParticipantsLeaveEvent (
1123
+ handler: (
1124
+ meeting: MeetingParticipantsEventDetails,
1125
+ context: TurnContext,
1126
+ next: () => Promise<void>
1127
+ ) => Promise<void>
1128
+ ): this {
1129
+ return this.on('TeamsMeetingParticipantsLeave', async (context, next) => {
1130
+ const meeting = TeamsMeetingEndT.parse(context.activity.value)
1131
+ await handler(
1132
+ {
1133
+ members: (meeting as unknown as { members: TeamsMeetingMember[] }).members
1134
+ },
1135
+ context,
1136
+ next
1137
+ )
1138
+ })
1139
+ }
1140
+ }