Tag: 直线机器人框架

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 = […]

DirectLine客户端从websocket获取来自bot的多个响应

我正在开发一个使用Swagger和直接在Node.js上跟随这个例子的聊天机器人:( https://github.com/Microsoft/BotBuilder-Samples/tree/master/Node/core-DirectLineWebSockets ) 每次我发送一条消息到机器人,我收到以前发送的每个消息的多个响应。 例: 消息发送1 回应1 消息发送2 回应2 回应2 消息发送3 回应3 回应3 回应3 用例与这个问题类似,但用websocket。 ( DirectLineJS接收Bot回复的副本 ) 发信息: // send message to bot function sendMessages(client, conversationId, utterance) { logger.debug("*** SEND A MESSAGE "); client.Conversations.Conversations_PostActivity( { conversationId: conversationId, activity: { textFormat: config.activity.textFrormat, text: utterance, type: config.activity.type, from: { id: callSid } } }).catch(function (err) { […]

我们如何为Microsoft Bot Framework中的不同用户维护不同的会话?

我已经创build了一个使用Bot框架的机器人,并想知道在使用Directline时是否有任何方法为不同的用户维护不同的会话。 在使用Skype通道时,用户会话是为个人用户维护的,我希望在我的directline客户端中实现相同的function。 在我的情况下,以前的会话数据正在被下一个会话数据覆盖。 我正在使用Node.js来构build机器人。

如何使用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, '*:/'); } }); } });