【问题标题】:How to get the external_id in a hook event如何在挂钩事件中获取 external_id
【发布时间】:2016-09-12 15:39:46
【问题描述】:

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

【问题讨论】:

    标签: podio


    【解决方案1】:

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

    这里附上Java SDK的代码示例。希望对你有帮助

    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);
    

    【讨论】:

    • 你好 priya,我忘了说,我创建的钩子是在 php 中。
    • 我用这个developers.podio.com/doc/hooks。当你更新/创建一个项目时,钩子会触发,我想知道哪个字段(external_id)被更新了
    【解决方案2】:

    external_id 参数为item.createitem.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 路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 2011-05-16
      • 2019-11-11
      相关资源
      最近更新 更多