Highrise API возвращает код ошибки 500
Я пытаюсь использовать PHP Wrapper для Highrise API, расположенного здесь:
https://github.com/ignaciovazquez/Highrise-PHP-Api
Мне нужно установить настраиваемое поле для объекта HighrisePerson. Согласно кодексу это должно быть довольно просто...
$person->setCustomField("Field Name", $value); // Pulled almost straight out of the documentation
К сожалению, когда я пытаюсь сохранить это обратно в Highrise, используя $person->save();
Я получаю следующую ошибку:
Uncaught exception 'Exception' with message 'API for Person returned Status Code: 500 Expected Code: 200'
Так что ошибки нет в коде... Highrise просто не принимает настраиваемое поле. Есть идеи, почему это так?
2 ответа
Хорошо... я понял это...
В API следующее:
$ person-> setCustomField ("Имя поля", $value);
создает новое настраиваемое поле в Highrise. Поэтому, если пользовательского поля с именем "Имя поля" еще нет, оно будет создано. Если это поле уже существует, оно возвращает ошибку 500.
Насколько я знаю, нет способа установить значение существующего поля с помощью этой оболочки. Вы можете создавать только новые поля, что является своего рода рывком.
Я нашел вилку на той обертке, которая мне очень подходит. Это размещено здесь: https://github.com/AppSaloon/Highrise-PHP-Api
Использование в этом сбивает с толку и заняло у меня некоторое время, чтобы выяснить.
По сути, вы хотите выполнить поиск всех пользовательских полей в Highrise. Как только вы найдете тот, который вам нужен, вы назначите ему необходимое значение... Итак, код выглядит так:
// Load up all the custom fields out of Highrise
$cfields = $highrise->findAllCustomfields();
// Search each custom field until we find the "Field Name" one. When we do, add it to our Highrise Person.
foreach ($cfields as $c) {
if ($c->getSubjectFieldLabel() == "Field Name")
{
// Assign that custom field to the person
$highrisePerson->addCustomfield($c, "Field Value");
}
}
Я надеюсь, что это поможет кому-то еще в будущем, кто сталкивается с той же проблемой. Я обнаружил раздвоенную оболочку PHP из другого вопроса о переполнении стека, но они так и не смогли заставить работать настраиваемые поля.
Чтобы использовать 37 сигналов через Highrise-PHP-Api, вы должны предоставить имя учетной записи и токен доступа;
$hr = new HighriseAPI();
$hr->setAccount("accountname");
$hr->setToken("token");
и тогда вы можете выполнять свои другие функции
$person->setCustomField("Field Name", $value);
Если вы внимательно посмотрите на тесты для этого API, вы увидите;
if (count($argv) != 3)
die("Usage: php users.test.php [account-name] [access-token]\n");