Articles of botframework

明确分配用户ID

我主持一个WebChat ,我的JS代码看起来像, var user = { id: params["userid"] || "myuser", name: params["username"] || "You" }; 显示WebChat后,用户将看到SignIn选项。 用户使用Azure AD完成login过程,并使用适当的JWT令牌更新状态。 所以现在的机器人知道实际的用户和他/她的身份。 有没有办法用AAD收到的身份覆盖myuser ? 这将有助于保持具有特定用户身份的活动和状态,而不是使用myuser存储所有活动/状态

Skype:Bot没有回复

我正在用Bot生成器框架开发我的第一个NodeJS bot。 僵尸在模拟器上成功运行,但当我注册僵尸程序,并试图在Skypetesting – 它不回复任何东西。 更多信息 在Bot注册期间,我给了ngrok.exe给出的端点url和附加的“/ api / messages” 我在网上添加了Skype频道 – bot节目 app.js(包含restify)&ngrok都在localhost上运行 我在连接器里面添加了Microsoft App Id,如下所示: “` var connector = new builder.ChatConnector({ //appId: process.env.MICROSOFT_APP_ID, //appPassword: process.env.MICROSOFT_APP_PASSWORD appId: MY APP ID HERE, appPassword: MY APP PASSWORD HERE }); “` 任何帮助表示赞赏! 很高兴提供更多的细节,如果需要的话。

如何在使用botframework的luisaction绑定的同时保持privateConversation数据?

我跟着这个 ,用在我的机器人。 有一件事我不明白是如何坚持用户数据。 例如: user: what is my status? bot: could you provide your id? user: its xxx bot: its in so and so stage. 现在如果用户提出同样的问题机器人不应该要求身份证(应直接回答) user: what is my current status? bot: what is your id? <——— this is not expected of the bot.

502(坏的网关)时,做一个POST机器人

我只用HTTP-GET和普通的JS构build了一个非常简单的交互式BOT。 有时候我有BOT做时间密集型的处理,需要40秒才能回复。 在这种情况下,我得到了POST的下面的响应。 那么,这是预期的回报? 我做了什么样的改变,才能得到有意义的答复,而不是把这种情况看作是真正的错误? 任何其他build议来处理这种情况? 谢谢! 502 (Bad Gateway) { "error": { "code": "ServiceError", "message": "Failed to send activity: bot returned an error" } } 发布请求 //send token and message function sendMessage() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var responseObj = […]

Bot在本地工作,但对Bot服务没有反应

我有一个机器人通过VSTS持续集成。 僵尸程序正在运行一个应用程序服务计划(我最近才发现消费计划机器人作为function运行)。我在消费云中有一个工作的机器人,但它限制了我的扩展能力。 对于这个机器人,我做了一个干净的部署提示机器人 – 但试图在云中运行产生了一个对话框错误。 所以我评论了Prompt代码,并把它变成了一个echo机器人。 本地运行良好,但服务没有响应。 尝试login到Kudu控制台并运行手动npm安装,但没有帮助。 尝试手动运行僵尸程序导致错误的请求错误。 节点版本6.11.2。 文件树包括初始部署时由Bot Service提供的所有文件,包括iisnode和web.config。 这是我的app.js和package.json。 有没有其他人遇到问题与本地有效的僵尸没有响应云部署? 任何技巧,我还没有尝试过? 更新:通过Azure日志stream发现此错误,但不知道如何解决它。 错误:请求到“ https://state.botframework.com/v3/botstate/webchat/conversations/(snip) ”失败:[500] Request._callback发生内部服务器错误 var dotenv = require('dotenv'); dotenv.load(); var restify = require('restify'); var builder = require('botbuilder'); // Setup Restify Server var server = restify.createServer(); server.listen(process.env.port || process.env.PORT || 3978, function () { console.log('%s listening to %s', server.name, server.url); […]

使用LUIS.ai在botframework中的对话框

