首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prompts.text -句柄图像/附件响应

Prompts.text -句柄图像/附件响应
EN

Stack Overflow用户
提问于 2018-04-08 10:09:49
回答 1查看 71关注 0票数 0

我有一个机器人对话框,它向用户询问订单id:

代码语言:javascript
复制
bot.dialog("orderId", [
    (session, args, next) => {
       return builder.Prompts.text(session, "Please provide order id");
    },
    (session, results, next) => {       
        const matched = results.response.match(/\d{3}-?\d{7}/g);
        if (matched) {
           // ...
           session.endDialogWithResult(matched);
        } else {
           // ...
        }
    }
]);

当用户输入有效的订单id并具有省略的验证代码时,此操作将如预期的那样工作。

我面临的问题是,用户不时上传订单id的屏幕截图,这会触发默认操作,即使用系统提示重新提示。

我知道如果使用retryPrompt接口,我可以使用IPromptOptions属性,但这并不能解决我的问题。

我希望能够开始另一个对话或结束对话。

我该怎么做呢?

编辑:

在另一种情况下,用户没有说“是”或任何其他积极的短语,而是用来自Facebook的“拇指向上”图片回复Prompts.text。这也会破坏Prompts.text流。

我希望能够把“竖起大拇指”的形象作为对我的问题的正面回答,并据此控制会话流程。

EN

回答 1

Stack Overflow用户

发布于 2018-04-09 06:04:44

因为内置Prompts将创建一个单独的对话框,并且Prompts.text()只在将图像文件上传到bot时严格地验证用户输入的string类型,这将不会被Prompts.text()对话框验证,这将引发您的问题。

您可以考虑为用户添加一个步骤,以选择一种方法来验证代码(通过输入代码字符串或上传代码图片)。

代码语言:javascript
复制
var bot = new builder.UniversalBot(connector, [
    (session) => {      
        const choices = ['code', 'image'];
        var msg = new builder.Message(session)
            .text("Which will you prefer to provide your code?")
            .suggestedActions(
                builder.SuggestedActions.create(
                    session, [
                        builder.CardAction.imBack(session, "code", "By Code"),
                        builder.CardAction.imBack(session, "image", "By Image")
                    ]
                )
            );
        builder.Prompts.choice(session, msg, choices);
    }, (session, args, next) => {
        const type = args.response.entity;
        session.send(`Your choice is ${type}`);
        if (type == 'code') {
            session.replaceDialog('verifyCode')
        } else {
            session.replaceDialog('verifyAttachmenet')
        }
    }
]);

bot.dialog('verifyCode', [(session) => {
    builder.Prompts.text(session, 'Input your code');
}, (session, args, next) => {
    session.send(args.response);
    session.endDialog();
}])

bot.dialog('verifyAttachmenet', [(session) => {
    builder.Prompts.attachment(session, 'update your image');
}, (session, args, next) => {
    session.send(`You upload ${args.response.length} images`);
    session.endDialogWithResult(args.response);
}])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49716742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档