Я пишу небольшой плагин для отправки новых пользовательских данных в Capsule CRM через их API.Я могу успешно создать новый объект «Персона» и новую «Задачу», но для того, чтобы связать 2 из них, мне нужно выполнить действия в следующем порядке:
- Отправить сведения о партии в Capsule по адресусоздать новую партию (выполняется через wp_remote_post)
- Получить тело ответа из этого поста и взять идентификатор части из тела
- Отправить детали задачи в Capsule через wp_remote_post, определяющий идентификатор партиикак это взято из ответа первого поста.
Кажется, многие проблемы заключаются в том, что я не могу получить идентификатор из ответа тела первого поста, поэтому задача постоянно публикуется без привязки кСторона, с которой он связан.
Мой код плагина - это верхний фрагмент кода, а ниже приведен пример JSON для того, как выглядит ответ партии.Любые указатели были бы действительно полезны.
Спасибо
// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
die;
}
//Find the details of a new user
add_action('um_registration_complete', 'send_doqaru_user', 10, 2);
//add_action ('um_registration_complete' , 'doqaru_redirect_home', 10, 2);
function send_doqaru_user ($user_id){
$new_doqaru_user = get_userdata($user_id);
$doqaru_user_email = $new_doqaru_user -> user_email;
$doqaru_user_phone = $new_doqaru_user -> contact_number;
// get all the meta data of the newly registered user
$new_user_data = get_user_meta($user_id);
// get the first name of the user as a string
$doqaru_user_firstname = get_user_meta( $user_id, 'first_name', true );
$doqaru_user_lastname = get_user_meta( $user_id, 'last_name', true );
if ($doqaru_user_email) {
error_log ($doqaru_user_email);
}
if( ! $new_doqaru_user ){
error_log( 'Unable to get userdata!' );
return;
}
$url = 'https://api.capsulecrm.com/api/v2/parties';
$body = array(
'party' => array(
'type' => 'person',
'firstName' => $doqaru_user_firstname,
'lastName' => $doqaru_user_lastname,
'phoneNumbers' => array(
array(
'type' => 'Work',
'number' => $doqaru_user_phone
)
),
'emailAddresses' => array(
array(
'address' => $doqaru_user_email,
'type' => 'Work'
))));
$args = array(
'method' => 'POST',
'timeout' => 45,
'sslverify' => false,
'headers' => array(
'Authorization' => 'Bearer Token goes here',
'Content-Type' => 'application/json',
),
'body' => json_encode($body),
);
$request = wp_remote_post( $url, $args );
if ( is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) != 201 ) {
error_log( print_r( $request, true ) );
}
$response = wp_remote_retrieve_body($request);
$bodyresponse = json_decode($response, true);
$partyid = $bodyresponse ["party"]["id"];
if ($partid) {
error_log("the party ID is" . $partyid);
} else {
error_log ("Could not retrieve a Party ID");
}
//CREATE THE NEW TASK WITH THE ID OF THE NEW USER
$taskurl = 'https://api.capsulecrm.com/api/v2/tasks';
$taskbody = array(
"task" => array(
"party" => array(
'id' => $partyid,
'type' => 'person'),
"description" => "Follow up on new created user incase it is a lead",
"dueOn" => "2019-04-20"
)
);
$taskargs = array(
'method' => 'POST',
'timeout' => 45,
'sslverify' => false,
'headers' => array(
'Authorization' => 'Bearer token goes here',
'Content-Type' => 'application/json',
),
'body' => json_encode($taskbody),
);
$taskrequest = wp_remote_post( $taskurl, $taskargs );
}
//REDIRECTION TO DOWNLOADS PAGE
function doqaru_redirect_home() {
wp_redirect (home_url() . '/member-downloads');
exit;
}
Хорошо, поэтому я немного подправил свой код, и если я var_dump мой $ body_response, то я получу приведенный ниже массив ассоциаций.Но когда я error_log мой $ partyid, он не может найти значение?
array(1) {
["party"]=>
array(18) {
["id"]=>
int(182528177)
["owner"]=>
NULL
["team"]=>
NULL
["type"]=>
string(6) "person"
["about"]=>
NULL
["title"]=>
NULL
["firstName"]=>
string(6) "Daniel"
["lastName"]=>
string(10) "Sutherland"
["jobTitle"]=>
NULL
["createdAt"]=>
string(20) "2019-03-29T15:02:33Z"
["updatedAt"]=>
string(20) "2019-03-29T15:02:33Z"
["organisation"]=>
NULL
["lastContactedAt"]=>
NULL
["pictureURL"]=>
string(59) "https://facehub.appspot.com/default/person?text=DS&size=100"
["phoneNumbers"]=>
array(1) {
[0]=>
array(3) {
["id"]=>
int(371335500)
["type"]=>
string(4) "Work"
["number"]=>
string(11) "07507681488"
}
}
["addresses"]=>
array(0) {
}
["emailAddresses"]=>
array(1) {
[0]=>
array(3) {
["id"]=>
int(371335501)
["type"]=>
string(4) "Work"
["address"]=>
string(24) "d.sutherland86@gmail.com"
}
}
["websites"]=>
array(0) {
}
}
}