Dialogflow CX-如何清除参数

问题描述

https://i.stack.imgur.com/uq9Yv.png

https://i.stack.imgur.com/jaPaz.png

https://i.stack.imgur.com/SHIuS.png

当我说“不”时,如何获取“数字”参数以清除并输出提示“说数字”?

解决方法

要清除会话中的参数以进行表单填充,必须先将会话中的参数值设置为null,然后再转换回具有表单填充的页面。

有两种方法可以在会话中将参数值设置为null:

  1. 在页面的意图/条件路由的实现参数预设中添加需要使用空值清除的参数。

    a。根据您的情况,您可以在“确认编号”页面的“否”意图路线的实现参数预设中添加具有空值的“数字”参数。

    enter image description here b。当“确认编号”页面的“否”意图路由被触发时,“编号”参数将在会话中清除,并将转换回“插入编号”页面以再次询问该编号。 enter image description here

  2. 通过实现Web挂钩将参数值设置为null。下面是示例代码供参考:

     app.post("/clearnumber",async (request,response) => {
       let params = request.body.sessionInfo.parameters; //get the current parameters in the session
       let message = "\n\n number parameter has been cleared... ";
       console.log("request body:" + request.body);
       console.log(".....number........... :" + params.number);
       params.number = null; // setting the number parameter to null
       console.log("..after.resetting.number........... :" + params.number);
       request.body.sessionInfo.parameters = params; //add the parameter changes in the sessionInfo that will be sent back to the agent
       let fulfillmentResponse = {
         fulfillmentResponse: {
           messages: [{
             text: {
               text: []
             }
           }]
         },sessionInfo: request.body.sessionInfo
    
       };         fulfillmentResponse.fulfillmentResponse.messages[0].text.text.push(message);
       response.json(fulfillmentResponse);
     });
    

如下面的屏幕快照所示,结果与在控制台中使用参数预设相同。 enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...