Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为机器人响应添加延迟,使其在Microsoft bot Framework Node.js中更真实?_Node.js_Botframework_Azure Bot Service - Fatal编程技术网

如何为机器人响应添加延迟,使其在Microsoft bot Framework Node.js中更真实?

如何为机器人响应添加延迟,使其在Microsoft bot Framework Node.js中更真实?,node.js,botframework,azure-bot-service,Node.js,Botframework,Azure Bot Service,有没有办法给回复增加一点延迟?所以机器人感觉更真实,就像是在打字?就一点点。 现在测试人员的反应是速度太快了。 这很好,但是…感觉太“冷”。用一点时间让机器人看起来好像在打字,它会感觉更温暖和模糊:) 我需要在两行之间增加延迟 session.send("Account created successfully"); session.send("Please login"); 下面是完整的代码 var restify = require('restify'); var buil

有没有办法给回复增加一点延迟?所以机器人感觉更真实,就像是在打字?就一点点。 现在测试人员的反应是速度太快了。 这很好,但是…感觉太“冷”。用一点时间让机器人看起来好像在打字,它会感觉更温暖和模糊:)

我需要在两行之间增加延迟

    session.send("Account created successfully");
    session.send("Please login");
下面是完整的代码

var restify = require('restify');
var builder = require('botbuilder');
var botbuilder_azure = require("botbuilder-azure");

// 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); 
});

// Create chat connector for communicating with the Bot Framework Service
var connector = new builder.ChatConnector({
    appId: process.env.MicrosoftAppId,
    appPassword: process.env.MicrosoftAppPassword,
    openIdMetadata: process.env.BotOpenIdMetadata 
});

// Listen for messages from users 
server.post('/api/messages', connector.listen());

var bot = new builder.UniversalBot(connector);

bot.on('conversationUpdate', (message) => {
    if (message.membersAdded) {
        message.membersAdded.forEach(function (identity) {
            if (identity.id === message.address.bot.id) {
                bot.beginDialog(message.address, 'accountCheck');
            }
        });
    }
});

bot.dialog('accountCheck', [
    function (session, results, next) {

         session.send("Account created successfully");
         session.send("Please login");

    }
]).endConversationAction("stop",
    "",
    {
        matches: /^cancel$|^goodbye$|^exit|^stop|^close/i
        // confirmPrompt: "This will cancel your order. Are you sure?"
    }
);

您可以在客户端或后端使用
timeout

function (session, results, next) {

    session.send("Account created successfully. Wait 10 seconds...");
    setTimeout(function() {
            session.send("Please login");
    }, 10000); //10 seconds
}

您可以只发送一个输入指示器,而不是添加延迟

session.sendTyping();

有关详细信息,请访问您可以使用
session.delay()

bot.dialog('accountCheck'[
功能(会话、结果、下一步){
session.send(“成功创建帐户”);
//消息之间的0.5秒延迟
会议.延迟(500)
session.send(“请登录”);
}
]).endConversationAction(“停止”,
"",
{
匹配项:/^取消$|^再见$|^退出^停止^关闭/i
//确认提示:“这将取消您的订单。您确定吗?”
}

);机器人框架SDK v4:

await turnContext.sendActivity({ type: ActivityTypes.Typing })
session.sendTyping()

Bot框架SDK v3:

await turnContext.sendActivity({ type: ActivityTypes.Typing })
session.sendTyping()

我使用nodejs SDK 4.0实现此功能的方法是使用
ActivityTypes。在SendActivities中键入
,如下所示

await context.sendActivities([
{type: ActivityTypes.Typing},
{type: 'delay', value:2000},
{type: ActivityTypes.Message, text: 'Bot Response goes here is only text else send attachments as reply'}])
尝试在中添加上述代码
尝试在emulator中进行测试。

使用
session.sendTyping()
。根据我的经验,人为延迟也会让用户认为存在性能问题。我需要2秒的延迟。所以,这不是问题。session.sendTyping()不适用于me@VigneswaranA你能在node.js上给我们看看你的结构和代码吗?@VigneswaranA我已经改变了。你能试试吗?@VigneswaranA你能申请吗?让我们来。不知道那意味着什么。。。打字指示器工作良好,这也取决于您接下来要做的操作。正如我在评论中指出的,添加延迟不是一个好的做法。请注意session.sendTyping()并不适用于每个频道。也许这就是为什么它对@VigneswaranA不起作用的原因