为什么@assistant/conversation里面没有Carousel

Why is there no Carousel in @assistant/conversation

如果没有,我想用两张以上的卡。如果没有,我想知道如何使用List(列表代码示例)。

绝对不是Dialogflow代码!我需要 ActionsOnGoogle 代码。

const functions = require('firebase-functions');
const syncRequest = require('sync-request');
const express = require('express');
const {
  conversation,
  Simple,
  Card,
  Image,
  Button,
  List,
  Table,
  Carousel <-------------------------------(Carousel is not constructor ERROR) 
}  = require('@assistant/conversation');

const app = conversation({debug:true});

app.handle('callApi', (conv) => {
     conv.add(new Card({
          title: "hello1",
          subtitle:  "hi",
           text: "blablablablablablablablablablablablablablablablablabla",
            image: new Image({
              url: "some url",
              alt: "Some alternative text",
            })
        }), new Card({
          title: "hello2",
          subtitle:  "ddddddddd",
           text: "testtesttesttesttesttesttesttesttesttesttesttesttesttest",
            image: new Image({
              url: "some url",
              alt: "Some alternative text",
            })
        }));----------------------------------------------------two Card doesn't it work
});

exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

正在寻找 ActionsOnGoogleFulfillment 文档和 example/sample 代码 link。

Carousel 类型已被 Collection 类型取代,后者在大多数平台上执行相同的操作。然而,该名称反映出它可能不会在任何地方显示为轮播,但仍会代表 card-like 布局。

对于列表和集合等视觉选择响应,定义响应分两部分完成:

  1. 为类型创建 Runtime Type Overrides,并包括有关每个条目的视觉信息
  2. 正在创建列表或集合并引用要显示的该类型的项目

您将通过向会话中添加内容来创建 Type Overrides。所以它可能看起来像这样:

  conv.session.typeOverrides = [{
    name: 'prompt_option',
    mode: 'TYPE_REPLACE',
    synonym: {
      entries: [
        {
          name: 'ITEM_1',
          synonyms: ['Item 1', 'First item'],
          display: {
             title: 'Item #1',
             description: 'Description of Item #1',
             image: ASSISTANT_LOGO_IMAGE,
                }
        },
        {
          name: 'ITEM_2',
          synonyms: ['Item 2', 'Second item'],
          display: {
             title: 'Item #2',
             description: 'Description of Item #2',
             image: ASSISTANT_LOGO_IMAGE,
                }
        },
        {
          name: 'ITEM_3',
          synonyms: ['Item 3', 'Third item'],
          display: {
             title: 'Item #3',
             description: 'Description of Item #3',
             image: ASSISTANT_LOGO_IMAGE,
                }
        },
        {
          name: 'ITEM_4',
          synonyms: ['Item 4', 'Fourth item'],
          display: {
             title: 'Item #4',
             description: 'Description of Item #4',
             image: ASSISTANT_LOGO_IMAGE,
                }
        },
        ]
    }
  }];

然后您将创建并添加 Collection 对象,引用您声明的类型中的键:

  conv.add(new Collection({
    title: 'Collection Title',
    subtitle: 'Collection subtitle',
    items: [
      {
        key: 'ITEM_1'
      },
      {
        key: 'ITEM_2'
      },
      {
        key: 'ITEM_3'
      },
      {
        key: 'ITEM_4'
      }
    ],
  }));
});

对 List 执行此操作是类似的。实体类型和视觉组件是相同的,但您定义列表的方式略有不同:

  conv.add(new List({
    title: 'List title',
    subtitle: 'List subtitle',
    items: [
      {
        key: 'ITEM_1'
      },
      {
        key: 'ITEM_2'
      },
      {
        key: 'ITEM_3'
      },
      {
        key: 'ITEM_4'
      }
    ],
  }));
});