From be3fb0c2f7ccc012314eba83b832b360c3a72348 Mon Sep 17 00:00:00 2001 From: tracyboehrer Date: Tue, 9 Feb 2021 12:34:07 -0600 Subject: [PATCH] Refactored samples to use @Bean method for Bot instead of @Component. --- .../bot/sample/echo/Application.java | 35 ++++++++--- .../microsoft/bot/sample/echo/EchoBot.java | 2 - .../bot/sample/welcomeuser/Application.java | 37 ++++++++---- .../sample/welcomeuser/WelcomeUserBot.java | 2 - .../sample/multiturnprompt/Application.java | 58 +++++++++++++++---- .../bot/sample/multiturnprompt/DialogBot.java | 2 - .../multiturnprompt/UserProfileDialog.java | 2 - .../bot/sample/usingcards/Application.java | 58 +++++++++++++++---- .../bot/sample/usingcards/MainDialog.java | 2 - .../bot/sample/usingcards/RichCardsBot.java | 7 +-- .../sample/suggestedactions/Application.java | 36 ++++++++---- .../suggestedactions/SuggestedActionsBot.java | 2 - .../bot/sample/proactive/Application.java | 49 +++++++++++----- .../bot/sample/proactive/ProactiveBot.java | 7 ++- .../bot/sample/multilingual/Application.java | 35 +++++++---- .../sample/multilingual/MultiLingualBot.java | 1 - .../promptusersforinput/Application.java | 41 +++++++++---- .../promptusersforinput/CustomPromptBot.java | 1 - .../sample/statemanagement/Application.java | 41 +++++++++---- .../statemanagement/StateManagementBot.java | 1 - .../bot/sample/inspection/Application.java | 49 ++++++++++------ .../bot/sample/inspection/EchoBot.java | 1 - .../pom.xml | 2 +- .../bot/sample/teamssearch/Application.java | 42 ++++++++++---- .../TeamsMessagingExtensionsSearchBot.java | 2 - .../bot/sample/teamsaction/Application.java | 42 ++++++++++---- .../TeamsMessagingExtensionsActionBot.java | 2 - .../pom.xml | 4 +- .../sample/teamssearchauth/Application.java | 47 +++++++++++---- ...essagingExtensionsSearchAuthConfigBot.java | 2 - .../teamsactionpreview/Application.java | 42 ++++++++++---- ...msMessagingExtensionsActionPreviewBot.java | 2 - .../sample/teamstaskmodule/Application.java | 42 ++++++++++---- .../teamstaskmodule/TeamsTaskModuleBot.java | 6 +- .../bot/sample/teamsunfurl/Application.java | 42 ++++++++++---- .../sample/teamsunfurl/LinkUnfurlingBot.java | 2 - .../sample/teamsfileupload/Application.java | 42 ++++++++++---- .../teamsfileupload/TeamsFileUploadBot.java | 3 - .../sample/teamsconversation/Application.java | 36 ++++++++---- .../TeamsConversationBot.java | 2 - .../teamsstartnewthread/Application.java | 42 ++++++++++---- .../TeamsStartNewThreadBot.java | 2 - 42 files changed, 611 insertions(+), 264 deletions(-) diff --git a/samples/02.echo-bot/src/main/java/com/microsoft/bot/sample/echo/Application.java b/samples/02.echo-bot/src/main/java/com/microsoft/bot/sample/echo/Application.java index dfdcb0731..cc7014c76 100644 --- a/samples/02.echo-bot/src/main/java/com/microsoft/bot/sample/echo/Application.java +++ b/samples/02.echo-bot/src/main/java/com/microsoft/bot/sample/echo/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.echo; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,31 +11,47 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - *

- * This class also provides overrides for dependency injections. A class that extends the {@link - * com.microsoft.bot.builder.Bot} interface should be annotated with @Component. - * - * @see EchoBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication // Use the default BotController to receive incoming Channel messages. A custom // controller could be used by eliminating this import and creating a new -// RestController. +// org.springframework.web.bind.annotation.RestController. // The default controller is created by the Spring Boot container using // dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot() { + return new EchoBot(); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/02.echo-bot/src/main/java/com/microsoft/bot/sample/echo/EchoBot.java b/samples/02.echo-bot/src/main/java/com/microsoft/bot/sample/echo/EchoBot.java index d6c5c2e0f..e34b01416 100644 --- a/samples/02.echo-bot/src/main/java/com/microsoft/bot/sample/echo/EchoBot.java +++ b/samples/02.echo-bot/src/main/java/com/microsoft/bot/sample/echo/EchoBot.java @@ -9,7 +9,6 @@ import com.microsoft.bot.builder.TurnContext; import com.microsoft.bot.schema.ChannelAccount; import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -23,7 +22,6 @@ * #onMembersAdded(List, TurnContext)} will send a greeting to new conversation participants. *

