首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在试图添加一个在其字段中有多个标记的项时,Podio将引发PodioBadRequestError invalid_value int。

在试图添加一个在其字段中有多个标记的项时,Podio将引发PodioBadRequestError invalid_value int。
EN

Stack Overflow用户
提问于 2020-10-30 14:44:59
回答 1查看 157关注 0票数 0

我正在尝试添加一个客户( Podio项目)到我的Podio应用程序。此客户是从php应用程序中以编程方式添加的。客户上有几个字段:姓名、地址、电子邮件、标题、电话号码和一系列标签。添加标记时,颜色会更改为突出显示。在以前的迭代中,我使用我希望突出显示的标记值的ID成功地添加了一个不同的标记(Newsletter_subscribed)。现在,当我尝试添加另一个标签(医院、诊所或urgent_care)时,它正在抛出一个PodioBadRequestError。引用的错误是所使用的ID为无效类型(整数)。

通过查看在我的Podio客户应用程序中手动创建现有客户时返回的JSON,我获得了标记ID的值。当我查看JSON中的ID字段时--它们肯定是整数--我也尝试过字符串。我所尝试的每一件事都会在我试图添加的ID上抛出400坏请求。我无法理解为什么当我添加标签ID时,它会抛出错误。

以下是将应用程序组合在一起的方式:

这是构建和发送请求的代码:

代码语言:javascript
复制
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:

代码语言:javascript
复制
    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。下面是模糊的示例:

代码语言:javascript
复制
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请求中得到了这个结果。没有所有身份验证的请求的基本形式如下所示:

代码语言:javascript
复制
podio.com/MY_PODIO_ACCOUNT_NAME/app/APPLICATION_ID/item/ITEM_ID

  • --请注意:为了简洁起见,我删除了许多主要字段,如Address和Organization,所以它不会完全匹配上面的PHP对象。

{ "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继续对页面和页面,我只包括了相关的字段,我的问题。

EN

回答 1

Stack Overflow用户

发布于 2021-05-28 18:39:20

看起来,错误是由于组织值而不是标记值而引发的。

对于类别字段,整数索引数组是正确的。

代码语言:javascript
复制
[tags-2] => [ 16, 96 ]

对于app字段,您需要提供一个整数项ID数组。

代码语言:javascript
复制
[organization] => [ 12345 ]

但是上面的代码是发送一个字符串数组:

代码语言:javascript
复制
[organization] => [ "Another Test" ]

那不管用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64610577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档