gpt4 book ai didi

google-glass - Google Glass Mirror API - 有没有办法删除一捆卡片?

转载 作者:行者123 更新时间:2023-12-01 22:51:54 42 4
gpt4 key购买 nike

我正在使用 Mirror API(c# 库)向 Glass 发送一捆卡片

我知道您可以在单张卡片上使用默认的删除菜单项,但是有没有办法为整个 bundle 提供删除功能,最好是用户一次操作的结果?

我已经使用下面的代码成功地在菜单项上使用了 DELETE 操作

MenuItem mi = new MenuItem();
mi.Action = "DELETE";

TimelineItem tli = new TimelineItem()
{
Html = itemHtml.ToString(),
Notification = new NotificationConfig() { Level = "DEFAULT" },
MenuItems = new List<MenuItem>() { mi }
};

有没有办法将这个删除菜单项添加到包封面?我知道这可能很棘手,因为单击 bundle 封面会使您导航到子卡中,因此没有像单张卡上那样的菜单。我正在寻找这样的东西(我确实尝试过,但它只是忽略了菜单项):

MenuItem mi = new MenuItem();
mi.Action = "DELETE";

TimelineItem tli = new TimelineItem()
{
Html = itemHtml.ToString(),
Notification = new NotificationConfig() { Level = "DEFAULT" },
IsBundleCover = true,
BundleId = bundleId,
MenuItems = new List<MenuItem>() { mi }
};

如果在封面卡片上不可能,是否可以通过向子卡片添加删除菜单项来为 bundle 执行此操作?

如有任何建议,我们将不胜感激

最佳答案

您可以使用自定义菜单来执行此操作。下面的代码使用 Java,但 C# 应该类似:

  1. 向卡片添加自定义菜单项:

    List<MenuValue> menuValueList = new ArrayList<MenuValue>();
    menuValueList.add(new MenuValue().setIconUrl(iconUrl).setDisplayName("Delete All"));

    MenuItem menuItem = new MenuItem();
    menuItem.setValues(menuValueList).setId("delete_bundle_A").setAction("CUSTOM");

    List<MenuItem> menuItemList = new ArrayList<MenuItem>();
    menuItemList.add(menuItem);

    timelineItem.setMenuItems(menuItemList);
  2. 定义处理镜像服务器通知回调请求的 Controller :

    if (notification.getCollection().equals("timeline") && notification.getUserActions().contains(new UserAction().setType("CUSTOM").setPayload("delete_bundle_A"))) {
    deleteCards(credential, bundleId);
    }
  3. 删除卡片函数:

    // if bundleId is null or "", delete all cards
    public static void deleteCards(Credential credential, String bundleId) throws IOException {
    if (bundleId == null) {
    bundleId = "";
    }
    Mirror.Timeline timelineItems = MirrorClient.getMirror(credential).timeline();
    Mirror.Timeline.List list = timelineItems.list();
    List<TimelineItem> timelineItemList = null;
    do {
    TimelineListResponse response = list.execute();
    timelineItemList = response.getItems();
    if (timelineItemList != null && timelineItemList.size() > 0) {
    for (TimelineItem item : timelineItemList) {
    if (bundleId == "" || bundleId.equalsIgnoreCase(item.getBundleId())) {
    LOG.info("Deleting card " + item.getId());
    MirrorClient.deleteTimelineItem(credential, item.getId());
    }
    }
    list.setPageToken(response.getNextPageToken());
    } else {
    break;
    }
    } while (list.getPageToken() != null && list.getPageToken().length() > 0);
    }
  4. 最后,不要忘记在应用程序启动时订阅时间轴通知:

    String notifyUrl = "https://mirrornotifications.appspot.com/forward?url=" + "http://yourServer.com/notify";
    Subscription subscription = MirrorClient.insertSubscription(credential, notifyUrl, userId, "timeline");

关于google-glass - Google Glass Mirror API - 有没有办法删除一捆卡片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035411/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com