@microsoft/agents-hosting-extensions-teams 0.6.21-g3c2261b2fc → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/client/teamsConnectorClient.d.ts +2 -2
- package/dist/src/client/teamsConnectorClient.js +5 -4
- package/dist/src/client/teamsConnectorClient.js.map +1 -1
- package/dist/src/feedbackLoopData.d.ts +28 -0
- package/dist/src/feedbackLoopData.js +3 -0
- package/dist/src/feedbackLoopData.js.map +1 -0
- package/dist/src/file/fileConsentCardResponse.d.ts +1 -1
- package/dist/src/file/fileUploadInfo.d.ts +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/meeting/meetingDetails.d.ts +1 -1
- package/dist/src/meeting/meetingDetailsBase.d.ts +1 -1
- package/dist/src/meeting/meetingEndEventDetails.d.ts +1 -1
- package/dist/src/meeting/meetingEventDetails.d.ts +1 -1
- package/dist/src/meeting/meetingNotificationBase.d.ts +1 -1
- package/dist/src/meeting/meetingNotificationChannelData.d.ts +1 -1
- package/dist/src/meeting/meetingNotificationRecipientFailureInfo.d.ts +1 -1
- package/dist/src/meeting/meetingParticipantsEventDetails.d.ts +1 -1
- package/dist/src/meeting/meetingStageSurface.d.ts +1 -1
- package/dist/src/meeting/meetingStartEventDetails.d.ts +1 -1
- package/dist/src/meeting/meetingTabIconSurface.d.ts +1 -1
- package/dist/src/meeting/targetedMeetingNotification.d.ts +1 -1
- package/dist/src/meeting/targetedMeetingNotificationValue.d.ts +1 -1
- package/dist/src/meeting/teamsMeetingMember.d.ts +1 -1
- package/dist/src/meeting/teamsMeetingParticipant.d.ts +1 -1
- package/dist/src/meeting/userMeetingDetails.d.ts +1 -1
- package/dist/src/taskModule/taskModuleContinueResponse.d.ts +1 -1
- package/dist/src/taskModule/taskModuleMessageResponse.d.ts +1 -1
- package/dist/src/taskModule/taskModuleRequest.d.ts +1 -1
- package/dist/src/taskModule/taskModuleRequestContext.d.ts +1 -1
- package/dist/src/taskModule/taskModuleResponse.d.ts +1 -1
- package/dist/src/taskModule/taskModuleResponseBase.d.ts +1 -1
- package/dist/src/taskModule/taskModuleTaskInfo.d.ts +1 -1
- package/dist/src/teamsAgentExtension.d.ts +20 -116
- package/dist/src/teamsAgentExtension.js +161 -248
- package/dist/src/teamsAgentExtension.js.map +1 -1
- package/dist/src/teamsAttachmentDownloader.d.ts +11 -2
- package/dist/src/teamsAttachmentDownloader.js +14 -2
- package/dist/src/teamsAttachmentDownloader.js.map +1 -1
- package/dist/src/teamsInfo.js +1 -1
- package/dist/src/teamsInfo.js.map +1 -1
- package/package.json +3 -5
- package/src/client/teamsConnectorClient.ts +8 -4
- package/src/feedbackLoopData.ts +31 -0
- package/src/file/fileConsentCardResponse.ts +1 -1
- package/src/file/fileUploadInfo.ts +1 -1
- package/src/index.ts +1 -0
- package/src/meeting/meetingDetails.ts +1 -1
- package/src/meeting/meetingDetailsBase.ts +1 -1
- package/src/meeting/meetingEndEventDetails.ts +1 -1
- package/src/meeting/meetingEventDetails.ts +1 -1
- package/src/meeting/meetingNotificationBase.ts +1 -1
- package/src/meeting/meetingNotificationChannelData.ts +1 -1
- package/src/meeting/meetingNotificationRecipientFailureInfo.ts +1 -1
- package/src/meeting/meetingParticipantsEventDetails.ts +1 -1
- package/src/meeting/meetingStageSurface.ts +1 -1
- package/src/meeting/meetingStartEventDetails.ts +1 -1
- package/src/meeting/meetingTabIconSurface.ts +1 -1
- package/src/meeting/targetedMeetingNotification.ts +1 -1
- package/src/meeting/targetedMeetingNotificationValue.ts +1 -1
- package/src/meeting/teamsMeetingMember.ts +1 -1
- package/src/meeting/teamsMeetingParticipant.ts +1 -1
- package/src/meeting/userMeetingDetails.ts +1 -1
- package/src/taskModule/taskModuleContinueResponse.ts +1 -1
- package/src/taskModule/taskModuleMessageResponse.ts +1 -1
- package/src/taskModule/taskModuleRequest.ts +1 -1
- package/src/taskModule/taskModuleRequestContext.ts +1 -1
- package/src/taskModule/taskModuleResponse.ts +1 -1
- package/src/taskModule/taskModuleResponseBase.ts +1 -1
- package/src/taskModule/taskModuleTaskInfo.ts +1 -1
- package/src/teamsAgentExtension.ts +70 -153
- package/src/teamsAttachmentDownloader.ts +16 -2
- package/src/teamsInfo.ts +1 -1
|
@@ -4,23 +4,14 @@ import { AgentApplication, AgentExtension, RouteHandler, RouteSelector, TurnCont
|
|
|
4
4
|
import { parseTeamsChannelData } from './activity-extensions/teamsChannelDataParser'
|
|
5
5
|
import { MessageExtension } from './messageExtension/messageExtension'
|
|
6
6
|
import { TaskModule } from './taskModule/taskModule'
|
|
7
|
+
import { FeedbackLoopData } from './feedbackLoopData'
|
|
7
8
|
|
|
8
|
-
/**
|
|
9
|
-
* Microsoft Teams-specific extension for agent applications that provides event handlers and functionality
|
|
10
|
-
* for Teams-specific activities such as message operations, member management, channel operations, and team lifecycle events.
|
|
11
|
-
* @template TState The type of turn state, extending TurnState
|
|
12
|
-
*/
|
|
13
9
|
export class TeamsAgentExtension<TState extends TurnState = TurnState> extends AgentExtension<TState> {
|
|
14
|
-
_app: AgentApplication<TState>
|
|
15
|
-
_meeting: Meeting<TState>
|
|
16
|
-
_messageExtension: MessageExtension<TState>
|
|
17
|
-
_taskModule: TaskModule<TState>
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Creates a new instance of TeamsAgentExtension.
|
|
21
|
-
* @param app The agent application instance to extend with Teams functionality
|
|
22
|
-
*/
|
|
23
|
-
constructor (private app: AgentApplication<TState>) {
|
|
10
|
+
private _app: AgentApplication<TState>
|
|
11
|
+
private _meeting: Meeting<TState>
|
|
12
|
+
private _messageExtension: MessageExtension<TState>
|
|
13
|
+
private _taskModule: TaskModule<TState>
|
|
14
|
+
constructor (app: AgentApplication<TState>) {
|
|
24
15
|
super('msteams')
|
|
25
16
|
this._app = app
|
|
26
17
|
this._meeting = new Meeting(app)
|
|
@@ -28,36 +19,32 @@ export class TeamsAgentExtension<TState extends TurnState = TurnState> extends A
|
|
|
28
19
|
this._taskModule = new TaskModule(app)
|
|
29
20
|
}
|
|
30
21
|
|
|
31
|
-
/**
|
|
32
|
-
* Gets the meeting functionality for handling Teams meeting-related activities.
|
|
33
|
-
* @returns The Meeting instance for this extension
|
|
34
|
-
*/
|
|
35
22
|
public get meeting (): Meeting<TState> {
|
|
36
23
|
return this._meeting
|
|
37
24
|
}
|
|
38
25
|
|
|
39
|
-
/**
|
|
40
|
-
* Gets the message extension functionality for handling Teams message extension activities.
|
|
41
|
-
* @returns The MessageExtension instance for this extension
|
|
42
|
-
*/
|
|
43
26
|
public get messageExtension (): MessageExtension<TState> {
|
|
44
27
|
return this._messageExtension
|
|
45
28
|
}
|
|
46
29
|
|
|
47
|
-
/**
|
|
48
|
-
* Gets the task module functionality for handling Teams task module activities.
|
|
49
|
-
* @returns The TaskModule instance for this extension
|
|
50
|
-
*/
|
|
51
30
|
public get taskModule (): TaskModule<TState> {
|
|
52
31
|
return this._taskModule
|
|
53
32
|
}
|
|
54
33
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
34
|
+
onFeedback (handler: RouteHandler<TurnState>) {
|
|
35
|
+
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
36
|
+
return Promise.resolve(
|
|
37
|
+
context.activity.type === ActivityTypes.Invoke &&
|
|
38
|
+
context.activity.channelId === 'msteams' &&
|
|
39
|
+
context.activity.name === 'message/submitAction' &&
|
|
40
|
+
(context.activity.value as FeedbackLoopData).actionName === 'feedback'
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
this._app.addRoute(routeSel, handler, true) // Invoke requires true
|
|
44
|
+
return this
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
onMessageEdit (handler: RouteHandler<TurnState>) {
|
|
61
48
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
62
49
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
63
50
|
return Promise.resolve(!!(context.activity.type === ActivityTypes.MessageUpdate && channelData?.eventType === 'editMessage'))
|
|
@@ -66,12 +53,7 @@ export class TeamsAgentExtension<TState extends TurnState = TurnState> extends A
|
|
|
66
53
|
return this
|
|
67
54
|
}
|
|
68
55
|
|
|
69
|
-
|
|
70
|
-
* Registers a handler for message delete events in Teams.
|
|
71
|
-
* @param handler The route handler to execute when a message is deleted
|
|
72
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
73
|
-
*/
|
|
74
|
-
onMessageDelete = (handler: RouteHandler<TurnState>) => {
|
|
56
|
+
onMessageDelete (handler: RouteHandler<TurnState>) {
|
|
75
57
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
76
58
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
77
59
|
return Promise.resolve(context.activity.type === ActivityTypes.MessageDelete && channelData && channelData.eventType === 'softDeleteMessage')
|
|
@@ -80,12 +62,7 @@ export class TeamsAgentExtension<TState extends TurnState = TurnState> extends A
|
|
|
80
62
|
return this
|
|
81
63
|
}
|
|
82
64
|
|
|
83
|
-
|
|
84
|
-
* Registers a handler for message undelete events in Teams.
|
|
85
|
-
* @param handler The route handler to execute when a message is undeleted
|
|
86
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
87
|
-
*/
|
|
88
|
-
onMessageUndelete = (handler: RouteHandler<TurnState>) => {
|
|
65
|
+
onMessageUndelete (handler: RouteHandler<TurnState>) {
|
|
89
66
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
90
67
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
91
68
|
return Promise.resolve(context.activity.type === ActivityTypes.MessageUpdate && channelData && channelData.eventType === 'undeleteMessage')
|
|
@@ -94,203 +71,143 @@ export class TeamsAgentExtension<TState extends TurnState = TurnState> extends A
|
|
|
94
71
|
return this
|
|
95
72
|
}
|
|
96
73
|
|
|
97
|
-
|
|
98
|
-
* Registers a handler for when members are added to a Teams conversation.
|
|
99
|
-
* @param handler The route handler to execute when members are added
|
|
100
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
101
|
-
*/
|
|
102
|
-
onTeamsMembersAdded = (handler: RouteHandler<TurnState>) => {
|
|
74
|
+
onTeamsMembersAdded (handler: RouteHandler<TurnState>) {
|
|
103
75
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
104
76
|
return Promise.resolve(!!(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
77
|
+
context.activity.channelId === 'msteams' &&
|
|
78
|
+
context.activity.membersAdded &&
|
|
79
|
+
context.activity.membersAdded.length > 0))
|
|
108
80
|
}
|
|
109
81
|
this.addRoute(this._app, routeSel, handler, false)
|
|
110
82
|
return this
|
|
111
83
|
}
|
|
112
84
|
|
|
113
|
-
|
|
114
|
-
* Registers a handler for when members are removed from a Teams conversation.
|
|
115
|
-
* @param handler The route handler to execute when members are removed
|
|
116
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
117
|
-
*/
|
|
118
|
-
onTeamsMembersRemoved = (handler: RouteHandler<TurnState>) => {
|
|
85
|
+
onTeamsMembersRemoved (handler: RouteHandler<TurnState>) {
|
|
119
86
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
120
87
|
return Promise.resolve(!!(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
88
|
+
context.activity.channelId === 'msteams' &&
|
|
89
|
+
context.activity.membersRemoved &&
|
|
90
|
+
context.activity.membersRemoved.length > 0))
|
|
124
91
|
}
|
|
125
92
|
this.addRoute(this._app, routeSel, handler, false)
|
|
126
93
|
return this
|
|
127
94
|
}
|
|
128
95
|
|
|
129
|
-
|
|
130
|
-
* Registers a handler for when a Teams channel is created.
|
|
131
|
-
* @param handler The route handler to execute when a channel is created
|
|
132
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
133
|
-
*/
|
|
134
|
-
onTeamsChannelCreated = (handler: RouteHandler<TurnState>) => {
|
|
96
|
+
onTeamsChannelCreated (handler: RouteHandler<TurnState>) {
|
|
135
97
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
136
98
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
137
99
|
return Promise.resolve(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
100
|
+
context.activity.channelId === 'msteams' &&
|
|
101
|
+
channelData &&
|
|
102
|
+
channelData.eventType === 'channelCreated')
|
|
141
103
|
}
|
|
142
104
|
this.addRoute(this._app, routeSel, handler, false)
|
|
143
105
|
return this
|
|
144
106
|
}
|
|
145
107
|
|
|
146
|
-
|
|
147
|
-
* Registers a handler for when a Teams channel is deleted.
|
|
148
|
-
* @param handler The route handler to execute when a channel is deleted
|
|
149
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
150
|
-
*/
|
|
151
|
-
onTeamsChannelDeleted = (handler: RouteHandler<TurnState>) => {
|
|
108
|
+
onTeamsChannelDeleted (handler: RouteHandler<TurnState>) {
|
|
152
109
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
153
110
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
154
111
|
return Promise.resolve(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
112
|
+
context.activity.channelId === 'msteams' &&
|
|
113
|
+
channelData &&
|
|
114
|
+
channelData.eventType === 'channelDeleted')
|
|
158
115
|
}
|
|
159
116
|
this.addRoute(this._app, routeSel, handler, false)
|
|
160
117
|
return this
|
|
161
118
|
}
|
|
162
119
|
|
|
163
|
-
|
|
164
|
-
* Registers a handler for when a Teams channel is renamed.
|
|
165
|
-
* @param handler The route handler to execute when a channel is renamed
|
|
166
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
167
|
-
*/
|
|
168
|
-
onTeamsChannelRenamed = (handler: RouteHandler<TurnState>) => {
|
|
120
|
+
onTeamsChannelRenamed (handler: RouteHandler<TurnState>) {
|
|
169
121
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
170
122
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
171
123
|
return Promise.resolve(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
124
|
+
context.activity.channelId === 'msteams' &&
|
|
125
|
+
channelData &&
|
|
126
|
+
channelData.eventType === 'channelRenamed')
|
|
175
127
|
}
|
|
176
128
|
this.addRoute(this._app, routeSel, handler, false)
|
|
177
129
|
return this
|
|
178
130
|
}
|
|
179
131
|
|
|
180
|
-
|
|
181
|
-
* Registers a handler for when a Teams channel is restored.
|
|
182
|
-
* @param handler The route handler to execute when a channel is restored
|
|
183
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
184
|
-
*/
|
|
185
|
-
onTeamsChannelRestored = (handler: RouteHandler<TurnState>) => {
|
|
132
|
+
onTeamsChannelRestored (handler: RouteHandler<TurnState>) {
|
|
186
133
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
187
134
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
188
135
|
return Promise.resolve(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
136
|
+
context.activity.channelId === 'msteams' &&
|
|
137
|
+
channelData &&
|
|
138
|
+
channelData.eventType === 'channelRestored')
|
|
192
139
|
}
|
|
193
140
|
this.addRoute(this._app, routeSel, handler, false)
|
|
194
141
|
return this
|
|
195
142
|
}
|
|
196
143
|
|
|
197
|
-
|
|
198
|
-
* Registers a handler for when a Teams team is renamed.
|
|
199
|
-
* @param handler The route handler to execute when a team is renamed
|
|
200
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
201
|
-
*/
|
|
202
|
-
onTeamsTeamRenamed = (handler: RouteHandler<TurnState>) => {
|
|
144
|
+
onTeamsTeamRenamed (handler: RouteHandler<TurnState>) {
|
|
203
145
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
204
146
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
205
147
|
return Promise.resolve(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
148
|
+
context.activity.channelId === 'msteams' &&
|
|
149
|
+
channelData &&
|
|
150
|
+
channelData.eventType === 'teamRenamed')
|
|
209
151
|
}
|
|
210
152
|
this.addRoute(this._app, routeSel, handler, false)
|
|
211
153
|
return this
|
|
212
154
|
}
|
|
213
155
|
|
|
214
|
-
|
|
215
|
-
* Registers a handler for when a Teams team is archived.
|
|
216
|
-
* @param handler The route handler to execute when a team is archived
|
|
217
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
218
|
-
*/
|
|
219
|
-
onTeamsTeamArchived = (handler: RouteHandler<TurnState>) => {
|
|
156
|
+
onTeamsTeamArchived (handler: RouteHandler<TurnState>) {
|
|
220
157
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
221
158
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
222
159
|
return Promise.resolve(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
160
|
+
context.activity.channelId === 'msteams' &&
|
|
161
|
+
channelData &&
|
|
162
|
+
channelData.eventType === 'teamArchived')
|
|
226
163
|
}
|
|
227
164
|
this.addRoute(this._app, routeSel, handler, false)
|
|
228
165
|
return this
|
|
229
166
|
}
|
|
230
167
|
|
|
231
|
-
|
|
232
|
-
* Registers a handler for when a Teams team is unarchived.
|
|
233
|
-
* @param handler The route handler to execute when a team is unarchived
|
|
234
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
235
|
-
*/
|
|
236
|
-
onTeamsTeamUnarchived = (handler: RouteHandler<TurnState>) => {
|
|
168
|
+
onTeamsTeamUnarchived (handler: RouteHandler<TurnState>) {
|
|
237
169
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
238
170
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
239
171
|
return Promise.resolve(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
172
|
+
context.activity.channelId === 'msteams' &&
|
|
173
|
+
channelData &&
|
|
174
|
+
channelData.eventType === 'teamUnarchived')
|
|
243
175
|
}
|
|
244
176
|
this.addRoute(this._app, routeSel, handler, false)
|
|
245
177
|
return this
|
|
246
178
|
}
|
|
247
179
|
|
|
248
|
-
|
|
249
|
-
* Registers a handler for when a Teams team is deleted (soft delete).
|
|
250
|
-
* @param handler The route handler to execute when a team is deleted
|
|
251
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
252
|
-
*/
|
|
253
|
-
onTeamsTeamDeleted = (handler: RouteHandler<TurnState>) => {
|
|
180
|
+
onTeamsTeamDeleted (handler: RouteHandler<TurnState>) {
|
|
254
181
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
255
182
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
256
183
|
return Promise.resolve(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
184
|
+
context.activity.channelId === 'msteams' &&
|
|
185
|
+
channelData &&
|
|
186
|
+
channelData.eventType === 'teamDeleted')
|
|
260
187
|
}
|
|
261
188
|
this.addRoute(this._app, routeSel, handler, false)
|
|
262
189
|
return this
|
|
263
190
|
}
|
|
264
191
|
|
|
265
|
-
|
|
266
|
-
* Registers a handler for when a Teams team is hard deleted (permanently deleted).
|
|
267
|
-
* @param handler The route handler to execute when a team is hard deleted
|
|
268
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
269
|
-
*/
|
|
270
|
-
onTeamsTeamHardDeleted = (handler: RouteHandler<TurnState>) => {
|
|
192
|
+
onTeamsTeamHardDeleted (handler: RouteHandler<TurnState>) {
|
|
271
193
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
272
194
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
273
195
|
return Promise.resolve(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
196
|
+
context.activity.channelId === 'msteams' &&
|
|
197
|
+
channelData &&
|
|
198
|
+
channelData.eventType === 'teamHardDeleted')
|
|
277
199
|
}
|
|
278
200
|
this.addRoute(this._app, routeSel, handler, false)
|
|
279
201
|
return this
|
|
280
202
|
}
|
|
281
203
|
|
|
282
|
-
|
|
283
|
-
* Registers a handler for when a Teams team is restored.
|
|
284
|
-
* @param handler The route handler to execute when a team is restored
|
|
285
|
-
* @returns This TeamsAgentExtension instance for method chaining
|
|
286
|
-
*/
|
|
287
|
-
onTeamsTeamRestored = (handler: RouteHandler<TurnState>) => {
|
|
204
|
+
onTeamsTeamRestored (handler: RouteHandler<TurnState>) {
|
|
288
205
|
const routeSel: RouteSelector = (context: TurnContext) => {
|
|
289
206
|
const channelData = parseTeamsChannelData(context.activity.channelData)
|
|
290
207
|
return Promise.resolve(context.activity.type === ActivityTypes.ConversationUpdate &&
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
208
|
+
context.activity.channelId === 'msteams' &&
|
|
209
|
+
channelData &&
|
|
210
|
+
channelData.eventType === 'teamRestored')
|
|
294
211
|
}
|
|
295
212
|
this.addRoute(this._app, routeSel, handler, false)
|
|
296
213
|
return this
|
|
@@ -12,8 +12,10 @@ import { z } from 'zod'
|
|
|
12
12
|
*/
|
|
13
13
|
export class TeamsAttachmentDownloader<TState extends TurnState = TurnState> implements InputFileDownloader<TState> {
|
|
14
14
|
private _httpClient: AxiosInstance
|
|
15
|
-
|
|
15
|
+
private _stateKey: string
|
|
16
|
+
public constructor (stateKey: string = 'inputFiles') {
|
|
16
17
|
this._httpClient = axios.create()
|
|
18
|
+
this._stateKey = stateKey
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
/**
|
|
@@ -23,7 +25,7 @@ export class TeamsAttachmentDownloader<TState extends TurnState = TurnState> imp
|
|
|
23
25
|
* @param {TState} state Application state for the current turn of conversation.
|
|
24
26
|
* @returns {Promise<InputFile[]>} Promise that resolves to an array of downloaded input files.
|
|
25
27
|
*/
|
|
26
|
-
public async downloadFiles (context: TurnContext
|
|
28
|
+
public async downloadFiles (context: TurnContext): Promise<InputFile[]> {
|
|
27
29
|
// Filter out HTML attachments
|
|
28
30
|
const attachments = context.activity.attachments?.filter((a) => !a.contentType.startsWith('text/html'))
|
|
29
31
|
if (!attachments || attachments.length === 0) {
|
|
@@ -75,4 +77,16 @@ export class TeamsAttachmentDownloader<TState extends TurnState = TurnState> imp
|
|
|
75
77
|
}
|
|
76
78
|
return inputFile
|
|
77
79
|
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Downloads files from the attachments in the current turn context and stores them in state.
|
|
83
|
+
*
|
|
84
|
+
* @param context The turn context containing the activity with attachments.
|
|
85
|
+
* @param state The turn state to store the files in.
|
|
86
|
+
* @returns A promise that resolves when the downloaded files are stored.
|
|
87
|
+
*/
|
|
88
|
+
public async downloadAndStoreFiles (context: TurnContext, state: TState): Promise<void> {
|
|
89
|
+
const files = await this.downloadFiles(context)
|
|
90
|
+
state.setValue(this._stateKey, files)
|
|
91
|
+
}
|
|
78
92
|
}
|
package/src/teamsInfo.ts
CHANGED
|
@@ -156,7 +156,7 @@ export class TeamsInfo {
|
|
|
156
156
|
// context.activity.serviceUrl
|
|
157
157
|
// )
|
|
158
158
|
const connectorClient : ConnectorClient = context.turnState.get<ConnectorClient>('connectorClient')
|
|
159
|
-
const conversationResourceResponse = await connectorClient.
|
|
159
|
+
const conversationResourceResponse = await connectorClient.createConversation(convoParams)
|
|
160
160
|
conversationReference = context.activity.getConversationReference()
|
|
161
161
|
conversationReference.conversation!.id = conversationResourceResponse.id
|
|
162
162
|
newActivityId = conversationResourceResponse.activityId
|