我想创建微软BotBuilder 遵循本教程。但与v3相比,这似乎太复杂了。(顺便说一句:从涵盖75%的文章的3种身份验证开始一个教程并不是一个好迹象)
因此,我遵循了EchoBot示例(我选择了MultiTenant,因为我的服务器在外部,而且它似乎是覆盖最广的):
const credentialsFactory = new BotBuilder.ConfigurationServiceClientCredentialFactory({
MicrosoftAppId: '***',
MicrosoftAppPassword: '***',
MicrosoftAppType: 'MultiTenant',
});
const botFrameworkAuthentication = BotBuilder.createBotFrameworkAuthenticationFromConfiguration(null, credentialsFactory);
const onTurnErrorHandler = async (context, error) => { /* for errors */ }
const adapter = new BotBuilder.CloudAdapter(botFrameworkAuthentication);
adapter.onTurnError = onTurnErrorHandler;问题:
isValidAppId()和isAuthenticationDisabled()是唯一可用的方法,看起来不错。MicrosoftAppPassword?根据文档,我必须单击manage,然后创建一个value/secret对。我应该使用value吗?还是secret?为什么没有人被命名为password?不管怎么说都不管用..。为了测试它是否有效,我遵循示例::
我正确地接收了消息,然后尝试执行一些身份验证/parisng(我假设):
await adapter.process(msg.req, msg.res, (context) => {
/* do some stuff */
});但是它失败了,出现了一个非常明显的错误:
Error: 1 validation issue(s)
Issue #0: custom_error at [[root]]
Response我认为,这些错误与身份验证问题有关,因为我不知道如何设置密码。我想我必须通过这个CloudAdapter才能得到一个解析的context并能够发送消息。
编辑07/05/2022:
我在这里使用AppId:

我点击“管理”,但是AppPassword在哪里?

编辑12/05/2022:
使用cURL,我设法验证appID和appPassword (秘密的值(由星星隐藏))。
BotBuilder正在混合通信堆栈(HTTP / WebSocket)和逻辑堆栈(转向会话)。我觉得这是个坏习惯,但我想出了个解决办法:
BotFrameworkAdapter而不是CloudAdpateradapter.processActivity()而不是adapter.process()适配器仍然希望结束()请求并设置不推荐的值,但它以Node-RED方式工作。context处理多次调用sendActivity() anywhere的所有要求。
发布于 2022-05-06 09:01:48
要回答你的第二个问题,请浏览链接:https://learn.microsoft.com/en-us/azure/bot-service/bot-service-quickstart-registration?view=azure-bot-service-4.0&tabs=multitenant
要回答您的第一个问题,请检查禁用并启用身份验证来测试应用程序:https://learn.microsoft.com/en-us/azure/bot-service/bot-service-troubleshoot-authentication-problems?view=azure-bot-service-4.0&tabs=csharp
发布于 2022-05-06 20:58:37
只要获得密码,当您创建一个新的多租户Azure Bot资源时,应用密码就会进入旁边创建的Azure密钥库。AppId和AppPassword是由Azure随机生成的。您可以在正确的资源组中的Azure门户中的密钥库中获取它们。
如果希望使用CLI手动创建资源并定义自己的密码,则可以为部署机器人使用此docs页面。确保您选择了正确的选项卡。我已经预选了C#和多租户在一个新的资源组为上述链接.
单个租户用于限制bot与同一承租者中Azure资源的连接,而用户分配的托管标识是如果您希望在bot的资源中使用Azure托管标识,而不是为每个资源设置密码的话。
您应该能够简单地将AppId和AppPassword添加到回波机器人示例中并进行部署。
https://stackoverflow.com/questions/72131187
复制相似问题