Podio API - 更新联系人参考

时间:2016-10-10 13:21:29

标签: java podio

我有一个Podio应用程序处理客户帐户,每个客户都有一个经理(podio联系人)。所有这些数据都存在于另一个系统中,我们正在编写软件来同步这两个数据。该软件是用java编写的,并使用podio api

我目前能够阅读和设置所有类型的字段,但经理字段(联系人)除外。

这是在加载客户时从API收到的内容:

Received field

但是如何将经理参考更新为其他内容呢?

我尝试过类似的事情:

List<Map<String, Object>> list = new ArrayList<>();
HashMap<String, Object> values = new HashMap<>();
list.add(values);

HashMap<String, Object> value = new HashMap<>();
values.put("value", value);

value.put("mail", "employee@email.com");
//also tried user_id and profile_id

然后使用

ItemAPI.updateItemFieldValues(int itemId, int fieldId,
        List<Map<String, Object>> values, boolean silent, boolean hook)

更新字段。我哪里错了?

1 个答案:

答案 0 :(得分:1)

设定:
带有“联系”字段的Podio应用程序,配置为“添加新地址时工作区成员/共享”(如此screnshot)
Contact sharing settings

Ruby

中的工作示例
  item_id = <some_item_id>
  field_id = <contact_field_numeric_id>
  field_external_id = <contact_field_external_id>

  # set to empty value by field_id
  empty_value = []
  Podio::ItemField.update(item_id, field_id, single_value)

  # set to single value by field_id
  single_value = [{'value' => {'type' => 'user', 'id' => <Podio user id>}}]
  Podio::ItemField.update(item_id, field_id, single_value)

  # set to multiple values by external field id
  multi_values = [{'value' => {'type' => 'user', 'id' => <Podio user id>}}, 
                  {'value' => {'type' => 'user', 'id' => <another Podio user id>}}]
  Podio::ItemField.update(item_id, field_external_id, multi_values)

将此联系人字段设置为新值single_value或新值列表multiple_value。另外,我强烈建议您再次考虑一下您的数据架构。使用Podio Contact应用类型并使用Reference字段而不是使用Contact字段可能更具可扩展性。

Java 示例:

HashMap<String, Object> pair = new HashMap<>();
HashMap<String, Object> value = new HashMap<>();
List<Map<String, Object>> list = new ArrayList<>();

// set to empty value
list = new ArrayList<>();
ItemAPI.updateItemFieldValues(<itemId>, <fieldId>, list, <silent>, <hook>)

// set to real value
value = new HashMap<>();
list = new ArrayList<>();
pair.put("id", <user_id>);
pair.put("type", "user");
value.put("value", pair);
list.add(value);
ItemAPI.updateItemFieldValues(<itemId>, <fieldId>, list, <silent>, <hook>)