【问题标题】:How to trigger a intent on response of another intent in dialogflow如何在对话流中触发对另一个意图的响应的意图
【发布时间】:2020-06-09 02:51:00
【问题描述】:
app.intent('Delivery', conv => {
  conv.ask("What a great day for Delivery!  We can provide more information on any of the categories shown below.");
  return axios.get(url).then((success) => {
    let items = {};
    for (let i of success.data.data) {
      let item = {};
      item.synonyms = [i.name];
      item.title = `${i.name}`;
      item.image = new Image({
        url: `${i.image}`,
        alt: 'Image alternate text',
      });
      item.description = `${i.description}`;
      items[i.id] = item;
    }
    conv.ask(new List({ title: 'Food Categories', items }));

  }).catch((error) => {
    conv.ask("Error in category");
  });
});

我在 Dialogflow 中有两个意图:

  1. 发货
  2. 产品

在交付意图中,有来自 API 的动态类别。

在选择类别时,我只是想触发产品意图,以便用户可以从中选择产品。

我如何在选择类别时触发该产品意图。

【问题讨论】:

    标签: node.js dialogflow-es actions-on-google


    【解决方案1】:

    您最好的选择是将产品意图逻辑移至其自己的类或函数中。通过这样做,您可以使代码可用于其他意图,并且您不必复制和粘贴任何代码。因此,它使您的代码更灵活、更易于阅读。

    您是否选择函数或类真的取决于您。如果您只是创建简单的响应,一个函数就足够了,但是如果您发现自己一遍又一遍地导入/需要相同的类,那么一个类可能会更好。

    这是一个带有 Typescript 的 NodeJS 中欢迎意图类的示例:

    /**
     * Welcome intent class
     */
    export default class WelcomeIntent {
      invoke(conv: DialogflowConversation): DialogflowConversation {
    
        const greeting = this.getTimeOfDayGreeting();
        const response = "Welcome to my test app. How can I help?"
    
        const hasScreen = this.contextService.getContext(conv, "actions_capability_screen_output");
    
        if (hasScreen) {
          conv.ask(new Suggestions("What can I do?"));
        }
    
        conv.ask(greeting);
        return conv.ask(response);
      }
    
      private getTimeOfDayGreeting(): string {
        const currentHour = new Date().getHours();
    
        if (currentHour >= 6 && currentHour < 12) {
          return "Good morning.";
        } else if (currentHour >= 12 && currentHour < 18) {
          return "Good afternoon.";
        } else if (currentHour >= 18 && currentHour <= 23) {
          return "Good evening.";
        } else {
          return "Hello.";
        }
      }
    }
    

    每次我想欢迎用户时,我都会返回welcomeIntent.invoke(),它会欢迎用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多