如何从Node.js验证dialogflow的参数

问题描述 投票:0回答:1

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

我把代码留给您,在其中读取上下文参数并对其进行验证:

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 facebook-messenger-bot facebook-chatbot
1个回答
1
投票

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

然后,您可以在具有相同输入上下文的情况下,通过一些训练短语“我不知道”,“我没有一个”来创建另一个意图'forgottenID',...然后在其中向用户说明如何获取有效的ID或忘记ID后该怎么做。

可以这样设置上下文:

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

希望这很有道理!

© www.soinside.com 2019 - 2024. All rights reserved.