conversationUpdate事件未获得用户输入

时间:2017-07-09 12:30:55

标签: node.js botframework

当用户第一次连接时,我使用以下方法通过bot询问问题。但是在用户回答问题后,而不是进入下一步,bot会转到新的对话框。

这适用于模拟器,但不适用于directline api。

.footer
{
    position: fixed;
    bottom: 0;
    left: 0;
    display: none;
    width: 100%;
    height: 200px;
    text-align: center;
    z-index: 999;
}

1 个答案:

答案 0 :(得分:0)

发送问题"请选择以下选项之一..."你打电话给endDialog()。这就是导致它像你说的那样进入新对话框的原因。

如果您想要prompt the user for input,请使用Choice Prompt,然后在瀑布式对话框中添加另一个步骤来处理用户的选择输入。

例如,要获取用户名,首先使用文本提示询问问题,然后在瀑布对话框的第2步中处理用户的响应。用户的响应文本将在步骤2中的results.response对象中可用。

bot.dialog('greetings', [
    // Step 1
    function (session) {
        builder.Prompts.text(session, 'Hi! What is your name?');
    },
    // Step 2
    function (session, results) {
        session.endDialog('Hello %s!', results.response);
    }
]);

要通过一系列选项提示用户,请使用瀑布式对话框并结合builder.Prompts.choice()次呼叫。例如:

var noiseComplaintName = "Noise Complaint";
var trashDumpingName = "Trash Dumping";
var weirdSmellName = "Weird Smell";
var trafficSignalName = "Traffic Signal";

var reportTypes = [
    noiseComplaintName,
    trashDumpingName,
    weirdSmellName,
    trafficSignalName
];

bot.dialog('pick-report-type', [
    function(session) {
        session.send('Choice prompt example:');

        var promptOptions = {
            listStyle: builder.ListStyle.button
        };

        builder.Prompts.choice(session, "What do you want to report?", reportTypes, promptOptions);
    },
    function (session, results) {
        // handle response from choice prompt
        var selectedReportType = results.response.entity;

        switch (selectedReportType) {
            case noiseComplaintName:
                // handle response here
                break;
            case trashDumpingName:
                // handle response here
                break;
            case weirdSmellName:
                // handle response here
                break;
            case trafficSignalName:
                // handle response here
                break;
            default
                // handle response here
                break;
        }
    }
]);

有关将提示与Rich Cards结合使用的更详细示例,请在GitHub上查看示例代码:BotBuilder-Samples/Node/cards-RichCards