【发布时间】:2016-09-12 15:39:46
【问题描述】:
我有一个钩子,我想获取 external_id。 请你帮助我好吗? 我需要使用哪个事件来获取 external_id?
【问题讨论】:
标签: podio
我有一个钩子,我想获取 external_id。 请你帮助我好吗? 我需要使用哪个事件来获取 external_id?
【问题讨论】:
标签: podio
有一个方法可以详细说明一个项目 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);
【讨论】:
external_id 参数为item.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 只会在修改特定字段时触发,但我仍然建议使用 getItem 和 getRevisions 路径。
【讨论】: