如何在对话框流程中提示带有“是”或“否”问题的实体?

时间:2018-12-05 15:27:18

标签: dialogflow

我在Dialogflow中有一个实体“ employeeType”,其值为“联邦雇员”和“私人雇员”。

如果未获取实体数据,我想问一个问题“您是联邦雇员吗?”用户可以对此回答“是”或“否”。

但是我找不到解决方法,因为这样的问题不会返回预定义的值“联邦雇员”或“私人雇员”。

是否有解决此问题的想法?

2 个答案:

答案 0 :(得分:2)

您有几种选择。如何处理此问题取决于您如何构造其他事物。

由于您拥有“ employeeType”实体,因此可以将yes用作Federal employee的同义词,并将no用作Private employee的同义词。但是,这可能会使某些短语奇怪地起作用,您可能应该为其他类似正面和负面的响应添加其他别名。

您还可以使用“后续意图”来接受它们,这些意图已经设置为“是”和“否”,并且在webhook实现中将要附加到相应意图的值保存。

答案 1 :(得分:1)

这是我推荐的方法:

  1. 做出接受employeeType实体的意图,但不接受 标记required
  2. 为此目的打开webhook,并不要 fulfillment text
  3. 在webhook中检查参数employeeType是否包含值 还是空的
  4. 如果employeeType具有价值,则只需返回一个履行文本,然后 继续您的流程
  5. 如果employeeType为空,则设置输出上下文emp-followup 并输入履行文字“您是联邦雇员吗?”
  6. 为您的回答选择“是”和“没有” 输入上下文emp-followup的意图,并将实现文本放入 那些继续你的流程

intent set up

conversation-1 conversation-2 conversation-3

示例代码:

req = request.get_json()
    params = req.get('queryResult').get('parameters')
    if params['employeeType']:
        res = json.dumps({
            "fulfillmentText": "great! welcome sir."
        })
    else:
        res = json.dumps({
            "outputContexts": [
            {
                "name": "{}/contexts/emp-followup".format(req['session']),
                "lifespanCount": 2,
            },
        ],
            "fulfillmentText": "are you a federal employee"
        })
    return res

希望有帮助。