2

iContact の API を使用して、単一の連絡先レコードの住所を更新する必要があります。

API はこちら: https://github.com/icontact/icontact-api-php

具体的には、更新したいですstreet2

API には、15 個のパラメーターを受け取る「updateContact」関数があります。次に例を示します。

updateContact($currentContactId, null, null, null, null, null, null,'My second address', null, null, null, null, null, null, null);

API が URI を作成するので、問題ありません。また、それを POST に設定します (これも、API が連絡先を更新するために必要なものです)。

API によって作成された URI の例を次に示します。

https://app.sandbox.icontact.com/icp/a/913463/c/133578/contacts/67295434

最後の桁67295434は、連絡先の一意の ID です。

BODY リクエストも問題ないようです。

[{"street2":"My second address"}]

curl_execしかし、取得後の JSON 応答は次のとおりです。

  {"contact":
    {
    "contactId":"67295434",
    "prefix":"Mr.",
    "firstName":"Joe",
    "lastName":"Williams",
    "suffix":"Jr.",
    "street":"2365 Meridian Parkway",
    "street2":"",
    "city":"Durham",
    "state":"NC",
    "postalCode":"27713",
    "phone":"8668039462",
    "fax":"",
    "business":"iContact",
    "email":"joewilliams@icontact.com",
    "createDate":"2013-03-30 21:22:28",
    "bounceCount":"","status":"normal",
    "interestedinseo":"1",
    "wheredoyoulive":"New York"
    },

    "warnings":["Invalid field: 0"]
  }

API にバグがあると思われますが、見つけられません。それとも私は愚かな何かを逃していますか?アイデアはありますか?

4

1 に答える 1

6

iContact APIは、次の形式の更新 JSON 文字列を 想定しています。

{"street2":"My second address"}  

ただし、API ラッパーは更新データを次の形式で送信しています。

[{"street2":"My second address"}]  

したがって、関数 updateContact() で次の行を変更する必要があります。

$oContact = $this->makeCall("/a/{$this->setAccountId()}/c/{$this->setClientFolderId()}/contacts/{$iContactId}", 'POST', array($aContact), 'contact');  

...これに:

$oContact = $this->makeCall("/a/{$this->setAccountId()}/c/{$this->setClientFolderId()}/contacts/{$iContactId}", 'POST', $aContact, 'contact');
于 2013-04-14T11:57:20.613 に答える