镜像API:用户选择自定义菜单项时不接收通知

时间:2013-12-13 21:48:05

标签: google-mirror-api

我正在使用.NET Google Mirror API库。

我首先插入一个新的时间轴项目,其中包括内置的删除菜单项和一个自定义菜单项:

TimelineItem item = new TimelineItem() {
  Text = "Test Item",
  Notification = new NotificationConfig() { Level = "DEFAULT" },
  MenuItems = new List<MenuItem>() {
    new MenuItem() { Action = "DELETE" },
    new MenuItem() { 
      Action = "CUSTOM", 
      Id = "report", 
      Values = new List<MenuValue>() { DisplayName = "Report" }
    }
  }
}

我还订阅了时间线通知,未指定任何操作(因此它应该接收所有操作)。当我在Glass上选择“报告”菜单项时,我的订阅不会收到通知。当我在Glass上选择“删除”菜单项时,我的订阅会收到DELETE的通知,其中还包括UserActions字段中的“删除”和“报告”操作。

我需要做些什么特别的事情来接收自定义菜单项的通知吗?

1 个答案:

答案 0 :(得分:0)

如果您正在获取内置菜单事件(例如DELETE),但您没有收到自定义菜单事件,那么您唯一的问题应该是处理自定义事件,而不是获取它们。

进行测试;

  1. 确保将自定义菜单项添加到timelineItem(as 你分享了你的代码,我看到你正在添加它)
  2. 订阅时间表更新(您写过您已订阅并获得DELETE菜单事件)
  3. 将Payload属性添加到自定义菜单项。
  4. 在您的notifyCallback servlet中,处理该Payload值。
  5. 这是用于处理内置和自定义通知的JAVA代码,我猜您可以使用.NET编写类似的代码。逻辑是一样的:

    添加自定义菜单项:

    List<MenuValue> menuValues = new ArrayList<MenuValue>();
    menuValues.add(new MenuValue().setDisplayName("Test it!"));
    menuItemList.add(new MenuItem().setValues(menuValues).setId("MY_CUSTOM_MENU_ITEM_ID").setAction("CUSTOM").setPayload("MY_CUSTOM_MENU_ITEM"));
    timelineItem.setMenuItems(menuItemList);
    

    处理自定义菜单项:

    // notificationString comes from inputStream of Mirror API's notify request.
    Notification notification = jsonFactory.fromString(notificationString, Notification.class);
    if (notification.getUserActions().contains(new UserAction().setType("DELETE"))) {
        LOG.info("It was a DELETE of a timeline card.");
    } else if (notification.getUserActions().contains(new UserAction().setType("CUSTOM").setPayload("MY_CUSTOM_MENU_ITEM"))) {
        LOG.info("It was a MY_CUSTOM_MENU_ITEM of a timeline card.");
    }