如何在对话流程中仅在对话中询问用户的电话号码?

时间:2019-07-09 13:20:24

标签: dialogflow

我正在尝试建立对话流程,并且只想在聊天期间询问用户的电话号码一次。为此,我尝试将电话号码作为意图的插槽。如果要求输入电话号码,效果很好,但问题是每次都要求输入电话号码。我只希望它询问一次并保存。为此,我尝试了Webhooks,但不确定是否正确实现了它。

我曾尝试通过网络方式连接@ sys.phone-number,但不确定是否正确执行了操作。

Container(
  height: 400,
  //auto height need
  child: ListView.builder(
    padding: EdgeInsets.only(top: 5), //gab betwween horizonscroll
    physics: NeverScrollableScrollPhysics(), //listview scroll fix
    itemCount: weatherList.length,
    itemBuilder: (context, i) {
      return SizedBox(
        height: 60,
        child: Card(
            color: Colors.transparent,
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: <Widget>[
                Padding(
                  padding: const EdgeInsets.only(left: 10.0),
                  child: Text(weatherList[i].weekName),
                ),
                Column(
                  children: <Widget>[
                    weatherList[i].weekIcon,
                    Text(weatherList[i].weekTemper),
                  ],
                ),
                Padding(
                  padding: const EdgeInsets.only(right: 10.0),
                  child: Text(weatherList[i].weekdust),
                ),
              ],
            )),
      );
    },
  ),
);

我希望它只检查一次。如果用户曾经给过一次电话号码,就不要再问其他地方了。

1 个答案:

答案 0 :(得分:0)

尝试将输入上下文用于电话意图。每当您要捕获电话号码时,都将上下文说“ capture-phone”作为意图的输出上下文,一旦捕获了电话号码,就可以将“ capture-phone”上下文的寿命设置为“ 0”。

如果您正在使用插槽,则也可以使用上述上下文方式。但是,如果您有多个意图,请使用DB保存电话。在网络挂钩中,通过ping DB检查电话是否已被捕获。如果没有,请询​​问电话号码并将其保存在数据库中。

希望它对您有帮助。