我有一段代码可以在我的本地机器上完美工作,并且与LUIS集成时很奇怪。 这是一个简单的对话,redirect到另一个对话框: // Modelo de datos cargado en luis.ai var recognizer = new builder.LuisRecognizer(process.env.LUIS_MODEL_URL); bot.recognizer(recognizer); //first intent, greeting intent to say hi to the user bot.dialog('greetings', [ function (session) { var greetings = ["¡Hola!", "Bonjour amigo!", "zdravstvuyte! (Así se dice hola en ruso)"]; var pickAGreeting = function () { var rnd_greeting = greetings[Math.floor(Math.random() * 4)]; […]

将自适应卡转换为通道

微软发布了自适应卡的新概念。 除了HeroCard和其他消息types外,Microsoft Bot Framework 还在Botbuilder中实现自适应卡 。 当我在一个botbuilder消息上调用Message.toMessage()时 ,我得到一个带有content-type application/vnd.microsoft.card.adaptive的JSON 如何将botbuilder消息(或自适应卡片JSON)转换为与给定频道(Facebook,Slack,…)兼容的JSON? BotFramework如何做? 微软Visualizer如何做? 谢谢 !

在一个机器人中使用多个QnA服务

我有多个QnA服务运行,每个都有自己的knowledgeBaseId和subscriptionKey 。 我想在一个聊天机器中使用它们,我写了一段代码,它接受用户的input并指定正确的知识库细节。 但是,我无法使第二个QnA服务变为活动状态,并且该机器人仅链接到第一个服务。 这里可能会出现什么问题? 示例代码: var knowledgeId = "FIRST_QNA_SERVICE_KNOWLEDGE_ID"; var subscriptionId = "FIRST_QNA_SERVICE_SUBSCRIPTION_ID"; var bot = new builder.UniversalBot(connector); var qnarecognizer = new cognitiveservices.QnAMakerRecognizer({ knowledgeBaseId: knowledgeId, subscriptionKey: subscriptionId, qnaThreshold:0.3, top:1}); var intentrecognizer = new builder.IntentDialog(); var intents = new builder.IntentDialog({ recognizers: [intentrecognizer, qnarecognizer] }); bot.dialog('/', intents); intents.matches('qna', [ function (session, args, next) { args.entities.forEach(function(element) { […]

我的chatbot(MS Botframework)如何忽略Slack频道中未提及的消息? BOT

我正在使用NodeJS的Micrososft Botframework – LUIS.ai开发一个聊天机器人,并使用对话框在Slack中进行整合。 现在机器人在DM窗口上工作正常,但是当被添加到一个闲置的通道时,即使没有提到,机器人也会回复所有的消息。 我知道机器人应该能够听到所有的消息,但是我怎么能把programmaticaly定义为只在提到的时候才在一个松弛的通道中进行交互呢? 有没有方法可以确定对话是来自频道还是来自直接的讯息? 这是对话框的代码片段样例 bot.dialog('intentName', [ function (session, args, next) { var intent = args.intent; session.dialogData.item = {}; var item= builder.EntityRecognizer.findEntity(intent.entities, 'myEntity'); session.dialogData.itemNumber = item.entity; // Prompt for title if (!session.dialogData.item) { builder.Prompts.text(session, 'What are you looking for?'); } else { next(); } }, function (session, results, next) { if (results.response) […]

在MS Bot Framework机器人中获取Azure Active Directory用户的数据

我在Azure帐户上部署了一个用Node.js编写的Cortana机器人。 僵尸程序使用Cortana通道并打开“Connected Services”(所以我可以使用Azure Active Directory中的帐户login僵尸工具)。 login工作正常。 我的问题是,现在我不知道如何获得有关login的用户(例如电子邮件地址)在我的机器人的信息。 我猜我需要从会话数据中获取一些令牌,然后发送一个API请求,请求Azure获取用户的数据? Node.js有这个botauth的例子,但是运行它的指令已经过时了。