2016-10-10 50 views
0

我有一個Podio應用程序,用於處理每個客戶都有經理(podio聯繫人)的客戶帳戶。所有這些數據都駐留在另一個系統中,我們正在編寫軟件來同步這兩個系統。該軟件是用java編寫的,使用podio apiPodio 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", "[email protected]"); 
//also tried user_id and profile_id 

,然後使用

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

更新字段。我哪裏錯了?

回答

1

設置:
波迪奧應用與 '聯繫人' 字段,用於 '工作空間成員/股當新地址添加'(這樣screnshot)
Contact sharing settings

工作在例如紅寶石

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>) 
+0

我實現你的java例子,並與工作類型:用戶和ID集。 由於所有管理員都是工作區成員,因此在我們的案例中設置不是必需的。 作爲獎勵信息。你可以添加如何設置管理=空? – lcersly

+0

使用空對映射不起作用(在java中至少):APIException [狀態=錯誤請求,錯誤=無效值,描述=無效值{}(對象):必須是整數或者必須是整數或缺少必需屬性:['type','id'],parameters = null]。並且不添加類型和空id。 – lcersly

+0

請嘗試空列表,這適用於Ruby –