【问题标题】:How to validate parameters of dialogflow from Node.js如何从 Node.js 验证对话框流的参数
【发布时间】:2020-06-05 17:20:40
【问题描述】:

我有一个连接到 dialogflow 的 node.js 后端来制作聊天机器人,我可以发送答案、读取用户的输入。有时我需要验证一些参数作为 IDCARD 号。好吧,我可以向用户检索一条消息,说 ID 号不正确,但我需要留在同一个对话流上下文中,而不是转到下一个,以便能够将新值保留在同一个参数中。有谁知道这是怎么做到的吗? 这对于在发送快速回复时添加上一个按钮以返回上一个问题也很有用。

我把我的代码留给你,在那里我读取一个上下文参数并验证它:

case "ingresar-telefono":

        let filteredContexts = contexts.filter(function (el)
        {
            return el.name.includes('recibirinfo')
        });

        if (filteredContexts.length > 0 && contexts[0].parameters) {

            numerotelefonico = (isDefined(contexts[0].parameters.fields['Telefono.original']) && contexts[0].parameters.fields['Telefono.original'] !== '') ? contexts[0].parameters.fields['Telefono.original'].stringValue: '';
            console.log("Numero telefonico: "+numerotelefonico);

            if (isNaN(numerotelefonico)){
                console.log("Entro is not a number.");
                sendTextMessage(sender, "¡Parece que tu numero de telefono tiene caracteres no permitidos!");
                sendTextMessage(sender, "¡Vuelvelo a ingresar!");

            }

            else if(!numerotelefonico.startsWith("9")){
                console.log("Entro no empieza en 9.");
                sendTextMessage(sender, "¡Vuelvelo a ingresar!");
            }

            else{
                handleMessages(messages, sender);
            }

        }
        break;

谢谢,

乔纳森·普列托

【问题讨论】:

    标签: javascript node.js dialogflow-es facebook-messenger-bot facebook-chatbot


    【解决方案1】:

    我建议您通过从 Dialogflow UI 的意图中删除输出上下文来处理此问题。一旦您检测到提供的 ID 号是正确的,您就可以将输出上下文设置为您删除的那个。如果提供的 ID 号不正确,则将输出上下文设置为该意图的输入上下文并回复“请提供有效 ID”。这将确保再次提示用户提供有效的 ID。

    然后,您可以使用相同的输入上下文创建另一个意图“forgottenID”,其中包含一些培训短语“我不知道”、“我没有”……然后向用户解释如何获取有效身份证件或忘记身份证件后该怎么办。

    上下文可以这样设置:

    agent.context.set({
      'name':'context-name',
      'lifespan': 5,
      'parameters':{
        'parameter-name':'parameter-value'
        }
    });
    

    希望这是有道理的!

    【讨论】:

    • 谢谢@Mathias Schrooten,这对我来说很有意义,但是您知道如何从 node.js 设置对话流上下文吗?谢谢
    • 我在答案中添加了一种设置上下文的方法! @JonathanPrieto
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多