无法知道我的机器人有什么问题

我一直在通过一个bot框架教程,并做出了下面的代码。

var builder = require('botbuilder'); var restify = require('restify'); //Create Connector var connector = new builder.ChatConnector( { appId: process.env.MICROSOFT_APP_ID, appPassword: process.env.MICROSOFT_APP_PASSWORD } ); //Create bot with Connector var bot = new builder.UniversalBot(connector); //Restify //Create a server var server = restify.createServer(); //listen to server server.listen(process.env.port || process.env.PORT || 33333, function () { console.log('%s listening to URL %s', server.name, server.url); }); server.post('/api/messages', connector.listen()); bot.dialog('/', [function (session) { session.beginDialog('/ensureProfile', session.userData.profile); }, function (session, result) { session.userData.profile = result.response; console.log(result.response); session.send("I'm %(name) and my org is %(company)", session.userData.profile); }]); bot.dialog('/ensureProfile', [function (session, args, next) { session.dialogData.profile = args || {}; if (!session.dialogData.profile.name) { builder.Prompts.text(session, "enter you name"); } else { next(); } }, function (session, result, next) { if (result.response) { session.dialogData.profile.name = result.response; console.log(result.response + " is user name"); } if (!session.dialogData.profile.company) { builder.Prompts.text(session, "Enter your company"); } else { next(); } }, function (session, result) { if (result.response) { session.dialogData.profile.company = result.response; console.log(result.response + " is user name"); } session.endDialogWithResult({ response: session.dialogData.profile }); } ]); 

当我运行这个,正如预期的机器人要求我的名字和公司。 而我input的细节,但最后它给了我下面的错误。

 session.sendBatch() sending 1 messages SyntaxError: [sprintf] unexpected placeholder at Function.sprintf.parse (C:\Users\user\Desktop\Node Tutorial\node_modules\sprintf-js\src\sprintf.js:164 :23) at sprintf (C:\Users\user\Desktop\Node Tutorial\node_modules\sprintf-js\src\sprintf.js:19:34) at Object.vsprintf (C:\Users\user\Desktop\Node Tutorial\node_modules\sprintf-js\src\sprintf.js:174:24) at fmtText (C:\Users\user\Desktop\Node Tutorial\node_modules\botbuilder\lib\Message.js:261:46) at Message.text (C:\Users\user\Desktop\Node Tutorial\node_modules\botbuilder\lib\Message.js:49:33) at Session.createMessage (C:\Users\user\Desktop\Node Tutorial\node_modules\botbuilder\lib\Session.js:401: 36) at Session.send (C:\Users\user\Desktop\Node Tutorial\node_modules\botbuilder\lib\Session.js:144:26) at Array.<anonymous> (C:\Users\user\Desktop\Node Tutorial\sample.js:33:13) at SimpleDialog.waterfallAction [as fn] (C:\Users\user\Desktop\Node Tutorial\node_modules\botbuilder\lib\ dialogs\DialogAction.js:117:32) at SimpleDialog.dialogResumed (C:\Users\user\Desktop\Node Tutorial\node_modules\botbuilder\lib\dialogs\Si mpleDialog.js:21:14) 

我试图打印使用console.log JSON和响应是正确的给我一个答复

 name : userName company : userCompany 

请让我知道我哪里错了,我该如何解决这个问题。 这很混乱。

谢谢

根据sprintf文档中的例子,似乎你必须使用types说明符,而不是%(key)应该是%(key)s

 session.send("I'm %(name)s and my org is %(company)s", session.userData.profile)