*/ -@Component public class EchoBot extends ActivityHandler { @Override diff --git a/samples/03.welcome-user/src/main/java/com/microsoft/bot/sample/welcomeuser/Application.java b/samples/03.welcome-user/src/main/java/com/microsoft/bot/sample/welcomeuser/Application.java index 6931438e5..78f74fe9d 100644 --- a/samples/03.welcome-user/src/main/java/com/microsoft/bot/sample/welcomeuser/Application.java +++ b/samples/03.welcome-user/src/main/java/com/microsoft/bot/sample/welcomeuser/Application.java @@ -3,6 +3,8 @@ package com.microsoft.bot.sample.welcomeuser; +import com.microsoft.bot.builder.Bot; +import com.microsoft.bot.builder.UserState; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,31 +12,46 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - * - * This class also provides overrides for dependency injections. A class that - * extends the {@link com.microsoft.bot.builder.Bot} interface should be - * annotated with @Component. - * - * @see WelcomeUserBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication // Use the default BotController to receive incoming Channel messages. A custom // controller could be used by eliminating this import and creating a new -// RestController. +// org.springframework.web.bind.annotation.RestController. // The default controller is created by the Spring Boot container using // dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot(UserState userState) { + return new WelcomeUserBot(userState); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/03.welcome-user/src/main/java/com/microsoft/bot/sample/welcomeuser/WelcomeUserBot.java b/samples/03.welcome-user/src/main/java/com/microsoft/bot/sample/welcomeuser/WelcomeUserBot.java index ab9a14b4d..c0a1e94a6 100644 --- a/samples/03.welcome-user/src/main/java/com/microsoft/bot/sample/welcomeuser/WelcomeUserBot.java +++ b/samples/03.welcome-user/src/main/java/com/microsoft/bot/sample/welcomeuser/WelcomeUserBot.java @@ -18,7 +18,6 @@ import com.microsoft.bot.schema.ResourceResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.Collections; @@ -36,7 +35,6 @@ * * @see WelcomeUserState */ -@Component public class WelcomeUserBot extends ActivityHandler { // Messages sent to the user. private static final String WELCOMEMESSAGE = diff --git a/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/Application.java b/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/Application.java index 1324a2348..32ac57561 100644 --- a/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/Application.java +++ b/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/Application.java @@ -3,6 +3,10 @@ package com.microsoft.bot.sample.multiturnprompt; +import com.microsoft.bot.builder.Bot; +import com.microsoft.bot.builder.ConversationState; +import com.microsoft.bot.builder.UserState; +import com.microsoft.bot.dialogs.Dialog; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,31 +14,65 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - * - * This class also provides overrides for dependency injections. A class that - * extends the {@link com.microsoft.bot.builder.Bot} interface should be - * annotated with @Component. - * - * @see DialogBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication // Use the default BotController to receive incoming Channel messages. A custom // controller could be used by eliminating this import and creating a new -// RestController. +// org.springframework.web.bind.annotation.RestController. // The default controller is created by the Spring Boot container using // dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot( + ConversationState conversationState, + UserState userState, + Dialog dialog + ) { + return new DialogBot(conversationState, userState, dialog); + } + + /** + * Returns the starting Dialog for this application. + * + *

+ * The @Component annotation could be used on the Dialog class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Dialog implementation for this application. + */ + @Bean + public Dialog getRootDialog(UserState userState) { + return new UserProfileDialog(userState); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/DialogBot.java b/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/DialogBot.java index d71d53ed6..ddcafee17 100644 --- a/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/DialogBot.java +++ b/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/DialogBot.java @@ -10,7 +10,6 @@ import com.microsoft.bot.builder.TurnContext; import com.microsoft.bot.builder.UserState; import java.util.concurrent.CompletableFuture; -import org.springframework.stereotype.Component; /** * This IBot implementation can run any type of Dialog. The use of type parameterization is to @@ -21,7 +20,6 @@ * been used in a Dialog implementation, and the requirement is that all BotState objects are * saved at the end of a turn. */ -@Component public class DialogBot extends ActivityHandler { protected Dialog dialog; protected BotState conversationState; diff --git a/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/UserProfileDialog.java b/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/UserProfileDialog.java index 302fe5d3a..ade706bd8 100644 --- a/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/UserProfileDialog.java +++ b/samples/05.multi-turn-prompt/src/main/java/com/microsoft/bot/sample/multiturnprompt/UserProfileDialog.java @@ -27,9 +27,7 @@ import java.util.List; import java.util.concurrent.CompletableFuture; import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; -@Component public class UserProfileDialog extends ComponentDialog { private StatePropertyAccessor userProfileAccessor; diff --git a/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/Application.java b/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/Application.java index 5c08c5a98..9db23c06f 100644 --- a/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/Application.java +++ b/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/Application.java @@ -3,6 +3,10 @@ package com.microsoft.bot.sample.usingcards; +import com.microsoft.bot.builder.Bot; +import com.microsoft.bot.builder.ConversationState; +import com.microsoft.bot.builder.UserState; +import com.microsoft.bot.dialogs.Dialog; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,31 +14,65 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - * - * This class also provides overrides for dependency injections. A class that - * extends the {@link com.microsoft.bot.builder.Bot} interface should be - * annotated with @Component. - * - * @see RichCardsBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication // Use the default BotController to receive incoming Channel messages. A custom // controller could be used by eliminating this import and creating a new -// RestController. +// org.springframework.web.bind.annotation.RestController. // The default controller is created by the Spring Boot container using // dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot( + ConversationState conversationState, + UserState userState, + Dialog rootDialog + ) { + return new RichCardsBot(conversationState, userState, rootDialog); + } + + /** + * Returns the starting Dialog for this application. + * + *

+ * The @Component annotation could be used on the Dialog class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Dialog implementation for this application. + */ + @Bean + public Dialog getRootDialog() { + return new MainDialog(); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/MainDialog.java b/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/MainDialog.java index 7507bc568..c6510175f 100644 --- a/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/MainDialog.java +++ b/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/MainDialog.java @@ -20,9 +20,7 @@ import java.util.Arrays; import java.util.List; import java.util.concurrent.CompletableFuture; -import org.springframework.stereotype.Component; -@Component public class MainDialog extends ComponentDialog { public MainDialog() { super("MainDialog"); diff --git a/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/RichCardsBot.java b/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/RichCardsBot.java index aede87551..70235e3d1 100644 --- a/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/RichCardsBot.java +++ b/samples/06.using-cards/src/main/java/com/microsoft/bot/sample/usingcards/RichCardsBot.java @@ -8,22 +8,21 @@ import com.microsoft.bot.builder.MessageFactory; import com.microsoft.bot.builder.TurnContext; import com.microsoft.bot.builder.UserState; +import com.microsoft.bot.dialogs.Dialog; import com.microsoft.bot.schema.Activity; import com.microsoft.bot.schema.ChannelAccount; import java.util.List; import java.util.concurrent.CompletableFuture; import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; // RichCardsBot prompts a user to select a Rich Card and then returns the card // that matches the user's selection. -@Component -public class RichCardsBot extends DialogBot { +public class RichCardsBot extends DialogBot { public RichCardsBot( ConversationState withConversationState, UserState withUserState, - MainDialog withDialog + Dialog withDialog ) { super(withConversationState, withUserState, withDialog); } diff --git a/samples/08.suggested-actions/src/main/java/com/microsoft/bot/sample/suggestedactions/Application.java b/samples/08.suggested-actions/src/main/java/com/microsoft/bot/sample/suggestedactions/Application.java index 36190e2bb..08514f8b3 100644 --- a/samples/08.suggested-actions/src/main/java/com/microsoft/bot/sample/suggestedactions/Application.java +++ b/samples/08.suggested-actions/src/main/java/com/microsoft/bot/sample/suggestedactions/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.suggestedactions; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,31 +11,46 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - * - * This class also provides overrides for dependency injections. A class that - * extends the {@link com.microsoft.bot.builder.Bot} interface should be - * annotated with @Component. - * - * @see SuggestedActionsBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication // Use the default BotController to receive incoming Channel messages. A custom // controller could be used by eliminating this import and creating a new -// RestController. +// org.springframework.web.bind.annotation.RestController. // The default controller is created by the Spring Boot container using // dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot() { + return new SuggestedActionsBot(); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/08.suggested-actions/src/main/java/com/microsoft/bot/sample/suggestedactions/SuggestedActionsBot.java b/samples/08.suggested-actions/src/main/java/com/microsoft/bot/sample/suggestedactions/SuggestedActionsBot.java index 17f6556c1..5fb06fcd8 100644 --- a/samples/08.suggested-actions/src/main/java/com/microsoft/bot/sample/suggestedactions/SuggestedActionsBot.java +++ b/samples/08.suggested-actions/src/main/java/com/microsoft/bot/sample/suggestedactions/SuggestedActionsBot.java @@ -13,7 +13,6 @@ import com.microsoft.bot.schema.ChannelAccount; import com.microsoft.bot.schema.SuggestedActions; import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.List; @@ -30,7 +29,6 @@ * conversation participants. *

*/ -@Component public class SuggestedActionsBot extends ActivityHandler { public static final String WELCOMETEXT = "This bot will introduce you to suggestedActions." + " Please answer the question:"; diff --git a/samples/16.proactive-messages/src/main/java/com/microsoft/bot/sample/proactive/Application.java b/samples/16.proactive-messages/src/main/java/com/microsoft/bot/sample/proactive/Application.java index 5a115736f..fead67fbd 100644 --- a/samples/16.proactive-messages/src/main/java/com/microsoft/bot/sample/proactive/Application.java +++ b/samples/16.proactive-messages/src/main/java/com/microsoft/bot/sample/proactive/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.proactive; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -13,38 +14,43 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - * - * This class also provides overrides for dependency injections. A class that - * extends the {@link com.microsoft.bot.builder.Bot} interface should be - * annotated with @Component. - * - * @see ProactiveBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication // Use the default BotController to receive incoming Channel messages. A custom // controller could be used by eliminating this import and creating a new -// RestController. +// org.springframework.web.bind.annotation.RestController. // The default controller is created by the Spring Boot container using // dependency injection. The default route is /api/messages. +// +// See NotifyController in this project for an example on adding a controller. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } /** - * Returns a custom Adapter that provides error handling. + * Returns the Bot for this application. * - * @param configuration The Configuration object to use. - * @return An error handling BotFrameworkHttpAdapter. + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. */ - @Override - public BotFrameworkHttpAdapter getBotFrameworkHttpAdaptor(Configuration configuration) { - return new AdapterWithErrorHandler(configuration); + @Bean + public Bot getBot(ConversationReferences conversationReferences) { + return new ProactiveBot(conversationReferences); } /** @@ -57,4 +63,15 @@ public BotFrameworkHttpAdapter getBotFrameworkHttpAdaptor(Configuration configur public ConversationReferences getConversationReferences() { return new ConversationReferences(); } + + /** + * Returns a custom Adapter that provides error handling. + * + * @param configuration The Configuration object to use. + * @return An error handling BotFrameworkHttpAdapter. + */ + @Override + public BotFrameworkHttpAdapter getBotFrameworkHttpAdaptor(Configuration configuration) { + return new AdapterWithErrorHandler(configuration); + } } diff --git a/samples/16.proactive-messages/src/main/java/com/microsoft/bot/sample/proactive/ProactiveBot.java b/samples/16.proactive-messages/src/main/java/com/microsoft/bot/sample/proactive/ProactiveBot.java index 033f79d35..732bee213 100644 --- a/samples/16.proactive-messages/src/main/java/com/microsoft/bot/sample/proactive/ProactiveBot.java +++ b/samples/16.proactive-messages/src/main/java/com/microsoft/bot/sample/proactive/ProactiveBot.java @@ -10,8 +10,8 @@ import com.microsoft.bot.schema.Activity; import com.microsoft.bot.schema.ChannelAccount; import com.microsoft.bot.schema.ConversationReference; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -28,7 +28,6 @@ * conversation participants with instructions for sending a proactive message. *

*/ -@Component public class ProactiveBot extends ActivityHandler { @Value("${server.port:3978}") private int port; @@ -57,6 +56,10 @@ protected CompletableFuture onMembersAdded( TurnContext turnContext ) { return membersAdded.stream() + .filter( + member -> !StringUtils + .equals(member.getId(), turnContext.getActivity().getRecipient().getId()) + ) .map( channel -> turnContext .sendActivity(MessageFactory.text(String.format(WELCOMEMESSAGE, port))) diff --git a/samples/17.multilingual-bot/src/main/java/com/microsoft/bot/sample/multilingual/Application.java b/samples/17.multilingual-bot/src/main/java/com/microsoft/bot/sample/multilingual/Application.java index c1052cd4b..dafe6ca93 100644 --- a/samples/17.multilingual-bot/src/main/java/com/microsoft/bot/sample/multilingual/Application.java +++ b/samples/17.multilingual-bot/src/main/java/com/microsoft/bot/sample/multilingual/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.multilingual; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.builder.ConversationState; import com.microsoft.bot.builder.Storage; import com.microsoft.bot.builder.UserState; @@ -19,29 +20,43 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - * - * This class also provides overrides for dependency injections. A class that - * extends the {@link com.microsoft.bot.builder.Bot} interface should be - * annotated with @Component. - * - * @see MultiLingualBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication // Use the default BotController to receive incoming Channel messages. A custom // controller could be used by eliminating this import and creating a new -// RestController. +// org.springframework.web.bind.annotation.RestController. // The default controller is created by the Spring Boot container using // dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot(UserState userState) { + return new MultiLingualBot(userState); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/17.multilingual-bot/src/main/java/com/microsoft/bot/sample/multilingual/MultiLingualBot.java b/samples/17.multilingual-bot/src/main/java/com/microsoft/bot/sample/multilingual/MultiLingualBot.java index d549c3f91..39ac8e1b2 100644 --- a/samples/17.multilingual-bot/src/main/java/com/microsoft/bot/sample/multilingual/MultiLingualBot.java +++ b/samples/17.multilingual-bot/src/main/java/com/microsoft/bot/sample/multilingual/MultiLingualBot.java @@ -36,7 +36,6 @@ * More information can be found * here https://docs.microsoft.com/en-us/azure/cognitive-services/translator/translator-info-overview. */ -@Component public class MultiLingualBot extends ActivityHandler { private static final String WELCOME_TEXT = new StringBuilder("This bot will introduce you to translation middleware. ") diff --git a/samples/44.prompt-users-for-input/src/main/java/com/microsoft/bot/sample/promptusersforinput/Application.java b/samples/44.prompt-users-for-input/src/main/java/com/microsoft/bot/sample/promptusersforinput/Application.java index bd12d9ab2..bccd07d93 100644 --- a/samples/44.prompt-users-for-input/src/main/java/com/microsoft/bot/sample/promptusersforinput/Application.java +++ b/samples/44.prompt-users-for-input/src/main/java/com/microsoft/bot/sample/promptusersforinput/Application.java @@ -3,6 +3,9 @@ package com.microsoft.bot.sample.promptusersforinput; +import com.microsoft.bot.builder.Bot; +import com.microsoft.bot.builder.ConversationState; +import com.microsoft.bot.builder.UserState; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,31 +13,49 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - * - * This class also provides overrides for dependency injections. A class that - * extends the {@link com.microsoft.bot.builder.Bot} interface should be - * annotated with @Component. - * - * @see DialogBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication // Use the default BotController to receive incoming Channel messages. A custom // controller could be used by eliminating this import and creating a new -// RestController. +// org.springframework.web.bind.annotation.RestController. // The default controller is created by the Spring Boot container using // dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot( + ConversationState conversationState, + UserState userState + ) { + return new CustomPromptBot(conversationState, userState); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/44.prompt-users-for-input/src/main/java/com/microsoft/bot/sample/promptusersforinput/CustomPromptBot.java b/samples/44.prompt-users-for-input/src/main/java/com/microsoft/bot/sample/promptusersforinput/CustomPromptBot.java index 08320dce6..d761a8e4c 100644 --- a/samples/44.prompt-users-for-input/src/main/java/com/microsoft/bot/sample/promptusersforinput/CustomPromptBot.java +++ b/samples/44.prompt-users-for-input/src/main/java/com/microsoft/bot/sample/promptusersforinput/CustomPromptBot.java @@ -32,7 +32,6 @@ * endpoints within the same project. This can be achieved by defining distinct * Controller types each with dependency on distinct Bot types. */ -@Component public class CustomPromptBot extends ActivityHandler { private final BotState userState; diff --git a/samples/45.state-management/src/main/java/com/microsoft/bot/sample/statemanagement/Application.java b/samples/45.state-management/src/main/java/com/microsoft/bot/sample/statemanagement/Application.java index 73059f165..dfcb90cd9 100644 --- a/samples/45.state-management/src/main/java/com/microsoft/bot/sample/statemanagement/Application.java +++ b/samples/45.state-management/src/main/java/com/microsoft/bot/sample/statemanagement/Application.java @@ -3,6 +3,9 @@ package com.microsoft.bot.sample.statemanagement; +import com.microsoft.bot.builder.Bot; +import com.microsoft.bot.builder.ConversationState; +import com.microsoft.bot.builder.UserState; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,31 +13,49 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - * - * This class also provides overrides for dependency injections. A class that - * extends the {@link com.microsoft.bot.builder.Bot} interface should be - * annotated with @Component. - * - * @see StateManagementBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication // Use the default BotController to receive incoming Channel messages. A custom // controller could be used by eliminating this import and creating a new -// RestController. +// org.springframework.web.bind.annotation.RestController. // The default controller is created by the Spring Boot container using // dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot( + ConversationState conversationState, + UserState userState + ) { + return new StateManagementBot(conversationState, userState); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/45.state-management/src/main/java/com/microsoft/bot/sample/statemanagement/StateManagementBot.java b/samples/45.state-management/src/main/java/com/microsoft/bot/sample/statemanagement/StateManagementBot.java index d4a8b1e7b..2c0737fa2 100644 --- a/samples/45.state-management/src/main/java/com/microsoft/bot/sample/statemanagement/StateManagementBot.java +++ b/samples/45.state-management/src/main/java/com/microsoft/bot/sample/statemanagement/StateManagementBot.java @@ -34,7 +34,6 @@ * @see ConversationData * @see UserProfile */ -@Component public class StateManagementBot extends ActivityHandler { private ConversationState conversationState; private UserState userState; diff --git a/samples/47.inspection/src/main/java/com/microsoft/bot/sample/inspection/Application.java b/samples/47.inspection/src/main/java/com/microsoft/bot/sample/inspection/Application.java index d29cbbcf5..5165c0086 100644 --- a/samples/47.inspection/src/main/java/com/microsoft/bot/sample/inspection/Application.java +++ b/samples/47.inspection/src/main/java/com/microsoft/bot/sample/inspection/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.inspection; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.builder.ConversationState; import com.microsoft.bot.builder.Storage; import com.microsoft.bot.builder.UserState; @@ -18,36 +19,50 @@ import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Primary; -/** - * This is the starting point of the Sprint Boot Bot application. - * - *

- * This class could provide overrides for dependency injections. A class that - * extends the {@link com.microsoft.bot.builder.Bot} interface should be - * annotated with @Component. - *

- * - *

- * See README.md for details on using the InspectionMiddleware. - *

- * - * @see BotDependencyConfiguration - * @see EchoBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication // Use the default BotController to receive incoming Channel messages. A custom // controller could be used by eliminating this import and creating a new -// RestController. +// org.springframework.web.bind.annotation.RestController. // The default controller is created by the Spring Boot container using // dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + * + *

+ * See README.md for details on using the InspectionMiddleware. + *

+ */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot( + ConversationState conversationState, + UserState userState + ) { + return new EchoBot(conversationState, userState); + } + /** * Create an adapter with InspectionMiddleware. * diff --git a/samples/47.inspection/src/main/java/com/microsoft/bot/sample/inspection/EchoBot.java b/samples/47.inspection/src/main/java/com/microsoft/bot/sample/inspection/EchoBot.java index e56969338..e6a9f5cfc 100644 --- a/samples/47.inspection/src/main/java/com/microsoft/bot/sample/inspection/EchoBot.java +++ b/samples/47.inspection/src/main/java/com/microsoft/bot/sample/inspection/EchoBot.java @@ -26,7 +26,6 @@ * See README.md for details on using the InspectionMiddleware. *

*/ -@Component public class EchoBot extends ActivityHandler { private ConversationState conversationState; private UserState userState; diff --git a/samples/50.teams-messaging-extensions-search/pom.xml b/samples/50.teams-messaging-extensions-search/pom.xml index a414d66b6..7a36d7f24 100644 --- a/samples/50.teams-messaging-extensions-search/pom.xml +++ b/samples/50.teams-messaging-extensions-search/pom.xml @@ -75,7 +75,7 @@ org.json json - 20190722 + 20201115 org.apache.logging.log4j diff --git a/samples/50.teams-messaging-extensions-search/src/main/java/com/microsoft/bot/sample/teamssearch/Application.java b/samples/50.teams-messaging-extensions-search/src/main/java/com/microsoft/bot/sample/teamssearch/Application.java index c10fc2f92..e71c04735 100644 --- a/samples/50.teams-messaging-extensions-search/src/main/java/com/microsoft/bot/sample/teamssearch/Application.java +++ b/samples/50.teams-messaging-extensions-search/src/main/java/com/microsoft/bot/sample/teamssearch/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.teamssearch; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,29 +11,46 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - *

- * This class also provides overrides for dependency injections. A class that extends the - * {@link com.microsoft.bot.builder.Bot} interface should be annotated with @Component. - * - * @see TeamsMessagingExtensionsSearchBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication -// Use the default BotController to receive incoming Channel messages. A custom controller -// could be used by eliminating this import and creating a new RestController. The default -// controller is created by the Spring Boot container using dependency injection. The -// default route is /api/messages. +// Use the default BotController to receive incoming Channel messages. A custom +// controller could be used by eliminating this import and creating a new +// org.springframework.web.bind.annotation.RestController. +// The default controller is created by the Spring Boot container using +// dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot() { + return new TeamsMessagingExtensionsSearchBot(); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/50.teams-messaging-extensions-search/src/main/java/com/microsoft/bot/sample/teamssearch/TeamsMessagingExtensionsSearchBot.java b/samples/50.teams-messaging-extensions-search/src/main/java/com/microsoft/bot/sample/teamssearch/TeamsMessagingExtensionsSearchBot.java index f5efe9ad3..3d489f3a8 100644 --- a/samples/50.teams-messaging-extensions-search/src/main/java/com/microsoft/bot/sample/teamssearch/TeamsMessagingExtensionsSearchBot.java +++ b/samples/50.teams-messaging-extensions-search/src/main/java/com/microsoft/bot/sample/teamssearch/TeamsMessagingExtensionsSearchBot.java @@ -15,7 +15,6 @@ import org.json.JSONArray; import org.json.JSONObject; import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; import java.io.IOException; import java.util.*; @@ -28,7 +27,6 @@ * added. This sample illustrates how to build a Search-based Messaging Extension.

*/ -@Component public class TeamsMessagingExtensionsSearchBot extends TeamsActivityHandler { @Override diff --git a/samples/51.teams-messaging-extensions-action/src/main/java/com/microsoft/bot/sample/teamsaction/Application.java b/samples/51.teams-messaging-extensions-action/src/main/java/com/microsoft/bot/sample/teamsaction/Application.java index c49310477..c8e160336 100644 --- a/samples/51.teams-messaging-extensions-action/src/main/java/com/microsoft/bot/sample/teamsaction/Application.java +++ b/samples/51.teams-messaging-extensions-action/src/main/java/com/microsoft/bot/sample/teamsaction/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.teamsaction; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,30 +11,47 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - *

- * This class also provides overrides for dependency injections. A class that extends the {@link - * com.microsoft.bot.builder.Bot} interface should be annotated with @Component. - * - * @see TeamsMessagingExtensionsActionBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication -// Use the default BotController to receive incoming Channel messages. A custom controller -// could be used by eliminating this import and creating a new RestController. The default -// controller is created by the Spring Boot container using dependency injection. The -// default route is /api/messages. +// Use the default BotController to receive incoming Channel messages. A custom +// controller could be used by eliminating this import and creating a new +// org.springframework.web.bind.annotation.RestController. +// The default controller is created by the Spring Boot container using +// dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot() { + return new TeamsMessagingExtensionsActionBot(); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/51.teams-messaging-extensions-action/src/main/java/com/microsoft/bot/sample/teamsaction/TeamsMessagingExtensionsActionBot.java b/samples/51.teams-messaging-extensions-action/src/main/java/com/microsoft/bot/sample/teamsaction/TeamsMessagingExtensionsActionBot.java index 867fb466e..b9ed343a5 100644 --- a/samples/51.teams-messaging-extensions-action/src/main/java/com/microsoft/bot/sample/teamsaction/TeamsMessagingExtensionsActionBot.java +++ b/samples/51.teams-messaging-extensions-action/src/main/java/com/microsoft/bot/sample/teamsaction/TeamsMessagingExtensionsActionBot.java @@ -8,7 +8,6 @@ import com.microsoft.bot.schema.CardImage; import com.microsoft.bot.schema.HeroCard; import com.microsoft.bot.schema.teams.*; -import org.springframework.stereotype.Component; import java.util.*; import java.util.concurrent.CompletableFuture; @@ -20,7 +19,6 @@ * added. There are two basic types of Messaging Extension in Teams: Search-based and Action-based. * This sample illustrates how to build an Action-based Messaging Extension.

*/ -@Component public class TeamsMessagingExtensionsActionBot extends TeamsActivityHandler { @Override protected CompletableFuture onTeamsMessagingExtensionSubmitAction( diff --git a/samples/52.teams-messaging-extensions-search-auth-config/pom.xml b/samples/52.teams-messaging-extensions-search-auth-config/pom.xml index 6ed6f2e37..16b8d7f3c 100644 --- a/samples/52.teams-messaging-extensions-search-auth-config/pom.xml +++ b/samples/52.teams-messaging-extensions-search-auth-config/pom.xml @@ -48,7 +48,7 @@ com.microsoft.graph microsoft-graph - 1.7.1 + 2.6.0 junit @@ -92,7 +92,7 @@ org.json json - 20190722 + 20201115 compile diff --git a/samples/52.teams-messaging-extensions-search-auth-config/src/main/java/com/microsoft/bot/sample/teamssearchauth/Application.java b/samples/52.teams-messaging-extensions-search-auth-config/src/main/java/com/microsoft/bot/sample/teamssearchauth/Application.java index d3bd10099..b8435de1e 100644 --- a/samples/52.teams-messaging-extensions-search-auth-config/src/main/java/com/microsoft/bot/sample/teamssearchauth/Application.java +++ b/samples/52.teams-messaging-extensions-search-auth-config/src/main/java/com/microsoft/bot/sample/teamssearchauth/Application.java @@ -3,6 +3,9 @@ package com.microsoft.bot.sample.teamssearchauth; +import com.microsoft.bot.builder.Bot; +import com.microsoft.bot.builder.ConversationState; +import com.microsoft.bot.builder.UserState; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,29 +13,49 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - * - * This class also provides overrides for dependency injections. A class that extends the - * {@link com.microsoft.bot.builder.Bot} interface should be annotated with @Component. - * - * @see TeamsConversationBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication -// Use the default BotController to receive incoming Channel messages. A custom controller -// could be used by eliminating this import and creating a new RestController. The default -// controller is created by the Spring Boot container using dependency injection. The -// default route is /api/messages. +// Use the default BotController to receive incoming Channel messages. A custom +// controller could be used by eliminating this import and creating a new +// org.springframework.web.bind.annotation.RestController. +// The default controller is created by the Spring Boot container using +// dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot( + Configuration configuration, + UserState userState + ) { + return new TeamsMessagingExtensionsSearchAuthConfigBot(configuration, userState); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/52.teams-messaging-extensions-search-auth-config/src/main/java/com/microsoft/bot/sample/teamssearchauth/TeamsMessagingExtensionsSearchAuthConfigBot.java b/samples/52.teams-messaging-extensions-search-auth-config/src/main/java/com/microsoft/bot/sample/teamssearchauth/TeamsMessagingExtensionsSearchAuthConfigBot.java index 13db8ab3e..956c4f9ad 100644 --- a/samples/52.teams-messaging-extensions-search-auth-config/src/main/java/com/microsoft/bot/sample/teamssearchauth/TeamsMessagingExtensionsSearchAuthConfigBot.java +++ b/samples/52.teams-messaging-extensions-search-auth-config/src/main/java/com/microsoft/bot/sample/teamssearchauth/TeamsMessagingExtensionsSearchAuthConfigBot.java @@ -21,7 +21,6 @@ import org.json.JSONArray; import org.json.JSONObject; import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; import java.io.IOException; import java.io.InputStream; @@ -42,7 +41,6 @@ * #onMembersAdded(List, TurnContext)} will send a greeting to new conversation participants. *

*/ -@Component public class TeamsMessagingExtensionsSearchAuthConfigBot extends TeamsActivityHandler { private String siteUrl; diff --git a/samples/53.teams-messaging-extensions-action-preview/src/main/java/com/microsoft/bot/sample/teamsactionpreview/Application.java b/samples/53.teams-messaging-extensions-action-preview/src/main/java/com/microsoft/bot/sample/teamsactionpreview/Application.java index e36a7a320..bdf7287e5 100644 --- a/samples/53.teams-messaging-extensions-action-preview/src/main/java/com/microsoft/bot/sample/teamsactionpreview/Application.java +++ b/samples/53.teams-messaging-extensions-action-preview/src/main/java/com/microsoft/bot/sample/teamsactionpreview/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.teamsactionpreview; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,29 +11,46 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - * - * This class also provides overrides for dependency injections. A class that extends the - * {@link com.microsoft.bot.builder.Bot} interface should be annotated with @Component. - * - * @see TeamsMessagingExtensionsActionPreviewBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication -// Use the default BotController to receive incoming Channel messages. A custom controller -// could be used by eliminating this import and creating a new RestController. The default -// controller is created by the Spring Boot container using dependency injection. The -// default route is /api/messages. +// Use the default BotController to receive incoming Channel messages. A custom +// controller could be used by eliminating this import and creating a new +// org.springframework.web.bind.annotation.RestController. +// The default controller is created by the Spring Boot container using +// dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot() { + return new TeamsMessagingExtensionsActionPreviewBot(); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/53.teams-messaging-extensions-action-preview/src/main/java/com/microsoft/bot/sample/teamsactionpreview/TeamsMessagingExtensionsActionPreviewBot.java b/samples/53.teams-messaging-extensions-action-preview/src/main/java/com/microsoft/bot/sample/teamsactionpreview/TeamsMessagingExtensionsActionPreviewBot.java index 9330b04d3..f8d28359c 100644 --- a/samples/53.teams-messaging-extensions-action-preview/src/main/java/com/microsoft/bot/sample/teamsactionpreview/TeamsMessagingExtensionsActionPreviewBot.java +++ b/samples/53.teams-messaging-extensions-action-preview/src/main/java/com/microsoft/bot/sample/teamsactionpreview/TeamsMessagingExtensionsActionPreviewBot.java @@ -16,7 +16,6 @@ import com.microsoft.bot.schema.teams.*; import org.apache.commons.io.IOUtils; import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; import java.io.IOException; import java.io.InputStream; @@ -34,7 +33,6 @@ * parameters entered by the user from a Task Module. *

*/ -@Component public class TeamsMessagingExtensionsActionPreviewBot extends TeamsActivityHandler { @Override diff --git a/samples/54.teams-task-module/src/main/java/com/microsoft/bot/sample/teamstaskmodule/Application.java b/samples/54.teams-task-module/src/main/java/com/microsoft/bot/sample/teamstaskmodule/Application.java index 3994a52ce..905caedd8 100644 --- a/samples/54.teams-task-module/src/main/java/com/microsoft/bot/sample/teamstaskmodule/Application.java +++ b/samples/54.teams-task-module/src/main/java/com/microsoft/bot/sample/teamstaskmodule/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.teamstaskmodule; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,30 +11,47 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - *

- * This class also provides overrides for dependency injections. A class that extends the {@link - * com.microsoft.bot.builder.Bot} interface should be annotated with @Component. - * - * @see TeamsTaskModuleBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication -// Use the default BotController to receive incoming Channel messages. A custom controller -// could be used by eliminating this import and creating a new RestController. The default -// controller is created by the Spring Boot container using dependency injection. The -// default route is /api/messages. +// Use the default BotController to receive incoming Channel messages. A custom +// controller could be used by eliminating this import and creating a new +// org.springframework.web.bind.annotation.RestController. +// The default controller is created by the Spring Boot container using +// dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot(Configuration configuration) { + return new TeamsTaskModuleBot(configuration); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/54.teams-task-module/src/main/java/com/microsoft/bot/sample/teamstaskmodule/TeamsTaskModuleBot.java b/samples/54.teams-task-module/src/main/java/com/microsoft/bot/sample/teamstaskmodule/TeamsTaskModuleBot.java index 9cb519aba..6d3065b36 100644 --- a/samples/54.teams-task-module/src/main/java/com/microsoft/bot/sample/teamstaskmodule/TeamsTaskModuleBot.java +++ b/samples/54.teams-task-module/src/main/java/com/microsoft/bot/sample/teamstaskmodule/TeamsTaskModuleBot.java @@ -28,7 +28,6 @@ import java.util.concurrent.CompletionException; import java.util.stream.Collectors; import org.apache.commons.io.IOUtils; -import org.springframework.stereotype.Component; import java.io.InputStream; import java.nio.charset.StandardCharsets; @@ -44,7 +43,6 @@ * user. The {@link #onMembersAdded(List, TurnContext)} will send a greeting to new conversation * participants.

*/ -@Component public class TeamsTaskModuleBot extends TeamsActivityHandler { private final String baseUrl; private final List actions = Arrays.asList( @@ -79,7 +77,7 @@ protected CompletableFuture onTeamsTaskModuleFetch( ) { // Called when the user selects an options from the displayed HeroCard or // AdaptiveCard. The result is the action to perform. - return Async.tryCompletion(() -> { + return Async.wrapBlock(() -> { CardTaskFetchValue value = Serialization .safeGetAs(taskModuleRequest.getData(), CardTaskFetchValue.class); @@ -126,7 +124,7 @@ protected CompletableFuture onTeamsTaskModuleSubmit( TaskModuleRequest taskModuleRequest ) { // Called when data is being returned from the selected option (see `onTeamsTaskModuleFetch'). - return Async.tryCompletion(() -> + return Async.wrapBlock(() -> // Echo the users input back. In a production bot, this is where you'd add behavior in // response to the input. MessageFactory.text( diff --git a/samples/55.teams-link-unfurling/src/main/java/com/microsoft/bot/sample/teamsunfurl/Application.java b/samples/55.teams-link-unfurling/src/main/java/com/microsoft/bot/sample/teamsunfurl/Application.java index 889cf95cb..1d2166b03 100644 --- a/samples/55.teams-link-unfurling/src/main/java/com/microsoft/bot/sample/teamsunfurl/Application.java +++ b/samples/55.teams-link-unfurling/src/main/java/com/microsoft/bot/sample/teamsunfurl/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.teamsunfurl; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,30 +11,47 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - *

- * This class also provides overrides for dependency injections. A class that extends the {@link - * com.microsoft.bot.builder.Bot} interface should be annotated with @Component. - * - * @see LinkUnfurlingBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication -// Use the default BotController to receive incoming Channel messages. A custom controller -// could be used by eliminating this import and creating a new RestController. The default -// controller is created by the Spring Boot container using dependency injection. The -// default route is /api/messages. +// Use the default BotController to receive incoming Channel messages. A custom +// controller could be used by eliminating this import and creating a new +// org.springframework.web.bind.annotation.RestController. +// The default controller is created by the Spring Boot container using +// dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot() { + return new LinkUnfurlingBot(); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/55.teams-link-unfurling/src/main/java/com/microsoft/bot/sample/teamsunfurl/LinkUnfurlingBot.java b/samples/55.teams-link-unfurling/src/main/java/com/microsoft/bot/sample/teamsunfurl/LinkUnfurlingBot.java index fcd9ea09a..969008cb0 100644 --- a/samples/55.teams-link-unfurling/src/main/java/com/microsoft/bot/sample/teamsunfurl/LinkUnfurlingBot.java +++ b/samples/55.teams-link-unfurling/src/main/java/com/microsoft/bot/sample/teamsunfurl/LinkUnfurlingBot.java @@ -14,7 +14,6 @@ import com.microsoft.bot.schema.teams.MessagingExtensionResponse; import com.microsoft.bot.schema.teams.MessagingExtensionResult; import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; import java.util.Collections; import java.util.concurrent.CompletableFuture; @@ -25,7 +24,6 @@ *

This is where application specific logic for interacting with the users would be * added.

*/ -@Component public class LinkUnfurlingBot extends TeamsActivityHandler { @Override diff --git a/samples/56.teams-file-upload/src/main/java/com/microsoft/bot/sample/teamsfileupload/Application.java b/samples/56.teams-file-upload/src/main/java/com/microsoft/bot/sample/teamsfileupload/Application.java index 0ab16e191..a39f0326a 100644 --- a/samples/56.teams-file-upload/src/main/java/com/microsoft/bot/sample/teamsfileupload/Application.java +++ b/samples/56.teams-file-upload/src/main/java/com/microsoft/bot/sample/teamsfileupload/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.teamsfileupload; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,30 +11,47 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - *

- * This class also provides overrides for dependency injections. A class that extends the {@link - * com.microsoft.bot.builder.Bot} interface should be annotated with @Component. - * - * @see TeamsFileUploadBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication -// Use the default BotController to receive incoming Channel messages. A custom controller -// could be used by eliminating this import and creating a new RestController. The default -// controller is created by the Spring Boot container using dependency injection. The -// default route is /api/messages. +// Use the default BotController to receive incoming Channel messages. A custom +// controller could be used by eliminating this import and creating a new +// org.springframework.web.bind.annotation.RestController. +// The default controller is created by the Spring Boot container using +// dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot() { + return new TeamsFileUploadBot(); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/56.teams-file-upload/src/main/java/com/microsoft/bot/sample/teamsfileupload/TeamsFileUploadBot.java b/samples/56.teams-file-upload/src/main/java/com/microsoft/bot/sample/teamsfileupload/TeamsFileUploadBot.java index fb5a2f444..0d602b8c6 100644 --- a/samples/56.teams-file-upload/src/main/java/com/microsoft/bot/sample/teamsfileupload/TeamsFileUploadBot.java +++ b/samples/56.teams-file-upload/src/main/java/com/microsoft/bot/sample/teamsfileupload/TeamsFileUploadBot.java @@ -16,7 +16,6 @@ import com.microsoft.bot.schema.teams.FileDownloadInfo; import com.microsoft.bot.schema.teams.FileInfoCard; import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; import java.io.File; import java.io.FileInputStream; @@ -30,7 +29,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; /** @@ -41,7 +39,6 @@ * user. The {@link #onMembersAdded(List, TurnContext)} will send a greeting to new conversation * participants.

*/ -@Component public class TeamsFileUploadBot extends TeamsActivityHandler { @Override diff --git a/samples/57.teams-conversation-bot/src/main/java/com/microsoft/bot/sample/teamsconversation/Application.java b/samples/57.teams-conversation-bot/src/main/java/com/microsoft/bot/sample/teamsconversation/Application.java index 79eb28415..bace23165 100644 --- a/samples/57.teams-conversation-bot/src/main/java/com/microsoft/bot/sample/teamsconversation/Application.java +++ b/samples/57.teams-conversation-bot/src/main/java/com/microsoft/bot/sample/teamsconversation/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.teamsconversation; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,31 +11,46 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - * - * This class also provides overrides for dependency injections. A class that - * extends the {@link com.microsoft.bot.builder.Bot} interface should be - * annotated with @Component. - * - * @see TeamsConversationBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication // Use the default BotController to receive incoming Channel messages. A custom // controller could be used by eliminating this import and creating a new -// RestController. +// org.springframework.web.bind.annotation.RestController. // The default controller is created by the Spring Boot container using // dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot(Configuration configuration) { + return new TeamsConversationBot(configuration); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/57.teams-conversation-bot/src/main/java/com/microsoft/bot/sample/teamsconversation/TeamsConversationBot.java b/samples/57.teams-conversation-bot/src/main/java/com/microsoft/bot/sample/teamsconversation/TeamsConversationBot.java index fa507b73a..b4f89b657 100644 --- a/samples/57.teams-conversation-bot/src/main/java/com/microsoft/bot/sample/teamsconversation/TeamsConversationBot.java +++ b/samples/57.teams-conversation-bot/src/main/java/com/microsoft/bot/sample/teamsconversation/TeamsConversationBot.java @@ -21,7 +21,6 @@ import com.microsoft.bot.schema.teams.TeamInfo; import com.microsoft.bot.schema.teams.TeamsChannelAccount; import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; import java.net.URLEncoder; import java.util.ArrayList; @@ -41,7 +40,6 @@ * will send a greeting to new conversation participants. *

*/ -@Component public class TeamsConversationBot extends TeamsActivityHandler { private String appId; private String appPassword; diff --git a/samples/58.teams-start-new-thread-in-channel/src/main/java/com/microsoft/bot/sample/teamsstartnewthread/Application.java b/samples/58.teams-start-new-thread-in-channel/src/main/java/com/microsoft/bot/sample/teamsstartnewthread/Application.java index 6415a327d..cafc946a3 100644 --- a/samples/58.teams-start-new-thread-in-channel/src/main/java/com/microsoft/bot/sample/teamsstartnewthread/Application.java +++ b/samples/58.teams-start-new-thread-in-channel/src/main/java/com/microsoft/bot/sample/teamsstartnewthread/Application.java @@ -3,6 +3,7 @@ package com.microsoft.bot.sample.teamsstartnewthread; +import com.microsoft.bot.builder.Bot; import com.microsoft.bot.integration.AdapterWithErrorHandler; import com.microsoft.bot.integration.BotFrameworkHttpAdapter; import com.microsoft.bot.integration.Configuration; @@ -10,30 +11,47 @@ import com.microsoft.bot.integration.spring.BotDependencyConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -/** - * This is the starting point of the Sprint Boot Bot application. - *

- * This class also provides overrides for dependency injections. A class that extends the {@link - * com.microsoft.bot.builder.Bot} interface should be annotated with @Component. - * - * @see TeamsStartNewThreadBot - */ +// +// This is the starting point of the Sprint Boot Bot application. +// @SpringBootApplication -// Use the default BotController to receive incoming Channel messages. A custom controller -// could be used by eliminating this import and creating a new RestController. The default -// controller is created by the Spring Boot container using dependency injection. The -// default route is /api/messages. +// Use the default BotController to receive incoming Channel messages. A custom +// controller could be used by eliminating this import and creating a new +// org.springframework.web.bind.annotation.RestController. +// The default controller is created by the Spring Boot container using +// dependency injection. The default route is /api/messages. @Import({BotController.class}) +/** + * This class extends the BotDependencyConfiguration which provides the default + * implementations for a Bot application. The Application class should + * override methods in order to provide custom implementations. + */ public class Application extends BotDependencyConfiguration { public static void main(String[] args) { SpringApplication.run(Application.class, args); } + /** + * Returns the Bot for this application. + * + *

+ * The @Component annotation could be used on the Bot class instead of this method + * with the @Bean annotation. + *

+ * + * @return The Bot implementation for this application. + */ + @Bean + public Bot getBot(Configuration configuration) { + return new TeamsStartNewThreadBot(configuration); + } + /** * Returns a custom Adapter that provides error handling. * diff --git a/samples/58.teams-start-new-thread-in-channel/src/main/java/com/microsoft/bot/sample/teamsstartnewthread/TeamsStartNewThreadBot.java b/samples/58.teams-start-new-thread-in-channel/src/main/java/com/microsoft/bot/sample/teamsstartnewthread/TeamsStartNewThreadBot.java index ef2de3748..ec2e0d8ae 100644 --- a/samples/58.teams-start-new-thread-in-channel/src/main/java/com/microsoft/bot/sample/teamsstartnewthread/TeamsStartNewThreadBot.java +++ b/samples/58.teams-start-new-thread-in-channel/src/main/java/com/microsoft/bot/sample/teamsstartnewthread/TeamsStartNewThreadBot.java @@ -14,7 +14,6 @@ import com.microsoft.bot.schema.Activity; import com.microsoft.bot.schema.ConversationParameters; import com.microsoft.bot.schema.ConversationReference; -import org.springframework.stereotype.Component; import java.util.concurrent.CompletableFuture; @@ -25,7 +24,6 @@ * added. For this sample, the {@link #onMessageActivity(TurnContext)} creates a thread in a Teams channel. *

*/ -@Component public class TeamsStartNewThreadBot extends TeamsActivityHandler { private String appId;