2017-06-24 1 views
0

J'ai des problèmes pour configurer un webhook pour "Survey Monkey". Selon les documents de l'API: Survey Monkey - webhook Je pense avoir tous les arguments requis couverts dans mon code et toujours je reçois l'erreur "Schéma invalide dans le corps fourni". Cela signifie principalement qu'il y a un problème avec les données de chaîne JSON POSTed. Mais je ne peux pas trouver ce qui est faux ...Php curl pour Survey Monkey API - webhook

ma boucle:

$surveyId = '123456789'; 
$data_string = array(
     'name' => 'my webhook 1233456789 name', 
     'event_type' => 'response_completed', 
     'object_type' => 'survey', 
     'object_ids' => array($surveyId), 
     'subscription_url' => 'http://sometunnel.ngrok.io/job-survey-monkey-listener/completed', 
    ); 
$data_string = json_encode($data_string); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://api.surveymonkey.net/v3/webhooks'); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: bearer 123myaccestoken456.abc.def', 'Content-Length: ' . strlen($data_string))); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 
$server_output = curl_exec($ch); 
curl_close($ch); 

var_dump(json_decode($server_output, true)); die; 

La décharge du retour de Survey Monkey est:

array (size=1) 
'error' => 
    array (size=5) 
     'docs' => string 'https://developer.surveymonkey.com/api/v3/#error-codes' (length=54) 
     'message' => string 'Invalid schema in the body provided.' (length=36) 
     'id' => string '1002' (length=4) 
     'name' => string 'Bad Request' (length=11) 
     'http_status_code' => int 400 

Que dois-je faire mal ici?

+2

Le corps semble bon, êtes-vous sûr que 'object_ids' est une liste d'identifiants comme * strings *? Votre exemple a l'ID codé en dur ''123456789'' sous la forme d'une chaîne mais peut-être que la valeur envoyant à travers dans le code réel n'est pas? –

+0

Trouvé, votre réponse a commencé à me faire réfléchir. J'ai envoyé l'id comme un entier en premier lieu dans mon code local et c'était faux. Dans mon exemple de code ci-dessus j'ai ajouté la ligne "$ surveyId = '123456789';" pour afficher ceci comme question sur Stack Overflow. C'est en fait le code correct! L'identifiant de l'enquête fonctionne uniquement avec une chaîne et non avec des entiers. Alors merci de me donner des conseils sur la question! – Julesezaar

Répondre

0

Grâce à General Kandalaft Survey Monkey API n'accepte pas les entiers pour créer un Curl afin de créer un nouveau webhook ... Vous devez envoyer des Id en tant que chaînes. Donc le code ci-dessus dans la question est correct.