Tag: botframework

提示inputvalidation

上下文是Node上的MS Bot框架。 我需要自定义validation来自Prompt.text或Prompt.Number的input。 我一直在看例子和文档。 我用DialogAction.validatePrompt()实现了一个快速的例子,它工作正常,但有问题,我不能(至less我不知道如何)自定义消息,以防止validation失败。 validation可能由于许多原因而失败,并且能够基于失败原因select响应消息将是非常好的。 我也看到了基本的自定义提示示例: (https://github.com/Microsoft/BotBuilder/tree/master/Node/examples/basics-customPrompt) ,它使用和IntentDialog获得所需的行为。 它还提到它是基本validation的示例的替代品。 我的问题是: 哪一个是推荐使用,validatedPrompt或IntentDialog方法? validatedPrompt()将被弃用吗? validatedPrompt()是否提供自定义消息的机制?

什么可能会阻止EC2托pipe的机器人在Microsoft Bot Framework上回复消息?

我有一个托pipe在AWS EC2上的Node.JS机器人,在Chrome / Firefox / Safari中有一个有效的Comodo SSL证书,并且在我的端点的bot框架上configuration了一个机器人。 当我在https://dev.botframework.com启动僵尸框架控制台时,我可以点击“testing”button,它会显示“已接受”。 我也可以在embedded式networking聊天中发送消息,并且在AWS上login我的僵尸工具时显示正在接收的消息,并且通过调用session.send()发回消息…但是从未出现返回消息回到networking聊天。 在服务器端或bot框架错误查看器中没有logging任何错误,该消息似乎是悄无声息地丢弃。 我添加了一个Skype频道,并在Skype中获得完全相同的行为。 当我将相同的代码部署到Azure Web App时,它在所有方向都可以正常工作。 我完全卡住了…我无法弄清楚什么可以阻止返回消息回来,我看不到什么步骤接下来进行故障排除。 从文档中我们不清楚如何将消息发送回框架,是否有一个特定的主机/ IP /端口,我应该从EC2中进行探测,看看是否有什么事情是阻碍的? 我的AWS安全组中没有出站规则会阻止连接,例如“telnet directline.botframework.com 80”成功。

如何更改Bot / Skype通道收到的消息文本格式

机器人仿真程序工作正常的明文响应,但是当我尝试通过Skype做同样的机器人响应; 我不明白,请再试一次 我发现Skype自动格式化电子邮件,将其封装在XMM格式的标签中,我有点被卡住了。 我认为将传入的文本格式更改为纯文本可以解决这个问题。 我发现这在Github上类似的问题,但这是在C#上,我使用Node.JS. 如何将bot / skype频道的默认文本格式更改为纯文本而不是降价,Skype自动格式化不会发生? 根据@ ezequiel-jadib 更新 ,但仍然没有运气。 也许我做错了? // bot.js bot.use(…[logger]); // logger.js module.exports = exports = { receive: (e, next) => { e.textFormat('plain'); logConversation(e); next(); }, send: (e, next) => { logConversation(e); next(); } };

使用节点js从另一个对话中调用qnamaker服务

bot.dialog('/', [ function (session , next) { session.send('Hi Ask me some questions!'); session.beginDialog('/qna'); } ]); bot.dialog('/qna', basicQnAMakerDialog); 问题是,如果我input“嗨”,它会直接传递第一条消息的内容.. 例如 我:“你好” 机器人:“嗨,问我一些问题!” 机器人:“对不起,我不明白,你可能想要重述你的问题” 但我只是想展示Ask me some question ,然后等待下一个问题。 从QnA制造商获取结果后,再次提示'嗨问我问题',我只想发送一次

m4a / mp3文件转换为Bing Speech API的wav文件

必应语音API只接受wav文件,所以我一直在尝试将m4a(Skype)和mp3(Facebook)audio文件转换为wav格式。 我在node.js中使用fluent-ffmpeg 现在,我正在下载audio文件,将其转换为wav并返回pipe道输出以供使用。 if (attachment.contentType === 'audio/x-m4a') { request.get(attachment.contentUrl).pipe(fs.createWriteStream('file.m4a')); var command = ffmpeg('file.m4a') .toFormat('wav') .on('error', function (err) { console.log('An error occurred: ' + err.message); }) .on('progress', function (progress) { // console.log(JSON.stringify(progress)); console.log('Processing: ' + progress.targetSize + ' KB converted'); }) .on('end', function () { console.log('Processing finished !'); }); return command.pipe(); } 现在,当我通过我的电脑上的botframework-emulator发送m4a文件时,转换工作。 但是,当我指定我的电脑作为terminal(通过ngrok),并尝试从漫游框架开发人员的聊天testing中发送m4a文件时 ,ffmpeg返回一个错误: An […]

如何find在dev.botframework.com上报告的直接线路错误的根本原因

我们使用Direct Line 3.0 API来testing用NodeJS编写的Microsoft Bot Framework机器人。 无论负载如何,在等待我们期望回来的活动时,我们会在安全带中间歇性地超时。 这些与dev.botframework.com中的bot相关的问题是一致的。 他们看起来像这样: 这个消息并没有说明发送消息给我们的错误。 就我所知,我们的服务器端和客户端都没有报告任何错误,我们总是以20x状态进行响应,而且我只能假设错误发生在bot框架和我们的服务之间。 我怎样才能找出发生错误的错误是什么,或者它认为接收到了什么状态码?

如何使用Bot框架自动将用户添加到对话?

我使用conversationUpdate()来让我的机器人在用我的聊天机器加载网页时自动地迎接用户。 然后它启动一个选项菜单的根对话框。 看下面的代码片段。 问题是,一旦用户join对话, /对话框会自动再次被调用,并且用户正在看到菜单select的重复对话框。 一旦用户join会话,如何停止启动根对话框? 如果我不能,我该如何解决这个问题? 我的想法是强制将用户添加到对话的同时作为机器人。 不知道这是否有道理。 首先在这里,所以不知道如何做到这一点。 bot.on('conversationUpdate', function(activity) { if (activity.membersAdded) { const hello = new builder.Message() .address(activity.address) .text("Welcome…."); activity.membersAdded.forEach(function(identity) { // say hello only when bot joins and not when user joins if (identity.id === activity.address.bot.id) { bot.send(hello); bot.beginDialog(activity.address, '*:/'); } }); } });

Botframework – Bot与Emulator正常工作,但没有任何发布的频道

我一直在用nodejs bot框架进行修改。 我成功地创build了一个发送主动消息的机器人,但它只是在emulator工作。 它可以在我的本地服务器以及我的远程服务器上运行,位于https://chatobot.ngrok.io/api/messages 到现在为止还挺好。 但是,在完成https://dev.botframework.com的注册过程并在Skype频道和电报频道上发布后,什么都不会发生。 机器人不会回复,也不会触发我的服务器端点。 我使用了botframework网站上的“ Testfunction。 它发送我的消息,但它似乎永远不会到达我的服务器。 另外,据我所知,这并没有给我任何错误。 但是,当我连接到我的远程服务器使用Emulator一切正常…! 我做了什么: 确保我的MS_APP_ID和MS_APP_PWD正确设置为环境variables。 通过使用nginx (使用自签名证书)和后来的ngrok (只是为了确保它不是我自己的证书的问题)通过HTTPS服务来启动我的api 。 试图添加更多的渠道(松弛和不是),以确保它不是特定于Skype或networking聊天的问题。 在SO上查找类似的问题。 有很多,但通常这些人能够通过更新APP_ID和APP_PWD(我也尝试过)来解决他们的问题,或者甚至以错误的forms得到某种反馈……不幸的是,这不是我的情况:| PS:不介意我的MS Paint技能。 PS2:这是我的代码https://github.com/assimoes/chatobot

使用bot框架和Vega库在聊天机器人中显示图表

我正在使用Microsoft Bot Framework和Vega库构build数据可视化机器人。 我遵循github中的代码 。 谁能告诉我我的代码有什么问题? 但是,当我运行我的代码时出现错误: / – waterfall() step 1 of 1 / – Session.send() (node:11934) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: Cannot read property 'getContext' of null / – Session.sendBatch() sending 1 message(s) 这是我的代码: var sendVega = require('./botbuilder-vega'); // skip the setup server & create session process function sendVegaChart(session){ var […]

将使用Microsoft Bot Framework构build的Bot连接到其他连接器/通道

我已经使用Microsoft bot框架构build了一个bot。 现在我想将它连接到Microsoft bot连接器不支持的通道。 但是,我需要构build一个接口(或者一个bot连接器的替代品)来连接这些通道。 但是,当我使用Bot框架SDK(NodeJs)时,我需要最好的方法将我的bot引擎的端点暴露给其他连接器/通道。