@microsoft/teams.apps 2.0.4 → 2.0.6-preview.1
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/app.d.ts +47 -17
- package/dist/app.events.d.ts +1 -2
- package/dist/app.events.js +1 -6
- package/dist/app.js +18 -6
- package/dist/app.plugins.js +2 -2
- package/dist/app.process.d.ts +2 -3
- package/dist/app.process.js +32 -28
- package/dist/contexts/activity.js +10 -2
- package/dist/contexts/activity.test.js +45 -1
- package/dist/plugins/http/plugin.d.ts +39 -19
- package/dist/plugins/http/plugin.js +11 -30
- package/dist/plugins/http/stream.d.ts +76 -13
- package/dist/plugins/http/stream.js +60 -8
- package/dist/routes/invoke/index.d.ts +1 -0
- package/dist/routes/invoke/index.js +2 -1
- package/dist/utils/promises/retry.d.ts +1 -1
- package/dist/utils/promises/retry.js +1 -1
- package/package.json +6 -6
|
@@ -150,6 +150,50 @@ describe('ActivityContext', () => {
|
|
|
150
150
|
type: 'message',
|
|
151
151
|
}), mockRef);
|
|
152
152
|
});
|
|
153
|
+
describe('targeted messages', () => {
|
|
154
|
+
it('sends targeted message with recipient from incoming activity', async () => {
|
|
155
|
+
const activity = buildIncomingMessageActivity('Hello world');
|
|
156
|
+
context = buildActivityContext(activity);
|
|
157
|
+
const targetedActivity = new teams_api_1.MessageActivity('Secret message')
|
|
158
|
+
.withTargetedRecipient(true);
|
|
159
|
+
await context.send(targetedActivity);
|
|
160
|
+
expect(mockSender.send).toHaveBeenCalledTimes(1);
|
|
161
|
+
expect(mockSender.send).toHaveBeenCalledWith(expect.objectContaining({
|
|
162
|
+
text: 'Secret message',
|
|
163
|
+
type: 'message',
|
|
164
|
+
isTargeted: true,
|
|
165
|
+
recipient: { id: 'test-user', name: 'Test User', role: 'user' },
|
|
166
|
+
}), mockRef);
|
|
167
|
+
});
|
|
168
|
+
it('sends targeted message with explicit recipient id', async () => {
|
|
169
|
+
const activity = buildIncomingMessageActivity('Hello world');
|
|
170
|
+
context = buildActivityContext(activity);
|
|
171
|
+
const targetedActivity = new teams_api_1.MessageActivity('Secret message')
|
|
172
|
+
.withTargetedRecipient('explicit-user-id');
|
|
173
|
+
await context.send(targetedActivity);
|
|
174
|
+
expect(mockSender.send).toHaveBeenCalledTimes(1);
|
|
175
|
+
expect(mockSender.send).toHaveBeenCalledWith(expect.objectContaining({
|
|
176
|
+
text: 'Secret message',
|
|
177
|
+
type: 'message',
|
|
178
|
+
isTargeted: true,
|
|
179
|
+
recipient: { id: 'explicit-user-id', name: '', role: 'user' },
|
|
180
|
+
}), mockRef);
|
|
181
|
+
});
|
|
182
|
+
it('does not set recipient for targeted message updates', async () => {
|
|
183
|
+
const activity = buildIncomingMessageActivity('Hello world');
|
|
184
|
+
context = buildActivityContext(activity);
|
|
185
|
+
const updateActivity = new teams_api_1.MessageActivity('Updated message')
|
|
186
|
+
.withTargetedRecipient(true)
|
|
187
|
+
.withId('existing-activity-id');
|
|
188
|
+
await context.send(updateActivity);
|
|
189
|
+
expect(mockSender.send).toHaveBeenCalledTimes(1);
|
|
190
|
+
const sentActivity = mockSender.send.mock.calls[0][0];
|
|
191
|
+
expect(sentActivity.id).toBe('existing-activity-id');
|
|
192
|
+
expect(sentActivity.isTargeted).toBe(true);
|
|
193
|
+
// Recipient should NOT be set for updates
|
|
194
|
+
expect(sentActivity.recipient).toBeUndefined();
|
|
195
|
+
});
|
|
196
|
+
});
|
|
153
197
|
});
|
|
154
198
|
describe('signin/signout flow', () => {
|
|
155
199
|
beforeEach(() => {
|
|
@@ -248,4 +292,4 @@ describe('ActivityContext', () => {
|
|
|
248
292
|
});
|
|
249
293
|
});
|
|
250
294
|
});
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0cy9hY3Rpdml0eS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsb0RBTzhCO0FBTzlCLHlDQUE2QztBQUU3QyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLElBQUksVUFBbUIsQ0FBQztJQUN4QixJQUFJLGFBQXNDLENBQUM7SUFDM0MsSUFBSSxVQUFtQixDQUFDO0lBQ3hCLElBQUksV0FBbUMsQ0FBQztJQUN4QyxJQUFJLE9BQThCLENBQUM7SUFDbkMsSUFBSSxPQUF3QixDQUFDO0lBRTdCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxVQUFVLEdBQUc7WUFDWCxZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUM3RCxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtTQUNoQixDQUFDO1FBRUYsYUFBYSxHQUFHO1lBQ2QsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRTtvQkFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtvQkFDZCxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtpQkFDbkI7YUFDRjtZQUNELGFBQWEsRUFBRTtnQkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTthQUNsQjtZQUNELElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUU7b0JBQ04sV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7aUJBQ3ZCO2FBQ0Y7U0FDb0MsQ0FBQztRQUV4QyxXQUFXLEdBQUcsRUFBNEIsQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRztZQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNoQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUs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
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0cy9hY3Rpdml0eS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsb0RBTzhCO0FBTzlCLHlDQUE2QztBQUU3QyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLElBQUksVUFBbUIsQ0FBQztJQUN4QixJQUFJLGFBQXNDLENBQUM7SUFDM0MsSUFBSSxVQUFtQixDQUFDO0lBQ3hCLElBQUksV0FBbUMsQ0FBQztJQUN4QyxJQUFJLE9BQThCLENBQUM7SUFDbkMsSUFBSSxPQUF3QixDQUFDO0lBRTdCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxVQUFVLEdBQUc7WUFDWCxZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUM3RCxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtTQUNoQixDQUFDO1FBRUYsYUFBYSxHQUFHO1lBQ2QsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRTtvQkFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtvQkFDZCxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtpQkFDbkI7YUFDRjtZQUNELGFBQWEsRUFBRTtnQkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTthQUNsQjtZQUNELElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUU7b0JBQ04sV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7aUJBQ3ZCO2FBQ0Y7U0FDb0MsQ0FBQztRQUV4QyxXQUFXLEdBQUcsRUFBNEIsQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRztZQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNoQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDaEIsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7U0FDZixDQUFDO1FBQ0YsVUFBVSxHQUFHO1lBQ1gsR0FBRyxhQUFhO1lBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQztTQUNoRCxDQUFDO1FBRUYsT0FBTyxHQUFHO1lBQ1IsVUFBVSxFQUFFLGtCQUFrQjtZQUM5QixTQUFTLEVBQUUsY0FBYztZQUN6QixZQUFZLEVBQUU7Z0JBQ1osRUFBRSxFQUFFLG1CQUFtQjtnQkFDdkIsZ0JBQWdCLEVBQUUsU0FBUztnQkFDM0IsT0FBTyxFQUFFLEtBQUs7YUFDZjtZQUNELFVBQVUsRUFBRSxrQkFBa0I7WUFDOUIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDMUQsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7U0FDaEQsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSw0QkFBNEIsR0FBRyxDQUNuQyxJQUFZLEVBQ1osRUFBVyxFQUNPLEVBQUU7UUFDcEIsT0FBTyxJQUFJLDJCQUFlLENBQUMsSUFBSSxDQUFDO2FBQzdCLFFBQVEsQ0FBQztZQUNSLEVBQUUsRUFBRSxXQUFXO1lBQ2YsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDO2FBQ0QsYUFBYSxDQUFDO1lBQ2IsRUFBRSxFQUFFLFFBQVE7WUFDWixJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxLQUFLO1NBQ1osQ0FBQzthQUNELGFBQWEsQ0FBQyxjQUFjLENBQUM7YUFDN0IsZ0JBQWdCLENBQUM7WUFDaEIsRUFBRSxFQUFFLG1CQUFtQjtZQUN2QixnQkFBZ0IsRUFBRSxTQUFTO1lBQzNCLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQzthQUNELE1BQU0sQ0FBQyxFQUFFLElBQUksa0JBQWtCLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUM7SUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsUUFBa0IsRUFBbUIsRUFBRTtRQUNuRSxPQUFPLElBQUksMEJBQWUsQ0FBQyxVQUFVLEVBQUU7WUFDckMsS0FBSyxFQUFFLFVBQVU7WUFDakIsUUFBUTtZQUNSLEdBQUcsRUFBRSxPQUFPO1lBQ1osR0FBRyxFQUFFLFVBQVU7WUFDZixHQUFHLEVBQUUsYUFBYTtZQUNsQixRQUFRLEVBQUUsRUFBaUI7WUFDM0IsU0FBUyxFQUFFLEVBQWlCO1lBQzVCLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLGNBQWMsRUFBRSxpQkFBaUI7WUFDakMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUYsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDckIsRUFBRSxDQUFDLDJEQUEyRCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3pFLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTdELE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV6QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFbkMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixDQUMxQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3RCLElBQUksRUFBRTs7OzZCQUdhO2dCQUNuQixJQUFJLEVBQUUsU0FBUzthQUNoQixDQUFDLEVBQ0YsT0FBTyxDQUNSLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywyREFBMkQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN6RSxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXhELE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV6QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFbkMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixDQUMxQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3RCLElBQUksRUFBRTs7d0JBRVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7NkJBQ1Y7Z0JBQ25CLElBQUksRUFBRSxTQUFTO2FBQ2hCLENBQUMsRUFDRixPQUFPLENBQ1IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2xFLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWxELE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV6QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFbkMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixDQUMxQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3RCLElBQUksRUFBRSxhQUFhO2dCQUNuQixJQUFJLEVBQUUsU0FBUzthQUNoQixDQUFDLEVBQ0YsT0FBTyxDQUNSLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMzRCxNQUFNLFFBQVEsR0FBRyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRWxFLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV6QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFeEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixDQUMxQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3RCLElBQUksRUFBRSxFQUFFO2dCQUNSLElBQUksRUFBRSxTQUFTO2FBQ2hCLENBQUMsRUFDRixPQUFPLENBQ1IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtRQUNwQixFQUFFLENBQUMseUNBQXlDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDdkQsTUFBTSxRQUFRLEdBQUcsNEJBQTRCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0QsT0FBTyxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUVsQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLENBQzFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDdEIsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLElBQUksRUFBRSxTQUFTO2FBQ2hCLENBQUMsRUFDRixPQUFPLENBQ1IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtZQUNqQyxFQUFFLENBQUMsOERBQThELEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQzVFLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUM3RCxPQUFPLEdBQUcsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRXpDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSwyQkFBZSxDQUFDLGdCQUFnQixDQUFDO3FCQUMzRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFL0IsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBRXJDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLENBQzFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDdEIsSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2lCQUNoRSxDQUFDLEVBQ0YsT0FBTyxDQUNSLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDakUsTUFBTSxRQUFRLEdBQUcsNEJBQTRCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzdELE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFekMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLDJCQUFlLENBQUMsZ0JBQWdCLENBQUM7cUJBQzNELHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBRTdDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUVyQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixDQUMxQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7b0JBQ3RCLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLElBQUksRUFBRSxTQUFTO29CQUNmLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2lCQUM5RCxDQUFDLEVBQ0YsT0FBTyxDQUNSLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyxxREFBcUQsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDbkUsTUFBTSxRQUFRLEdBQUcsNEJBQTRCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzdELE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFekMsTUFBTSxjQUFjLEdBQUcsSUFBSSwyQkFBZSxDQUFDLGlCQUFpQixDQUFDO3FCQUMxRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7cUJBQzNCLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2dCQUVsQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBRW5DLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sWUFBWSxHQUFJLFVBQVUsQ0FBQyxJQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JFLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBQ3JELE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQywwQ0FBMEM7Z0JBQzFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDakQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtRQUNuQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsT0FBTyxHQUFHLG9CQUFvQixDQUM1Qiw0QkFBNEIsQ0FBQyxjQUFjLENBQUMsQ0FDN0MsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHFDQUFxQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ25ELE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQztZQUNuQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxhQUFhO2dCQUNwQixjQUFjLEVBQUUsaUJBQWlCO2dCQUNqQyxTQUFTLEVBQUUsY0FBYztnQkFDekIsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTthQUN2RSxDQUFDLENBQUM7WUFFSCxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUV0QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDekQsU0FBUyxFQUFFLGNBQWM7Z0JBQ3pCLE1BQU0sRUFBRSxXQUFXO2dCQUNuQixjQUFjLEVBQUUsaUJBQWlCO2FBQ2xDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzdELGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FDakQsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQ3RCLENBQUM7WUFDRixNQUFNLFlBQVksR0FBRztnQkFDbkIscUJBQXFCLEVBQUU7b0JBQ3JCLEdBQUcsRUFBRSxnQ0FBZ0M7aUJBQ2I7Z0JBQzFCLGlCQUFpQixFQUFFO29CQUNqQixNQUFNLEVBQUUsZ0NBQWdDO2lCQUNwQjtnQkFDdEIsVUFBVSxFQUFFLG1CQUFtQjthQUNoQyxDQUFDO1lBQ0YsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTFFLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRXZCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLENBQzFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDdEIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsV0FBVyxFQUFFO29CQUNYO3dCQUNFLE9BQU8sRUFBRTs0QkFDUCxPQUFPLEVBQUU7Z0NBQ1A7b0NBQ0UsS0FBSyxFQUFFLFNBQVM7b0NBQ2hCLElBQUksRUFBRSxRQUFRO29DQUNkLEtBQUssRUFBRSxtQkFBbUI7aUNBQzNCOzZCQUNGOzRCQUNELGNBQWMsRUFBRSxpQkFBaUI7NEJBQ2pDLElBQUksRUFBRSxtQkFBbUI7NEJBQ3pCLHFCQUFxQixFQUFFO2dDQUNyQixHQUFHLEVBQUUsZ0NBQWdDOzZCQUN0Qzs0QkFDRCxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsRUFBRTt5QkFDaEU7d0JBQ0QsV0FBVyxFQUFFLHNDQUFzQztxQkFDcEQ7aUJBQ0Y7Z0JBQ0QsU0FBUyxFQUFFLGdCQUFnQjtnQkFDM0IsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7YUFDaEUsQ0FBQyxFQUNGLE9BQU8sQ0FDUixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0RBQW9ELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDbEUsT0FBTyxHQUFHLElBQUksMEJBQWUsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3hDLEdBQUcsT0FBTztnQkFDVixRQUFRLEVBQUU7b0JBQ1IsR0FBRyw0QkFBNEIsQ0FBQyxjQUFjLENBQUM7b0JBQy9DLFlBQVksRUFBRTt3QkFDWixFQUFFLEVBQUUsWUFBWTt3QkFDaEIsT0FBTyxFQUFFLElBQUk7d0JBQ2IsZ0JBQWdCLEVBQUUsT0FBTztxQkFDMUI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFFSCxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQ2pELElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUN0QixDQUFDO1lBQ0YsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUM7Z0JBQ3ZELEVBQUUsRUFBRSxhQUFhO2dCQUNqQixVQUFVLEVBQUUsaUJBQWlCO2dCQUM3QixVQUFVLEVBQUUsRUFBRTthQUNmLENBQUMsQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHO2dCQUNuQixxQkFBcUIsRUFBRSxFQUEyQjtnQkFDbEQsaUJBQWlCLEVBQUUsRUFBdUI7Z0JBQzFDLFVBQVUsRUFBRSxtQkFBbUI7YUFDaEMsQ0FBQztZQUNGLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUUxRSxNQUFNLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUV2QixNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzlELE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLENBQzFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLENBQUMsRUFDdkUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FDbkIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3RELE1BQU0sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRXhCLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDN0QsU0FBUyxFQUFFLGNBQWM7Z0JBQ3pCLE1BQU0sRUFBRSxXQUFXO2dCQUNuQixjQUFjLEVBQUUsaUJBQWlCO2FBQ2xDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import http from 'http';
|
|
2
2
|
import express from 'express';
|
|
3
|
-
import { ActivityParams, ConversationReference, Credentials, IToken } from '@microsoft/teams.api';
|
|
3
|
+
import { ActivityParams, ConversationReference, Credentials, InvokeResponse, IToken } from '@microsoft/teams.api';
|
|
4
4
|
import { ILogger } from '@microsoft/teams.common';
|
|
5
5
|
import * as $http from '@microsoft/teams.common/http';
|
|
6
6
|
import { IActivityEvent, IErrorEvent } from '../../events';
|
|
7
7
|
import { Manifest } from '../../manifest';
|
|
8
8
|
import { JwtValidatedRequest } from '../../middleware/jwt-validation-middleware';
|
|
9
|
-
import {
|
|
9
|
+
import { IPluginStartEvent, ISender, IStreamer } from '../../types';
|
|
10
10
|
/**
|
|
11
11
|
* Can send/receive activities via http
|
|
12
12
|
*/
|
|
@@ -17,7 +17,7 @@ export declare class HttpPlugin implements ISender {
|
|
|
17
17
|
readonly credentials?: Credentials;
|
|
18
18
|
readonly botToken?: () => IToken;
|
|
19
19
|
readonly $onError: (event: IErrorEvent) => void;
|
|
20
|
-
readonly $onActivity: (event: IActivityEvent) =>
|
|
20
|
+
readonly $onActivity: (event: IActivityEvent) => Promise<InvokeResponse>;
|
|
21
21
|
readonly get: express.Application['get'];
|
|
22
22
|
readonly post: express.Application['post'];
|
|
23
23
|
readonly patch: express.Application['patch'];
|
|
@@ -30,7 +30,6 @@ export declare class HttpPlugin implements ISender {
|
|
|
30
30
|
get port(): string | number | undefined;
|
|
31
31
|
protected _port?: number | string;
|
|
32
32
|
protected express: express.Application;
|
|
33
|
-
protected pending: Record<string, express.Response>;
|
|
34
33
|
protected skipAuth: boolean;
|
|
35
34
|
constructor(server?: http.Server, options?: {
|
|
36
35
|
skipAuth?: boolean;
|
|
@@ -44,8 +43,6 @@ export declare class HttpPlugin implements ISender {
|
|
|
44
43
|
onInit(): void;
|
|
45
44
|
onStart({ port }: IPluginStartEvent): Promise<void>;
|
|
46
45
|
onStop(): void;
|
|
47
|
-
onError({ error, activity }: IPluginErrorEvent): void;
|
|
48
|
-
onActivityResponse({ response, activity }: IPluginActivityResponseEvent): void;
|
|
49
46
|
send(activity: ActivityParams, ref: ConversationReference): Promise<{
|
|
50
47
|
id: string;
|
|
51
48
|
type: "message";
|
|
@@ -61,6 +58,7 @@ export declare class HttpPlugin implements ISender {
|
|
|
61
58
|
deliveryMode?: import("@microsoft/teams.api").DeliveryMode | undefined;
|
|
62
59
|
expiration?: Date | undefined;
|
|
63
60
|
value?: any;
|
|
61
|
+
isTargeted?: boolean | undefined;
|
|
64
62
|
stripMentionsText?: ((options?: import("@microsoft/teams.api").StripMentionsTextOptions) => import("@microsoft/teams.api").IMessageActivity) | undefined;
|
|
65
63
|
isRecipientMentioned?: (() => boolean) | undefined;
|
|
66
64
|
getAccountMention?: ((accountId: string) => import("@microsoft/teams.api").MentionEntity | undefined) | undefined;
|
|
@@ -178,11 +176,11 @@ export declare class HttpPlugin implements ISender {
|
|
|
178
176
|
type: "event";
|
|
179
177
|
name?: "application/vnd.microsoft.meetingStart" | undefined;
|
|
180
178
|
value?: {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
179
|
+
Id: string;
|
|
180
|
+
MeetingType: string;
|
|
181
|
+
JoinUrl: string;
|
|
182
|
+
Title: string;
|
|
183
|
+
StartTime: Date;
|
|
186
184
|
} | undefined;
|
|
187
185
|
serviceUrl?: string | undefined;
|
|
188
186
|
timestamp?: Date | undefined;
|
|
@@ -206,11 +204,11 @@ export declare class HttpPlugin implements ISender {
|
|
|
206
204
|
type: "event";
|
|
207
205
|
name?: "application/vnd.microsoft.meetingEnd" | undefined;
|
|
208
206
|
value?: {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
207
|
+
Id: string;
|
|
208
|
+
MeetingType: string;
|
|
209
|
+
JoinUrl: string;
|
|
210
|
+
Title: string;
|
|
211
|
+
EndTime: Date;
|
|
214
212
|
} | undefined;
|
|
215
213
|
serviceUrl?: string | undefined;
|
|
216
214
|
timestamp?: Date | undefined;
|
|
@@ -235,7 +233,7 @@ export declare class HttpPlugin implements ISender {
|
|
|
235
233
|
name?: "application/vnd.microsoft.meetingParticipantJoin" | undefined;
|
|
236
234
|
value?: {
|
|
237
235
|
members: {
|
|
238
|
-
user: import("@microsoft/teams.api").
|
|
236
|
+
user: import("@microsoft/teams.api").TeamsChannelAccount;
|
|
239
237
|
meeting: {
|
|
240
238
|
inMeeting: boolean;
|
|
241
239
|
role: string;
|
|
@@ -265,10 +263,10 @@ export declare class HttpPlugin implements ISender {
|
|
|
265
263
|
name?: "application/vnd.microsoft.meetingParticipantLeave" | undefined;
|
|
266
264
|
value?: {
|
|
267
265
|
members: {
|
|
268
|
-
user: import("@microsoft/teams.api").
|
|
266
|
+
user: import("@microsoft/teams.api").TeamsChannelAccount;
|
|
269
267
|
meeting: {
|
|
270
268
|
inMeeting: boolean;
|
|
271
|
-
role
|
|
269
|
+
role?: string;
|
|
272
270
|
};
|
|
273
271
|
}[];
|
|
274
272
|
} | undefined;
|
|
@@ -759,6 +757,28 @@ export declare class HttpPlugin implements ISender {
|
|
|
759
757
|
meeting?: import("@microsoft/teams.api").MeetingInfo | undefined;
|
|
760
758
|
notification?: import("@microsoft/teams.api").NotificationInfo | undefined;
|
|
761
759
|
isStreaming?: (() => boolean) | undefined;
|
|
760
|
+
} | {
|
|
761
|
+
id: string;
|
|
762
|
+
type: "invoke";
|
|
763
|
+
name?: "signin/failure" | undefined;
|
|
764
|
+
value?: import("@microsoft/teams.api").SignInFailure | undefined;
|
|
765
|
+
serviceUrl?: string | undefined;
|
|
766
|
+
timestamp?: Date | undefined;
|
|
767
|
+
locale?: string | undefined;
|
|
768
|
+
localTimestamp?: Date | undefined;
|
|
769
|
+
channelId?: import("@microsoft/teams.api").ChannelID | undefined;
|
|
770
|
+
from?: import("@microsoft/teams.api").Account | undefined;
|
|
771
|
+
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
772
|
+
relatesTo?: ConversationReference | undefined;
|
|
773
|
+
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
774
|
+
replyToId?: string | undefined;
|
|
775
|
+
entities?: import("@microsoft/teams.api").Entity[] | undefined;
|
|
776
|
+
channelData?: import("@microsoft/teams.api").ChannelData | undefined;
|
|
777
|
+
channel?: import("@microsoft/teams.api").ChannelInfo | undefined;
|
|
778
|
+
team?: import("@microsoft/teams.api").TeamInfo | undefined;
|
|
779
|
+
meeting?: import("@microsoft/teams.api").MeetingInfo | undefined;
|
|
780
|
+
notification?: import("@microsoft/teams.api").NotificationInfo | undefined;
|
|
781
|
+
isStreaming?: (() => boolean) | undefined;
|
|
762
782
|
} | {
|
|
763
783
|
id: string;
|
|
764
784
|
type: "invoke";
|
|
@@ -82,7 +82,6 @@ let HttpPlugin = class HttpPlugin {
|
|
|
82
82
|
}
|
|
83
83
|
_port;
|
|
84
84
|
express;
|
|
85
|
-
pending = {};
|
|
86
85
|
skipAuth;
|
|
87
86
|
constructor(server, options) {
|
|
88
87
|
this.skipAuth = options?.skipAuth ?? false;
|
|
@@ -139,28 +138,6 @@ let HttpPlugin = class HttpPlugin {
|
|
|
139
138
|
onStop() {
|
|
140
139
|
this._server.close();
|
|
141
140
|
}
|
|
142
|
-
onError({ error, activity }) {
|
|
143
|
-
if (!activity)
|
|
144
|
-
return;
|
|
145
|
-
const res = this.pending[activity.id];
|
|
146
|
-
if (!res) {
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
if (!res.headersSent) {
|
|
150
|
-
res.status(500).send(error.message);
|
|
151
|
-
}
|
|
152
|
-
delete this.pending[activity.id];
|
|
153
|
-
}
|
|
154
|
-
onActivityResponse({ response, activity }) {
|
|
155
|
-
const res = this.pending[activity.id];
|
|
156
|
-
if (!res) {
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
if (!res.headersSent) {
|
|
160
|
-
res.status(response.status || 200).send(JSON.stringify(response.body));
|
|
161
|
-
}
|
|
162
|
-
delete this.pending[activity.id];
|
|
163
|
-
}
|
|
164
141
|
async send(activity, ref) {
|
|
165
142
|
const api = new teams_api_1.Client(ref.serviceUrl, this.client.clone({
|
|
166
143
|
token: this.botToken,
|
|
@@ -170,13 +147,17 @@ let HttpPlugin = class HttpPlugin {
|
|
|
170
147
|
from: ref.bot,
|
|
171
148
|
conversation: ref.conversation,
|
|
172
149
|
};
|
|
150
|
+
// Check if this is a targeted message
|
|
151
|
+
const isTargeted = 'isTargeted' in activity && activity.isTargeted === true;
|
|
173
152
|
if (activity.id) {
|
|
174
|
-
const res =
|
|
175
|
-
.activities(ref.conversation.id)
|
|
176
|
-
.update(activity.id, activity);
|
|
153
|
+
const res = isTargeted
|
|
154
|
+
? await api.conversations.activities(ref.conversation.id).updateTargeted(activity.id, activity)
|
|
155
|
+
: await api.conversations.activities(ref.conversation.id).update(activity.id, activity);
|
|
177
156
|
return { ...activity, ...res };
|
|
178
157
|
}
|
|
179
|
-
const res =
|
|
158
|
+
const res = isTargeted
|
|
159
|
+
? await api.conversations.activities(ref.conversation.id).createTargeted(activity)
|
|
160
|
+
: await api.conversations.activities(ref.conversation.id).create(activity);
|
|
180
161
|
return { ...activity, ...res };
|
|
181
162
|
}
|
|
182
163
|
createStream(ref) {
|
|
@@ -204,12 +185,12 @@ let HttpPlugin = class HttpPlugin {
|
|
|
204
185
|
isExpired: () => false,
|
|
205
186
|
};
|
|
206
187
|
}
|
|
207
|
-
|
|
208
|
-
this.$onActivity({
|
|
188
|
+
const response = await this.$onActivity({
|
|
209
189
|
sender: this,
|
|
210
190
|
activity,
|
|
211
191
|
token,
|
|
212
192
|
});
|
|
193
|
+
res.status(response.status || 200).send(response.body);
|
|
213
194
|
}
|
|
214
195
|
};
|
|
215
196
|
exports.HttpPlugin = HttpPlugin;
|
|
@@ -249,4 +230,4 @@ exports.HttpPlugin = HttpPlugin = __decorate([
|
|
|
249
230
|
}),
|
|
250
231
|
__metadata("design:paramtypes", [http_1.default.Server, Object])
|
|
251
232
|
], HttpPlugin);
|
|
252
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsdWdpbnMvaHR0cC9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdCO0FBRXhCLGdEQUF3QjtBQUN4QixzREFBOEI7QUFFOUIsb0RBUThCO0FBRzlCLG9FQUFzRDtBQUV0RCx5RUFBd0M7QUFHeEMsMEZBQW9HO0FBQ3BHLHVDQVFxQjtBQUdyQixxQ0FBc0M7QUFFdEM7O0dBRUc7QUFNSSxJQUFNLFVBQVUsR0FBaEIsTUFBTSxVQUFVO0lBRVosTUFBTSxDQUFXO0lBR2pCLE1BQU0sQ0FBZ0I7SUFHdEIsUUFBUSxDQUFxQjtJQUc3QixXQUFXLENBQWU7SUFHMUIsUUFBUSxDQUFnQjtJQUd4QixRQUFRLENBQWdDO0lBR3hDLFdBQVcsQ0FBc0Q7SUFFakUsR0FBRyxDQUE2QjtJQUNoQyxJQUFJLENBQThCO0lBQ2xDLEtBQUssQ0FBK0I7SUFDcEMsR0FBRyxDQUE2QjtJQUNoQyxNQUFNLENBQWdDO0lBQ3RDLEtBQUssQ0FBK0I7SUFDcEMsR0FBRyxDQUE2QjtJQUV6QyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUNTLE9BQU8sQ0FBYztJQUUvQixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNTLEtBQUssQ0FBbUI7SUFFeEIsT0FBTyxDQUFzQjtJQUM3QixRQUFRLENBQVU7SUFFNUIsWUFBWSxNQUFvQixFQUFFLE9BQWdDO1FBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFBLGlCQUFPLEdBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxjQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBQSxjQUFJLEdBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxpQkFBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09B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
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { ActivityParams, Attachment, ChannelData, Client, ConversationReference, Entity, IMessageActivity, ITypingActivity, SentActivity, TypingActivity } from '@microsoft/teams.api';
|
|
2
2
|
import { EventEmitter, ILogger } from '@microsoft/teams.common';
|
|
3
3
|
import { IStreamer, IStreamerEvents } from '../../types';
|
|
4
|
+
/**
|
|
5
|
+
* HTTP-based streaming implementation for Microsoft Teams activities.
|
|
6
|
+
*
|
|
7
|
+
* Allows sending typing indicators and messages in chunks to Teams.
|
|
8
|
+
* Queues incoming activities and flushes them periodically to avoid
|
|
9
|
+
* rate limits.
|
|
10
|
+
*
|
|
11
|
+
* Flow:
|
|
12
|
+
* 1. `emit()` adds activities to the queue and starts a flush if none scheduled.
|
|
13
|
+
* 2. `_flush()` starts by cancelling any pending flush, then processes up to 10 queued activities under a lock.
|
|
14
|
+
* 3. Informative typing updates are sent immediately.
|
|
15
|
+
* 4. Message text is combined and sent as a typing activity.
|
|
16
|
+
* 5. `_flush()` schedules another flush if more items remain in queue.
|
|
17
|
+
* 6. `close()` waits for the queue to empty and sends the final message activity.
|
|
18
|
+
*/
|
|
4
19
|
export declare class HttpStream implements IStreamer {
|
|
5
20
|
readonly events: EventEmitter<IStreamerEvents>;
|
|
6
21
|
protected client: Client;
|
|
@@ -16,12 +31,37 @@ export declare class HttpStream implements IStreamer {
|
|
|
16
31
|
private _timeout?;
|
|
17
32
|
private _logger;
|
|
18
33
|
private _flushing;
|
|
34
|
+
private readonly _totalTimeout;
|
|
19
35
|
constructor(client: Client, ref: ConversationReference, logger?: ILogger);
|
|
36
|
+
/**
|
|
37
|
+
* Emit a new activity or text to the stream.
|
|
38
|
+
* @param activity Activity object or string message.
|
|
39
|
+
*/
|
|
20
40
|
emit(activity: Partial<IMessageActivity | ITypingActivity> | string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Send a typing/status update without adding to the main text.
|
|
43
|
+
* @param text Status text (ex. "Thinking...")
|
|
44
|
+
*/
|
|
21
45
|
update(text: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* Close the stream by sending the final message.
|
|
48
|
+
* Waits for all queued activities to flush.
|
|
49
|
+
*/
|
|
22
50
|
close(): Promise<SentActivity | undefined>;
|
|
51
|
+
/**
|
|
52
|
+
* Flush queued activities.
|
|
53
|
+
* Processes up to 10 items at a time.
|
|
54
|
+
*/
|
|
23
55
|
protected flush(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Push a new chunk to the stream.
|
|
58
|
+
* @param activity TypingActivity to send.
|
|
59
|
+
*/
|
|
24
60
|
protected pushStreamChunk(activity: TypingActivity): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Send or update a streaming activity
|
|
63
|
+
* @param activity ActivityParams to send.
|
|
64
|
+
*/
|
|
25
65
|
protected send(activity: ActivityParams): Promise<{
|
|
26
66
|
id: string;
|
|
27
67
|
type: "message";
|
|
@@ -37,6 +77,7 @@ export declare class HttpStream implements IStreamer {
|
|
|
37
77
|
deliveryMode?: import("@microsoft/teams.api").DeliveryMode | undefined;
|
|
38
78
|
expiration?: Date | undefined;
|
|
39
79
|
value?: any;
|
|
80
|
+
isTargeted?: boolean | undefined;
|
|
40
81
|
stripMentionsText?: ((options?: import("@microsoft/teams.api").StripMentionsTextOptions) => IMessageActivity) | undefined;
|
|
41
82
|
isRecipientMentioned?: (() => boolean) | undefined;
|
|
42
83
|
getAccountMention?: ((accountId: string) => import("@microsoft/teams.api").MentionEntity | undefined) | undefined;
|
|
@@ -154,11 +195,11 @@ export declare class HttpStream implements IStreamer {
|
|
|
154
195
|
type: "event";
|
|
155
196
|
name?: "application/vnd.microsoft.meetingStart" | undefined;
|
|
156
197
|
value?: {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
198
|
+
Id: string;
|
|
199
|
+
MeetingType: string;
|
|
200
|
+
JoinUrl: string;
|
|
201
|
+
Title: string;
|
|
202
|
+
StartTime: Date;
|
|
162
203
|
} | undefined;
|
|
163
204
|
serviceUrl?: string | undefined;
|
|
164
205
|
timestamp?: Date | undefined;
|
|
@@ -182,11 +223,11 @@ export declare class HttpStream implements IStreamer {
|
|
|
182
223
|
type: "event";
|
|
183
224
|
name?: "application/vnd.microsoft.meetingEnd" | undefined;
|
|
184
225
|
value?: {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
226
|
+
Id: string;
|
|
227
|
+
MeetingType: string;
|
|
228
|
+
JoinUrl: string;
|
|
229
|
+
Title: string;
|
|
230
|
+
EndTime: Date;
|
|
190
231
|
} | undefined;
|
|
191
232
|
serviceUrl?: string | undefined;
|
|
192
233
|
timestamp?: Date | undefined;
|
|
@@ -211,7 +252,7 @@ export declare class HttpStream implements IStreamer {
|
|
|
211
252
|
name?: "application/vnd.microsoft.meetingParticipantJoin" | undefined;
|
|
212
253
|
value?: {
|
|
213
254
|
members: {
|
|
214
|
-
user: import("@microsoft/teams.api").
|
|
255
|
+
user: import("@microsoft/teams.api").TeamsChannelAccount;
|
|
215
256
|
meeting: {
|
|
216
257
|
inMeeting: boolean;
|
|
217
258
|
role: string;
|
|
@@ -241,10 +282,10 @@ export declare class HttpStream implements IStreamer {
|
|
|
241
282
|
name?: "application/vnd.microsoft.meetingParticipantLeave" | undefined;
|
|
242
283
|
value?: {
|
|
243
284
|
members: {
|
|
244
|
-
user: import("@microsoft/teams.api").
|
|
285
|
+
user: import("@microsoft/teams.api").TeamsChannelAccount;
|
|
245
286
|
meeting: {
|
|
246
287
|
inMeeting: boolean;
|
|
247
|
-
role
|
|
288
|
+
role?: string;
|
|
248
289
|
};
|
|
249
290
|
}[];
|
|
250
291
|
} | undefined;
|
|
@@ -735,6 +776,28 @@ export declare class HttpStream implements IStreamer {
|
|
|
735
776
|
meeting?: import("@microsoft/teams.api").MeetingInfo | undefined;
|
|
736
777
|
notification?: import("@microsoft/teams.api").NotificationInfo | undefined;
|
|
737
778
|
isStreaming?: (() => boolean) | undefined;
|
|
779
|
+
} | {
|
|
780
|
+
id: string;
|
|
781
|
+
type: "invoke";
|
|
782
|
+
name?: "signin/failure" | undefined;
|
|
783
|
+
value?: import("@microsoft/teams.api").SignInFailure | undefined;
|
|
784
|
+
serviceUrl?: string | undefined;
|
|
785
|
+
timestamp?: Date | undefined;
|
|
786
|
+
locale?: string | undefined;
|
|
787
|
+
localTimestamp?: Date | undefined;
|
|
788
|
+
channelId?: import("@microsoft/teams.api").ChannelID | undefined;
|
|
789
|
+
from?: import("@microsoft/teams.api").Account | undefined;
|
|
790
|
+
conversation?: import("@microsoft/teams.api").ConversationAccount | undefined;
|
|
791
|
+
relatesTo?: ConversationReference | undefined;
|
|
792
|
+
recipient?: import("@microsoft/teams.api").Account | undefined;
|
|
793
|
+
replyToId?: string | undefined;
|
|
794
|
+
entities?: Entity[] | undefined;
|
|
795
|
+
channelData?: ChannelData | undefined;
|
|
796
|
+
channel?: import("@microsoft/teams.api").ChannelInfo | undefined;
|
|
797
|
+
team?: import("@microsoft/teams.api").TeamInfo | undefined;
|
|
798
|
+
meeting?: import("@microsoft/teams.api").MeetingInfo | undefined;
|
|
799
|
+
notification?: import("@microsoft/teams.api").NotificationInfo | undefined;
|
|
800
|
+
isStreaming?: (() => boolean) | undefined;
|
|
738
801
|
} | {
|
|
739
802
|
id: string;
|
|
740
803
|
type: "invoke";
|