Java版本的Bot Framework SDK
微軟為了鼓勵(lì)Java開(kāi)發(fā)人員開(kāi)發(fā)bot,在上個(gè)月推出了Java的Bot SDK v4.6版本,目前還在Preview版本,相信不用多久就可以趕上其他版本了。
我的java還停留在 n 年前的水平,但是處于好奇,決定玩一下這套sdk。
這套sdk目前建議的java版本是 1.8或者以上,我們打開(kāi)最簡(jiǎn)單的EchoBot,可以看到入口的application如下:
public class Application extends BotDependencyConfiguration {public static void main(String[] args) {SpringApplication.run(Application.class, args);}@Overridepublic BotFrameworkHttpAdapter getBotFrameworkHttpAdaptor(Configuration configuration) {return new AdapterWithErrorHandler(configuration);} }使用spring,并且通過(guò)重載getBotFrameworkHttpAdaptor方法來(lái)讓bot framework獲取一個(gè)Adapter。
核心的EchoBot類從ActivityHandler繼承,當(dāng)用戶發(fā)送一條消息的時(shí)候,onMessageActivity()函數(shù)會(huì)被調(diào)用,通過(guò)參數(shù)turnContext可以獲取當(dāng)前的activity信息,并且和c# sdk類似,通過(guò)調(diào)用turnContext.sendActivity()來(lái)回復(fù)消息。
@Component public class EchoBot extends ActivityHandler {@Overrideprotected CompletableFuture<Void> onMessageActivity(TurnContext turnContext) {return turnContext.sendActivity(MessageFactory.text("Echo: " + turnContext.getActivity().getText())).thenApply(sendResult -> null);}@Overrideprotected CompletableFuture<Void> onMembersAdded(List<ChannelAccount> membersAdded,TurnContext turnContext) {return membersAdded.stream().filter(member -> !StringUtils.equals(member.getId(), turnContext.getActivity().getRecipient().getId())).map(channel -> turnContext.sendActivity(MessageFactory.text("Hello and welcome!"))).collect(CompletableFutures.toFutureList()).thenApply(resourceResponses -> null);} }在EchoBot里還重載了onMembersAdded()方法,當(dāng)有一個(gè)用戶加入會(huì)話時(shí),這個(gè)方法會(huì)被調(diào)用,但是由于java像c#那種簡(jiǎn)單的property語(yǔ)法和await/async語(yǔ)法,所以可以看到整個(gè)方法代碼讀起來(lái)有點(diǎn)累。 :(
總體上看,java sdk和其他c#, js sdk在術(shù)語(yǔ)和結(jié)構(gòu)上基本完全一致,有其他語(yǔ)言bot sdk開(kāi)發(fā)經(jīng)驗(yàn)的人,使用java應(yīng)該也就是一兩天的適應(yīng)過(guò)程。希望java sdk也能盡快趕上其他語(yǔ)言的sdk。
參考:?Bot SDK Java repo
總結(jié)
以上是生活随笔為你收集整理的Java版本的Bot Framework SDK的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HTTP请求的响应头部Vary的理解
- 下一篇: 练字在现代社会的意义还大不大,尤其是电脑