如何在钩子事件中获取external_id

时间:2016-09-12 15:39:47

标签: podio

我有一个钩子,我想得到external_id。 请你帮助我好吗? 我需要使用哪个事件来获取external_id?

2 个答案:

答案 0 :(得分:1)

有一种方法可以详细说明一个项目 https://developers.podio.com/doc/items/get-item-22360

这里我附上了Java SDK的代码示例。希望它有所帮助

enter image description here

import java.io.Serializable;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.podio.app.AppAPI;
import com.podio.app.ApplicationField;
import com.podio.common.Reference;
import com.podio.common.ReferenceType;
import com.podio.contact.Profile;
import com.podio.file.FileAPI;
import com.podio.item.FieldValuesUpdate;
import com.podio.item.FieldValuesView;
import com.podio.item.ItemAPI;
import com.podio.item.ItemBadge;
import com.podio.item.ItemCreate;
import com.podio.item.ItemUpdate;
import com.podio.item.ItemsResponse;
import com.podio.oauth.OAuthClientCredentials;
import com.podio.oauth.OAuthUsernameCredentials;
import com.podio.task.Task;
import com.podio.task.TaskAPI;
import com.podio.user.UserAPI;


public class APICall implements Serializable {
    public static void main(String as[]){
        APICall  apiObj =  new APICall();
        apiObj.apicall();
    }

    /**
     * 
     */
    public void  apicall()
    {
        try{
            System.out.println("inside");

            ResourceFactory resourceFactory = new ResourceFactory(new OAuthClientCredentials("<your app name>","<your client secret>"),new OAuthUsernameCredentials("<user_name>", "<password>"));
            //List<filters>
            ItemAPI itapi = new ItemAPI(resourceFactory);
            ItemsResponse itres =itapi.getItems(<item_id>, null, null, null, null, null);
            List<ItemBadge> li= itres.getItems();

            for (ItemBadge ib : li ){
                List<FieldValuesView> listvals =ib.getFields();

                for (FieldValuesView val : listvals ){
                    System.out.println(val.getValues()+"--"+val.getExternalId());
                }



                FileAPI fapi = new FileAPI(resourceFactory);
                java.io.File file = new java.io.File("/Users/brijeshluckria/Downloads/Contacts - All Contacts.xlsx");

                System.out.println(file.getAbsolutePath()+"::"+file.exists());

                int id=fapi.uploadFile("Apifile",file);
                System.out.println("ids"+id);

答案 1 :(得分:1)

external_iditem.create个钩子发送了

item.update参数。为了发送它,项目需要它:)

因此,如果您只是从Podio网站创建项目,该项目将不会有任何external_id。但是,如果您通过API创建项目并指定external_id,那么它将在那里。 以下是 Ruby

中的完整示例
attr = {:fields => { :title => 'Created with external ID'},
        :external_id => 'exernal_id_for_demo' }
item = Podio::Item.create(app_id, attr)

然后webhook item.create将是:

item_id: 720040614
item_revision_id: 0
type: item.create
hook_id: 7243151
external_id: exernal_id_for_demo

当item没有external_id时,当调用webhook时,你只会获得一个item_id作为POST参数。使用此命令发出API请求以获取调用webhook的项目,然后您可以获取所有项目详细信息。您还可以获取项目修订,以查看更新了哪个字段。

您还可以为不同的字段创建几个不同的webhook 正如文件所说: Additionally, the three hooks item.create, item.update and item.delete can also work on a field level. If you use "app_field" as the ref_type and an app field_id as the ref_id your hook will only be triggered if the changes happen to that particular field.

然后,只有在修改特定字段时才会触发您的webhook,但我仍然建议您使用getItemgetRevisions路径。