我正在尝试添加一个客户( Podio项目)到我的Podio应用程序。此客户是从php应用程序中以编程方式添加的。客户上有几个字段:姓名、地址、电子邮件、标题、电话号码和一系列标签。添加标记时,颜色会更改为突出显示。在以前的迭代中,我使用我希望突出显示的标记值的ID成功地添加了一个不同的标记(Newsletter_subscribed)。现在,当我尝试添加另一个标签(医院、诊所或urgent_care)时,它正在抛出一个PodioBadRequestError。引用的错误是所使用的ID为无效类型(整数)。
通过查看在我的Podio客户应用程序中手动创建现有客户时返回的JSON,我获得了标记ID的值。当我查看JSON中的ID字段时--它们肯定是整数--我也尝试过字符串。我所尝试的每一件事都会在我试图添加的ID上抛出400坏请求。我无法理解为什么当我添加标签ID时,它会抛出错误。
以下是将应用程序组合在一起的方式:
这是构建和发送请求的代码:
public function addToPodio()
{
         $address = $this->Address . ", " .
                    $this->Address2 . ", " .
                    $this->City . ", " .
                    $this->State . " " .
                    $this->Zip;
         
         $item = [
            'fields' => [
                'name'          => $this->PrimaryContactFirstName,
                'last-name'     => $this->PrimaryContactLastName,
                'email-address' => ['type' => 'work', 'value' => $this->PrimaryContactEmail],
                'phone-number'  => ['type' => 'work', 'value' => $this->PrimaryContactPhone],
                'address'       => $address,
                'organization'  => [$this->CompanyName],
                'tags-2' => []
             ],
           ];
           if ($this->Newsletter && defined('PODIO_NEWSLETTER_TAG_ID')){
            $item['fields']['tags-2'][] = PODIO_NEWSLETTER_TAG_ID;
           }
           if($this->OrganizationType && defined('PODIO_ORGANIZATION_TYPE_ID')){
        
            if($this->OrganizationType == "Clinic"){
                $item['fields']['tags-2'][] = PODIO_ORGANIZATION_TYPE_CLINIC_TAG_ID;
            }
            else if($this->OrganizationType == "Hospital"){
                $item['fields']['tags-2'][] = PODIO_ORGANIZATION_TYPE_HOSPITAL_TAG_ID;
            }
      
        try {
             //This is where the request is being made
            $customer = PodioItem::create(PODIO_CUSTOMER_APP_ID, $item);
            $this->PodioId = $customer->item_id;
            $this->write();
         } catch (Exception $e) {
           error_log('We encountered an error adding your item to Podio' . $e);
           return 'An error occurred while updating Podio. Please try again. If the error...';
         }这是传递给Podio的请求的PHP:
    Array
    (
        [fields] => Array
            (
                [name] => Joe
                [last-name] => Test
                [phone-number] => Array
                    (
                        [type] => work
                        [value] => 8675309
                    )
                [address] => 123 Main Road, , East Test, NY 12345
                [organization] => Array
                    (
                       [0] => Another Test
                    )
                [tags-2] => Array
                    (
                       [0] => 16
                       [1] => 96
                    )
           )
    )这是配置文件,包含连接到Podio、身份验证和其他所有内容所需的所有常量、机密令牌和ID。下面是模糊的示例:
define('PODIO_CUSTOMER_APP_ID', 'xxxxx-obfuscated-xxxxx');
define('PODIO_CUSTOMER_APP_TOKEN', 'xxxxx-obfuscated-xxxxx');
define('PODIO_CLIENT_SECRET', 'xxxxx-obfuscated-xxxxx');
define('PODIO_CLIENT_ID', 'xxxxx-obfuscated-xxxxx');
define('PODIO_ORGANIZATION_TYPE_ID', 'xxxxx-obfuscated-xxxx');
define('PODIO_NEWSLETTER_TAG_ID', 'xxxxx-obfuscated-xxxxx');
define('PODIO_ORGANIZATION_TYPE_CLINIC_TAG_ID', 'xxxxx-obfuscated-xxxxx');
Podio::setup(PODIO_CLIENT_ID, PODIO_CLIENT_SECRET, [
    'session_manager' => Injector::inst()->get(PodioSession::class),
    'curl_options' => array(),
 ]);下面是我用来获取ID值的JSON,我从一个到API的postman请求中得到了这个结果。没有所有身份验证的请求的基本形式如下所示:
podio.com/MY_PODIO_ACCOUNT_NAME/app/APPLICATION_ID/item/ITEM_ID{ "id":0000,"item_id":00000,“修订”:0,"app":空,"app_item_id":00000,"app_item_id_formatted":"PODIO_Field_ID:00000","external_id":null,"title":"TEST ITEM",“field”:[{ "id":0000,"field_id":0000,"type":"text","external_id":"name",“标签”:“Name","value":{”value“:”external_id“},“配置”:{“设置”:{“格式”:“普通”,“大小”:“小”},“映射”:"contact_name",“标签”:“名字”},"humanized_value":“humanized_value”},{ "id":0000,"field_id":0000,"type":"text","external_id":“姓氏”,“标签”:“姓氏”,“值”:{“值”:“测试”},“配置”:{“设置”:{“格式”:"html",“大小”:“大”},“映射”:空,“标签”:“姓氏”},"humanized_value":“测试”},{ "id":0000,"field_id":0000,"type":"phone","external_id":"phone-number",“标签”:"Phone Number",“value”:{ "type":"work",“值”:"867-5309“},”配置“:{”设置“:{ "call_link_scheme":”回调“,"possible_types":”移动“、”工作“、”家园“,“主”、"work_fax“、"private_fax”、“其他”}、“映射”:"contact_phone“、”标签“:”电话号码“}、"humanized_value":"8675309”}{ "id":11111,"field_id":11111,“类型”:“类别”,"external_id":“标签-2”,“标签”:“标签”,“值”:{“值”:{“状态”:“活动”,“文本”:“诊所”,"id":16,“颜色”:"DCEBD8“},{”值“:{”状态“:”活动“,”文本“:"Newlsetter_subscribed","id":96,“颜色”:"DCEBD8“},”配置“:{”设置“:{”多次“:真,”选项“:{”状态“:”活动“,“文本”:“Mktng:test1 1/2020”,"id":150,"DCEBD8“},{”状态“:”活动“,”文本“:”Mktng:test1 2/2020“,"id":3,"DCEBD8“},{”状态“:”活动“,”文本“:"SampleTest","id":48,"DCEBD8”},{“状态”:“删除”,“文本”:“测试中心”,"id":139,“颜色”:"DCEBD8“},{”状态“:”删除“,“文本”:“示例中心”,"id":99,“颜色”:"DCEBD8“},{”状态“:”删除“,”文本“:”测试中心“,"id":140,"DCEBD8“}、”显示“:”内联“}、”映射“:null、”标签“:”标签“}、"humanized_value":”诊所“;通讯;“}
这个JSON继续对页面和页面,我只包括了相关的字段,我的问题。
发布于 2021-05-28 18:39:20
看起来,错误是由于组织值而不是标记值而引发的。
对于类别字段,整数索引数组是正确的。
[tags-2] => [ 16, 96 ]对于app字段,您需要提供一个整数项ID数组。
[organization] => [ 12345 ]但是上面的代码是发送一个字符串数组:
[organization] => [ "Another Test" ]那不管用。
https://stackoverflow.com/questions/64610577
复制相似问题