From 30a5efe57eb0003f4a1cc7fd333bb111293115a0 Mon Sep 17 00:00:00 2001 From: Trinetra Kumar Date: Tue, 9 Feb 2021 15:49:38 +0530 Subject: [PATCH 1/9] JustInTime Node Sample Review Fixes --- .../bots/teamsMessagingExtensionsActionBot.js | 148 +++++++++++++++--- .../teamsAppManifest/manifest.json | 30 +++- 2 files changed, 151 insertions(+), 27 deletions(-) diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js index f35995261c..f3de3c3dcf 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js @@ -1,19 +1,104 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -const { TeamsActivityHandler, CardFactory } = require('botbuilder'); +const { TeamsActivityHandler, CardFactory, TeamsInfo } = require('botbuilder'); class TeamsMessagingExtensionsActionBot extends TeamsActivityHandler { handleTeamsMessagingExtensionSubmitAction(context, action) { switch (action.commandId) { - case 'createCard': - return createCardCommand(context, action); - case 'shareMessage': - return shareMessageCommand(context, action); - default: - throw new Error('NotImplemented'); + case 'createCard': + return createCardCommand(context, action); + case 'shareMessage': + return shareMessageCommand(context, action); + default: + throw new Error('NotImplemented'); } } + + async handleTeamsMessagingExtensionFetchTask(context, action) { + try { + const member = await this.getSingleMember(context); + return { + task: { + type: 'continue', + value: { + card: GetAdaptiveCardAttachment(), + height: 400, + title: 'Hello ' + member, + width: 300 + }, + }, + }; + } catch (e) { + if (e.code === 'BotNotInConversationRoster') { + return { + task: { + type: 'continue', + value: { + card: GetJustInTimeCardAttachment(), + height: 400, + title: 'Adaptive Card - App Installation', + width: 300 + }, + }, + }; + } + throw e; + } + } + async getSingleMember(context) { + try { + const member = await TeamsInfo.getMember( + context, + context.activity.from.id + ); + return member.name; + } + catch (e) { + if (e.code === 'MemberNotFoundInConversation') { + context.sendActivity(MessageFactory.text('Member not found.')); + return e.code; + } + throw e; + } + } +} + +function GetJustInTimeCardAttachment() { + return CardFactory.adaptiveCard({ + actions: [ + { + type: 'Action.Submit', + title: 'Continue', + data: { msteams: { justInTimeInstall: true } } + }, + ], + body: [ + { + text: 'Looks like you have not used Action Messaging Extension app in this team/chat. Please click **Continue** to add this app.', + type: 'TextBlock', + wrap: 'bolder' + }, + ], + type: 'AdaptiveCard', + version: '1.0', + }); +} + +function GetAdaptiveCardAttachment() { + return CardFactory.adaptiveCard({ + actions: [{ type: 'Action.Submit', title: 'Close' }], + body: [ + { + text: 'This app is installed in this conversation. You can now use it to do some great stuff!!!', + type: 'TextBlock', + isSubtle: false, + warp: true + }, + ], + type: 'AdaptiveCard', + version: '1.0', + }); } function createCardCommand(context, action) { @@ -21,25 +106,29 @@ function createCardCommand(context, action) { const data = action.data; const heroCard = CardFactory.heroCard(data.title, data.text); heroCard.content.subtitle = data.subTitle; - const attachment = { contentType: heroCard.contentType, content: heroCard.content, preview: heroCard }; + const attachment = { + contentType: heroCard.contentType, + content: heroCard.content, + preview: heroCard, + }; return { composeExtension: { type: 'result', attachmentLayout: 'list', - attachments: [ - attachment - ] - } + attachments: [attachment] + }, }; } function shareMessageCommand(context, action) { // The user has chosen to share a message by choosing the 'Share Message' context menu command. let userName = 'unknown'; - if (action.messagePayload.from && - action.messagePayload.from.user && - action.messagePayload.from.user.displayName) { + if ( + action.messagePayload.from && + action.messagePayload.from.user && + action.messagePayload.from.user.displayName + ) { userName = action.messagePayload.from.user.displayName; } @@ -48,28 +137,37 @@ function shareMessageCommand(context, action) { let images = []; const includeImage = action.data.includeImage; if (includeImage === 'true') { - images = ['https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQtB3AwMUeNoq4gUBGe6Ocj8kyh3bXa9ZbV7u1fVKQoyKFHdkqU']; + images = [ + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQtB3AwMUeNoq4gUBGe6Ocj8kyh3bXa9ZbV7u1fVKQoyKFHdkqU', + ]; } - const heroCard = CardFactory.heroCard(`${ userName } originally sent this message:`, + const heroCard = CardFactory.heroCard( + `${userName} originally sent this message:`, action.messagePayload.body.content, - images); + images + ); - if (action.messagePayload.attachments && action.messagePayload.attachments.length > 0) { + if ( + action.messagePayload.attachments && + action.messagePayload.attachments.length > 0 + ) { // This sample does not add the MessagePayload Attachments. This is left as an // exercise for the user. - heroCard.content.subtitle = `(${ action.messagePayload.attachments.length } Attachments not included)`; + heroCard.content.subtitle = `(${action.messagePayload.attachments.length} Attachments not included)`; } - const attachment = { contentType: heroCard.contentType, content: heroCard.content, preview: heroCard }; + const attachment = { + contentType: heroCard.contentType, + content: heroCard.content, + preview: heroCard + }; return { composeExtension: { type: 'result', attachmentLayout: 'list', - attachments: [ - attachment - ] - } + attachments: [attachment] + }, }; } diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json b/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json index bf26138930..e68727d6d1 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json @@ -23,6 +23,18 @@ "color": "icon-color.png" }, "accentColor": "#FFFFFF", + "bots": [ + { + "botId": "<>", + "needsChannelSelector": false, + "isNotificationOnly": false, + "scopes": [ + "team", + "personal", + "groupchat" + ] + } + ], "composeExtensions": [ { "botId": "<>", @@ -30,7 +42,9 @@ { "id": "createCard", "type": "action", - "context": [ "compose" ], + "context": [ + "compose" + ], "description": "Command to run action to create a Card from Compose Box", "title": "Create Card", "parameters": [ @@ -57,7 +71,9 @@ { "id": "shareMessage", "type": "action", - "context": [ "message" ], + "context": [ + "message" + ], "description": "Test command to run action on message context (message sharing)", "title": "Share Message", "parameters": [ @@ -68,6 +84,16 @@ "inputType": "toggle" } ] + }, + { + "id": "FetchRoster", + "description": "Fetch the conversation roster", + "title": "FetchRoster", + "type": "action", + "fetchTask": true, + "context": [ + "compose" + ] } ] } From 2c80800024e98cda63ffa81a58818a6046a66844 Mon Sep 17 00:00:00 2001 From: Trinetra Kumar Date: Tue, 9 Feb 2021 15:59:08 +0530 Subject: [PATCH 2/9] Revert "JustInTime Node Sample Review Fixes" This reverts commit 30a5efe57eb0003f4a1cc7fd333bb111293115a0. --- .../bots/teamsMessagingExtensionsActionBot.js | 148 +++--------------- .../teamsAppManifest/manifest.json | 30 +--- 2 files changed, 27 insertions(+), 151 deletions(-) diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js index f3de3c3dcf..f35995261c 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js @@ -1,104 +1,19 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -const { TeamsActivityHandler, CardFactory, TeamsInfo } = require('botbuilder'); +const { TeamsActivityHandler, CardFactory } = require('botbuilder'); class TeamsMessagingExtensionsActionBot extends TeamsActivityHandler { handleTeamsMessagingExtensionSubmitAction(context, action) { switch (action.commandId) { - case 'createCard': - return createCardCommand(context, action); - case 'shareMessage': - return shareMessageCommand(context, action); - default: - throw new Error('NotImplemented'); + case 'createCard': + return createCardCommand(context, action); + case 'shareMessage': + return shareMessageCommand(context, action); + default: + throw new Error('NotImplemented'); } } - - async handleTeamsMessagingExtensionFetchTask(context, action) { - try { - const member = await this.getSingleMember(context); - return { - task: { - type: 'continue', - value: { - card: GetAdaptiveCardAttachment(), - height: 400, - title: 'Hello ' + member, - width: 300 - }, - }, - }; - } catch (e) { - if (e.code === 'BotNotInConversationRoster') { - return { - task: { - type: 'continue', - value: { - card: GetJustInTimeCardAttachment(), - height: 400, - title: 'Adaptive Card - App Installation', - width: 300 - }, - }, - }; - } - throw e; - } - } - async getSingleMember(context) { - try { - const member = await TeamsInfo.getMember( - context, - context.activity.from.id - ); - return member.name; - } - catch (e) { - if (e.code === 'MemberNotFoundInConversation') { - context.sendActivity(MessageFactory.text('Member not found.')); - return e.code; - } - throw e; - } - } -} - -function GetJustInTimeCardAttachment() { - return CardFactory.adaptiveCard({ - actions: [ - { - type: 'Action.Submit', - title: 'Continue', - data: { msteams: { justInTimeInstall: true } } - }, - ], - body: [ - { - text: 'Looks like you have not used Action Messaging Extension app in this team/chat. Please click **Continue** to add this app.', - type: 'TextBlock', - wrap: 'bolder' - }, - ], - type: 'AdaptiveCard', - version: '1.0', - }); -} - -function GetAdaptiveCardAttachment() { - return CardFactory.adaptiveCard({ - actions: [{ type: 'Action.Submit', title: 'Close' }], - body: [ - { - text: 'This app is installed in this conversation. You can now use it to do some great stuff!!!', - type: 'TextBlock', - isSubtle: false, - warp: true - }, - ], - type: 'AdaptiveCard', - version: '1.0', - }); } function createCardCommand(context, action) { @@ -106,29 +21,25 @@ function createCardCommand(context, action) { const data = action.data; const heroCard = CardFactory.heroCard(data.title, data.text); heroCard.content.subtitle = data.subTitle; - const attachment = { - contentType: heroCard.contentType, - content: heroCard.content, - preview: heroCard, - }; + const attachment = { contentType: heroCard.contentType, content: heroCard.content, preview: heroCard }; return { composeExtension: { type: 'result', attachmentLayout: 'list', - attachments: [attachment] - }, + attachments: [ + attachment + ] + } }; } function shareMessageCommand(context, action) { // The user has chosen to share a message by choosing the 'Share Message' context menu command. let userName = 'unknown'; - if ( - action.messagePayload.from && - action.messagePayload.from.user && - action.messagePayload.from.user.displayName - ) { + if (action.messagePayload.from && + action.messagePayload.from.user && + action.messagePayload.from.user.displayName) { userName = action.messagePayload.from.user.displayName; } @@ -137,37 +48,28 @@ function shareMessageCommand(context, action) { let images = []; const includeImage = action.data.includeImage; if (includeImage === 'true') { - images = [ - 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQtB3AwMUeNoq4gUBGe6Ocj8kyh3bXa9ZbV7u1fVKQoyKFHdkqU', - ]; + images = ['https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQtB3AwMUeNoq4gUBGe6Ocj8kyh3bXa9ZbV7u1fVKQoyKFHdkqU']; } - const heroCard = CardFactory.heroCard( - `${userName} originally sent this message:`, + const heroCard = CardFactory.heroCard(`${ userName } originally sent this message:`, action.messagePayload.body.content, - images - ); + images); - if ( - action.messagePayload.attachments && - action.messagePayload.attachments.length > 0 - ) { + if (action.messagePayload.attachments && action.messagePayload.attachments.length > 0) { // This sample does not add the MessagePayload Attachments. This is left as an // exercise for the user. - heroCard.content.subtitle = `(${action.messagePayload.attachments.length} Attachments not included)`; + heroCard.content.subtitle = `(${ action.messagePayload.attachments.length } Attachments not included)`; } - const attachment = { - contentType: heroCard.contentType, - content: heroCard.content, - preview: heroCard - }; + const attachment = { contentType: heroCard.contentType, content: heroCard.content, preview: heroCard }; return { composeExtension: { type: 'result', attachmentLayout: 'list', - attachments: [attachment] - }, + attachments: [ + attachment + ] + } }; } diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json b/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json index e68727d6d1..bf26138930 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json @@ -23,18 +23,6 @@ "color": "icon-color.png" }, "accentColor": "#FFFFFF", - "bots": [ - { - "botId": "<>", - "needsChannelSelector": false, - "isNotificationOnly": false, - "scopes": [ - "team", - "personal", - "groupchat" - ] - } - ], "composeExtensions": [ { "botId": "<>", @@ -42,9 +30,7 @@ { "id": "createCard", "type": "action", - "context": [ - "compose" - ], + "context": [ "compose" ], "description": "Command to run action to create a Card from Compose Box", "title": "Create Card", "parameters": [ @@ -71,9 +57,7 @@ { "id": "shareMessage", "type": "action", - "context": [ - "message" - ], + "context": [ "message" ], "description": "Test command to run action on message context (message sharing)", "title": "Share Message", "parameters": [ @@ -84,16 +68,6 @@ "inputType": "toggle" } ] - }, - { - "id": "FetchRoster", - "description": "Fetch the conversation roster", - "title": "FetchRoster", - "type": "action", - "fetchTask": true, - "context": [ - "compose" - ] } ] } From 359afc5c4b7c3dd9ad123c4e07f7822e01945fa5 Mon Sep 17 00:00:00 2001 From: Trinetra Kumar Date: Tue, 9 Feb 2021 17:37:16 +0530 Subject: [PATCH 3/9] Review Fixes for Just in Time Installation Node --- .../bots/teamsMessagingExtensionsActionBot.js | 148 +++++++++++++++--- .../teamsAppManifest/manifest.json | 30 +++- 2 files changed, 151 insertions(+), 27 deletions(-) diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js index f35995261c..c1d9cefcfa 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js @@ -1,19 +1,104 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -const { TeamsActivityHandler, CardFactory } = require('botbuilder'); +const { TeamsActivityHandler, CardFactory, TeamsInfo } = require('botbuilder'); class TeamsMessagingExtensionsActionBot extends TeamsActivityHandler { handleTeamsMessagingExtensionSubmitAction(context, action) { switch (action.commandId) { - case 'createCard': - return createCardCommand(context, action); - case 'shareMessage': - return shareMessageCommand(context, action); - default: - throw new Error('NotImplemented'); + case 'createCard': + return createCardCommand(context, action); + case 'shareMessage': + return shareMessageCommand(context, action); + default: + throw new Error('NotImplemented'); } } + + async handleTeamsMessagingExtensionFetchTask(context, action) { + try { + const member = await this.getSingleMember(context); + return { + task: { + type: 'continue', + value: { + card: GetAdaptiveCardAttachment(), + height: 400, + title: 'Hello ' + member, + width: 300 + }, + }, + }; + } catch (e) { + if (e.code === 'BotNotInConversationRoster') { + return { + task: { + type: 'continue', + value: { + card: GetJustInTimeCardAttachment(), + height: 400, + title: 'Adaptive Card - App Installation', + width: 300 + }, + }, + }; + } + throw e; + } + + } + async getSingleMember(context) { + try { + const member = await TeamsInfo.getMember( + context, + context.activity.from.id + ); + return member.name; + } catch (e) { + if (e.code === 'MemberNotFoundInConversation') { + context.sendActivity(MessageFactory.text('Member not found.')); + return e.code; + } + throw e; + } + } +} + +function GetJustInTimeCardAttachment() { + return CardFactory.adaptiveCard({ + actions: [ + { + type: 'Action.Submit', + title: 'Continue', + data: { msteams: { justInTimeInstall: true } } + }, + ], + body: [ + { + text: 'Looks like you have not used Action Messaging Extension app in this team/chat. Please click **Continue** to add this app.', + type: 'TextBlock', + wrap: 'bolder' + }, + ], + type: 'AdaptiveCard', + version: '1.0', + }); +} + +function GetAdaptiveCardAttachment() { + return CardFactory.adaptiveCard({ + actions: [{ type: 'Action.Submit', title: 'Close' }], + body: [ + { + text: 'This app is installed in this conversation. You can now use it to do some great stuff!!!', + type: 'TextBlock', + isSubtle: false, + warp: true + }, + ], + type: 'AdaptiveCard', + version: '1.0', + }); } function createCardCommand(context, action) { @@ -21,25 +106,29 @@ function createCardCommand(context, action) { const data = action.data; const heroCard = CardFactory.heroCard(data.title, data.text); heroCard.content.subtitle = data.subTitle; - const attachment = { contentType: heroCard.contentType, content: heroCard.content, preview: heroCard }; + const attachment = { + contentType: heroCard.contentType, + content: heroCard.content, + preview: heroCard, + }; return { composeExtension: { type: 'result', attachmentLayout: 'list', - attachments: [ - attachment - ] - } + attachments: [attachment] + }, }; } function shareMessageCommand(context, action) { // The user has chosen to share a message by choosing the 'Share Message' context menu command. let userName = 'unknown'; - if (action.messagePayload.from && - action.messagePayload.from.user && - action.messagePayload.from.user.displayName) { + if ( + action.messagePayload.from && + action.messagePayload.from.user && + action.messagePayload.from.user.displayName + ) { userName = action.messagePayload.from.user.displayName; } @@ -48,28 +137,37 @@ function shareMessageCommand(context, action) { let images = []; const includeImage = action.data.includeImage; if (includeImage === 'true') { - images = ['https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQtB3AwMUeNoq4gUBGe6Ocj8kyh3bXa9ZbV7u1fVKQoyKFHdkqU']; + images = [ + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQtB3AwMUeNoq4gUBGe6Ocj8kyh3bXa9ZbV7u1fVKQoyKFHdkqU', + ]; } - const heroCard = CardFactory.heroCard(`${ userName } originally sent this message:`, + const heroCard = CardFactory.heroCard( + `${userName} originally sent this message:`, action.messagePayload.body.content, - images); + images + ); - if (action.messagePayload.attachments && action.messagePayload.attachments.length > 0) { + if ( + action.messagePayload.attachments && + action.messagePayload.attachments.length > 0 + ) { // This sample does not add the MessagePayload Attachments. This is left as an // exercise for the user. - heroCard.content.subtitle = `(${ action.messagePayload.attachments.length } Attachments not included)`; + heroCard.content.subtitle = `(${action.messagePayload.attachments.length} Attachments not included)`; } - const attachment = { contentType: heroCard.contentType, content: heroCard.content, preview: heroCard }; + const attachment = { + contentType: heroCard.contentType, + content: heroCard.content, + preview: heroCard + }; return { composeExtension: { type: 'result', attachmentLayout: 'list', - attachments: [ - attachment - ] - } + attachments: [attachment] + }, }; } diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json b/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json index bf26138930..e68727d6d1 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/teamsAppManifest/manifest.json @@ -23,6 +23,18 @@ "color": "icon-color.png" }, "accentColor": "#FFFFFF", + "bots": [ + { + "botId": "<>", + "needsChannelSelector": false, + "isNotificationOnly": false, + "scopes": [ + "team", + "personal", + "groupchat" + ] + } + ], "composeExtensions": [ { "botId": "<>", @@ -30,7 +42,9 @@ { "id": "createCard", "type": "action", - "context": [ "compose" ], + "context": [ + "compose" + ], "description": "Command to run action to create a Card from Compose Box", "title": "Create Card", "parameters": [ @@ -57,7 +71,9 @@ { "id": "shareMessage", "type": "action", - "context": [ "message" ], + "context": [ + "message" + ], "description": "Test command to run action on message context (message sharing)", "title": "Share Message", "parameters": [ @@ -68,6 +84,16 @@ "inputType": "toggle" } ] + }, + { + "id": "FetchRoster", + "description": "Fetch the conversation roster", + "title": "FetchRoster", + "type": "action", + "fetchTask": true, + "context": [ + "compose" + ] } ] } From 5f675e263fb3d1050b7be5f6ddd1f1ed7640470e Mon Sep 17 00:00:00 2001 From: Trinetra Kumar Date: Wed, 17 Feb 2021 15:09:45 +0530 Subject: [PATCH 4/9] JustinTime Review Fixes --- .../bots/teamsMessagingExtensionsActionBot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js index c1d9cefcfa..6255c1edcb 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js @@ -59,7 +59,7 @@ class TeamsMessagingExtensionsActionBot extends TeamsActivityHandler { context.sendActivity(MessageFactory.text('Member not found.')); return e.code; } - throw e; + throw e; } } } From 2d26ca42dc9137544df567a8342708c0baeb89a3 Mon Sep 17 00:00:00 2001 From: Trinetra-MSFT Date: Mon, 22 Feb 2021 11:39:39 +0530 Subject: [PATCH 5/9] Update samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js Co-authored-by: Michael Richardson <40401643+mdrichardson@users.noreply.github.com> --- .../bots/teamsMessagingExtensionsActionBot.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js index 6255c1edcb..d955ab56fb 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js @@ -147,10 +147,7 @@ function shareMessageCommand(context, action) { images ); - if ( - action.messagePayload.attachments && - action.messagePayload.attachments.length > 0 - ) { + if (action.messagePayload.attachments?.length > 0) { // This sample does not add the MessagePayload Attachments. This is left as an // exercise for the user. heroCard.content.subtitle = `(${action.messagePayload.attachments.length} Attachments not included)`; From f8cf396164717cda0f990e7348b65ea9ba86499e Mon Sep 17 00:00:00 2001 From: Trinetra-MSFT Date: Mon, 22 Feb 2021 11:39:46 +0530 Subject: [PATCH 6/9] Update samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js Co-authored-by: Michael Richardson <40401643+mdrichardson@users.noreply.github.com> --- .../bots/teamsMessagingExtensionsActionBot.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js index d955ab56fb..c0743f7055 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js @@ -124,11 +124,7 @@ function createCardCommand(context, action) { function shareMessageCommand(context, action) { // The user has chosen to share a message by choosing the 'Share Message' context menu command. let userName = 'unknown'; - if ( - action.messagePayload.from && - action.messagePayload.from.user && - action.messagePayload.from.user.displayName - ) { + if (action.messagePayload?.from?.user?.displayName) { userName = action.messagePayload.from.user.displayName; } From 1180efe4cb7d5a50349a983ba377dd9b7073e9e5 Mon Sep 17 00:00:00 2001 From: Trinetra-MSFT Date: Mon, 22 Feb 2021 11:39:52 +0530 Subject: [PATCH 7/9] Update samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js Co-authored-by: Michael Richardson <40401643+mdrichardson@users.noreply.github.com> --- .../bots/teamsMessagingExtensionsActionBot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js index c0743f7055..9ac4a7db1a 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js @@ -59,7 +59,7 @@ class TeamsMessagingExtensionsActionBot extends TeamsActivityHandler { context.sendActivity(MessageFactory.text('Member not found.')); return e.code; } - throw e; + throw e; } } } From 7877790d128664d9b3bc50ec68dd81bf935e638b Mon Sep 17 00:00:00 2001 From: Trinetra-MSFT Date: Mon, 22 Feb 2021 11:40:06 +0530 Subject: [PATCH 8/9] Update samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js Co-authored-by: Michael Richardson <40401643+mdrichardson@users.noreply.github.com> --- .../bots/teamsMessagingExtensionsActionBot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js index 9ac4a7db1a..119fbe47af 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js @@ -18,7 +18,7 @@ class TeamsMessagingExtensionsActionBot extends TeamsActivityHandler { async handleTeamsMessagingExtensionFetchTask(context, action) { try { const member = await this.getSingleMember(context); - return { + return { task: { type: 'continue', value: { From f69c197a031ee0cb772dad8f1044c1249a7ad7cf Mon Sep 17 00:00:00 2001 From: Trinetra Kumar Date: Mon, 22 Feb 2021 11:46:13 +0530 Subject: [PATCH 9/9] Review Fixes --- .../bots/teamsMessagingExtensionsActionBot.js | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js index 6255c1edcb..7a93684208 100644 --- a/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js +++ b/samples/javascript_nodejs/51.teams-messaging-extensions-action/bots/teamsMessagingExtensionsActionBot.js @@ -53,13 +53,13 @@ class TeamsMessagingExtensionsActionBot extends TeamsActivityHandler { context, context.activity.from.id ); - return member.name; + return member.name; } catch (e) { if (e.code === 'MemberNotFoundInConversation') { context.sendActivity(MessageFactory.text('Member not found.')); return e.code; } - throw e; + throw e; } } } @@ -124,11 +124,7 @@ function createCardCommand(context, action) { function shareMessageCommand(context, action) { // The user has chosen to share a message by choosing the 'Share Message' context menu command. let userName = 'unknown'; - if ( - action.messagePayload.from && - action.messagePayload.from.user && - action.messagePayload.from.user.displayName - ) { + if (action.messagePayload?.from?.user?.displayName) { userName = action.messagePayload.from.user.displayName; } @@ -147,10 +143,7 @@ function shareMessageCommand(context, action) { images ); - if ( - action.messagePayload.attachments && - action.messagePayload.attachments.length > 0 - ) { + if (action.messagePayload.attachments?.length > 0) { // This sample does not add the MessagePayload Attachments. This is left as an // exercise for the user. heroCard.content.subtitle = `(${action.messagePayload.attachments.length} Attachments not included)`;