【问题标题】:authorized code 401 using spring boot to create a bot授权码401使用spring boot创建机器人
【发布时间】:2019-05-18 07:33:11
【问题描述】:

我使用 spring boot 和 botbuilder-java 库在微软团队中创建一个机器人。我在机器人框架上注册了我的机器人。我使用 ngrok 制作代理,以便 bot 框架可以访问我的本地端口。然后当我发送请求然后响应时。我得到了 com.microsoft.bot.connector.models.ErrorResponseException: 状态码 401,

这是我遵循的链接。 https://medium.com/@oleksiydzhus/how-to-build-a-bot-with-microsoft-bot-framework-and-spring-boot-558fb32b7d3c

我已经有了 appId 和 appPassword,但是当我发送响应时,currentToken 为空。我想也许这就是问题所在。但我不知道如何配置它。


@Configuration
@ComponentScan
@EnableAutoConfiguration
public class BotConfig {

    @Autowired
    private Environment environment;

    @Bean(name = "credentials")
    public MicrosoftAppCredentials getCredentials() {
        return new MicrosoftAppCredentials("6b157339-e091-4c33-b9e3-7e7e035d006e", "<password>");
    }

    @Bean
    public List<ResourceResponse> getResponses(){
        return new ArrayList<>();
    }
}

这是我的处理程序


@RestController
@RequestMapping(path = "/api/messages")
public class BotMessagesHandler {

    @Autowired
    private MicrosoftAppCredentials credentials;

    @Autowired
    private List<ResourceResponse> responses;

    @PostMapping(path = "")
    public List<ResourceResponse> create(@RequestBody @Valid
                                         @JsonDeserialize(using = DateTimeDeserializer.class) Activity activity) {

        ConnectorClient connector =
                new ConnectorClientImpl(activity.serviceUrl(), credentials);


        Activity echoActivity = ActivityCreator.createEchoActivity(activity);
        Activity checkedActivity = ActivityCreator.createSpellCheckedActivity(activity);
        Conversations conversation = ConversationCreator.createResponseConversation(connector);

        ResourceResponse echoResponse =
                ResourceResponseSender.send(conversation, activity, echoActivity);
        responses.add(echoResponse);

        ResourceResponse spellCheckedResponse =
                ResourceResponseSender.send(conversation, activity, checkedActivity);
        responses.add(spellCheckedResponse);

        return responses;
    }
}
com.microsoft.bot.connector.models.ErrorResponseException: Status code 401, 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_211]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_211]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_211]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_211]
    at com.microsoft.rest.ServiceResponseBuilder.build(ServiceResponseBuilder.java:122) ~[client-runtime-1.2.1.jar:na]
    at com.microsoft.azure.AzureResponseBuilder.build(AzureResponseBuilder.java:56) ~[azure-client-runtime-1.2.1.jar:na]
    at com.microsoft.bot.connector.implementation.ConversationsImpl.sendToConversationDelegate(ConversationsImpl.java:510) ~[bot-connector-4.0.0-a1.jar:na]
    at com.microsoft.bot.connector.implementation.ConversationsImpl.access$200(ConversationsImpl.java:48) ~[bot-connector-4.0.0-a1.jar:na]
    at com.microsoft.bot.connector.implementation.ConversationsImpl$12.call(ConversationsImpl.java:495) ~[bot-connector-4.0.0-a1.jar:na]
    at com.microsoft.bot.connector.implementation.ConversationsImpl$12.call(ConversationsImpl.java:491) ~[bot-connector-4.0.0-a1.jar:na]

【问题讨论】:

    标签: java botframework


    【解决方案1】:

    按照您链接的教程中的说明,我能够重现您的错误。我注意到它快一岁了。您可以在 MyGet 上找到更多最新版本的 Bot Builder Java:https://botbuilder.myget.org/gallery/botbuilder-v4-java-daily

    当我尝试从 Bot Builder Java GitHub 存储库运行示例时,我能够在 Teams 中毫无问题地与之交谈。为什么不试一试呢? https://github.com/microsoft/botbuilder-java/tree/master/samples/bot-connector-sample

    【讨论】:

    • 谢谢,我按照 Bot Builder Java GitHub repo 一样,它的工作。
    猜你喜欢
    • 2021-04-07
    • 2021-01-24
    • 2022-01-21
    • 2020-11-22
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多