在Cortana Bot Skills中,cortana技能等待机器人响应的当前超时时间是10秒。
我们正在集成ServiceNow等自动化工具,用于基于机器人中用户的查询创建票据,其中票据创建需要一分钟,然后返回给机器人,以响应用户有关票据详细信息的信息。
有没有办法增加这个超时值?这是可配置的吗?在这方面需要帮助。
提前谢谢。
发布于 2019-01-29 01:02:43
不幸的是,在当前版本的技能工具包中,您不能更改超时期限。此超时实际上是由代理(因此,客户端、应用程序或搜索服务)控制的。
Botframework支持“键入”消息;不幸的是Cortana还不支持。它还支持主动消息(带外),不幸的是Cortana还不支持。
但还是有希望的!这取决于你如何构建你的对话框,你使用了什么输入提示,以及什么设备是你的主要人机界面。
例如,在Windows上,您可以使用提示"acceptingInput“。这意味着会话将无限期地等待用户执行某些操作。这通常在展示富卡片时使用。如果您遵循此路径,您的机器人应该轮询任务的完成,然后在用户输入时(在下一轮)显示“我仍在思考”消息。
你会说这个UX不是很棒,因为用户不知道任务什么时候完成……但是,您可以在任务完成时使用replaceDialog使对话框流程回到正轨!
如果你想提供一个任务正在进行中的积极反馈,你可以这样做!将"ignoringInput“提示与”请等待消息“一起使用。创建一个轮询任务完成情况的循环,并每5秒发送一次此消息。ignoringInput使机器人进入下一轮,直到它得到接受或期望的输入提示。
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);
});
// 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());
// Create your bot with a function to receive messages from the user
var bot = new builder.UniversalBot(connector);
bot.set('storage', new builder.MemoryBotStorage() );
const kWelcomeText = 'Hi! Say \'start\' to create a timer and a polling loop.';
const kMisunderstood = 'Sorry, I didn\'t get that.';
const kStarting = 'Starting 30 second timer. Please wait.';
const kWaiting = 'Please wait.';
const kDone = 'My task is done.';
bot.dialog('/', function (session) {
var txt = session.message.text;
if( !txt )
{
var msg = new builder.Message(session)
.text( kWelcomeText )
.speak( kWelcomeText )
.inputHint("acceptingInput");
session.send(msg);
return;
}
if( txt === 'start' )
{
console.log( 'entering pollerDialog' );
session.conversationData.counter = 0;
session.beginDialog('pollerDialog');
return;
}
else {
var msg = new builder.Message(session)
.text( kMisunderstood )
.speak( kMisunderstood )
.inputHint("acceptingInput");
session.send(msg);
return;
}
});
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
bot.dialog('pollerDialog', function (session) {
console.log( 'entering pollerDialog' );
var iter = session.conversationData.counter || 0;
session.conversationData.counter = iter + 1;
if( session.conversationData.done )
{
console.log( 'done' );
var msg = new builder.Message(session)
.text( kDone )
.speak( kDone )
.inputHint("acceptingInput");
session.endDialog(msg);
return;
}
console.log( `iteration is ${iter}` );
if( iter === 0 )
{
console.log( 'setting timeout' );
setTimeout(function () {
console.log( 'timeout done' );
session.conversationData.done = true;
}, 30000);
var msg = new builder.Message(session)
.text( kStarting )
.speak( kStarting )
.inputHint("ignoringInput");
session.sendTyping();
session.send(msg);
console.log( 'sent kStarting' );
setTimeout( function( ) {
console.log( 'replacing kStarting' );
session.replaceDialog('pollerDialog');
}, 5000);
sleep(4000);
return;
} else {
var msg = new builder.Message(session)
.text( kWaiting )
.speak( kWaiting )
.inputHint("ignoringInput");
session.sendTyping();
session.send(msg);
console.log( 'sent kWaiting' );
setTimeout( function( ) {
console.log( 'replacing kWaiting' );
session.replaceDialog('pollerDialog');
}, 5000);
sleep(4000);
return;
}
});https://stackoverflow.com/questions/54403130
复制相似问题