2017-03-20 16 views
1

FullContact Card Reader API를 사용하고 있습니다. 명함을 처리하라는 요청을 내릴 때부터, FullContact API에 명함 이미지를 webhook과 함께 보내야합니다.FullContact Webhook 콜백 실패

전송 스크립트 :

<?php 
$APIkey = 'my FullContact api key'; 
$callback_url = 'https://www.my-domain.com/my-callback-listener.php'; 
$url = "https://api.fullcontact.com/v2/cardReader?format=json&webhookUrl=$callback_url; 
$imageAsBase64 = base64_encode(file_get_contents('path-to-image-including-extension')); 
$requestBody = array(); 
$requestBody['front'] = $imageAsBase64; 

$connection = curl_init(); 
curl_setopt($connection, CURLOPT_URL, $url); 
curl_setopt($connection, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($connection, CURLOPT_POST, true); 
curl_setopt($connection, CURLOPT_POSTFIELDS, json_encode($requestBody)); 
curl_setopt($connection, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'X-FullContact-APIKey: $APIkey')); 

$result = curl_exec($connection); 

echo json_encode(array('result' => $result)); 
?> 

콜백 리스너 스크립트

<?php 
header('HTTP/1.1 200 OK'); 
?> 

나는 컬 결과가 FullContact API에 의해 할당 된 ID를 포함하고 있기 때문에 보내는 스크립트가 작동 알고있다. 내가 수동으로 브라우저에 다음 URL을 입력하여 해당 ID를 참조 할 때 그런 :

{ 
    "id": "id-assigned-from-FullContact", 
    "lastWebhookAttempt": "2017-03-20T18:41:57.000Z", 
    "vCardUrl":  "https://d1h3f0foa0xzdz.cloudfront.net/2971518/special-link-to-vcf-card.vcf", 
    "status": "CALLBACK_FAILED", 
    "webhookAttempts": 5, 
    "webhookUrl":  "https://www.my-domain.com/my-callback-listener.php", 
    "quality": "LOW", 
    "submitted": "2017-03-20T18:28:27.000Z", 
    "contact": { 
     "photos": [{ 
      "primary": true, 
      "value": "https://d1h3f0foa0xzdz.cloudfront.net/2971518/special-link-to-image-of-business-card.png", 
      "type": "BusinessCard" 
     }], 
     "organizations": [{ 
      "title": "Senior Sales Consultant", 
      "isPrimary": true, 
      "name": "Company ABC" 
     }], 
     "name": { 
      "middleName": null, 
      "honorificPrefix": null, 
      "familyName": "Meek", 
      "givenName": "Jack", 
      "honorificSuffix": null 
     }, 
     "emails": [{ 
      "value": "[email protected]", 
      "type": "Work" 
     }], 
     "phoneNumbers": [ 
      { 
      "value": "+1 123-987-6543 ext. 5159069", 
      "type": "Work" 
      }, 
      { 
      "value": "+1 123-456-6789", 
      "type": "Mobile" 
      }, 
      { 
      "value": "886 123-4567", 
      "type": "Work Fax" 
      } 
     ], 
     "addresses": [{ 
      "region": null, 
      "streetAddress": "1234 Nowhere Dr,", 
      "formatted": null, 
      "postalCode": "48377", 
      "extendedAddress": null, 
      "locality": "Novi", 
      "type": "Work", 
      "country": "United States" 
     }] 
    } 
} 

당신은 FullContact API가 위의 결과에서 볼 수 있습니다

https://api.fullcontact.com/v2/cardReader/{id-assigned-from-FullContact}?apiKey={my-FullContact-api-key}

이 내가받을 것입니다 콜백 리스너 스크립트를 5 번 시도하면 궁극적으로 CALLBACK_FAILED이됩니다. 그러나, 내 콜백 스크립트에만 잘 작동합니다 HTTP/1.1 200 OK 포함되어 있습니다. 이것은 내 콜백 스크립트가 어떤 이유로 연결되지 않는다는 것을 알려줍니다. 내 사이트가 공유 호스팅 플랫폼 SSL을 사용하여 GoDaddy에서 호스팅되고 있습니다.

GoDaddy가 특정 웹 훅 트래픽을 차단하는지 알고 싶습니다. 어떤 도움을 주시면 감사하겠습니다!

FullContact 설명서를 검토했지만 웹 후크가 데이터를 다시 보내는 방식에 대한 명확한 세부 정보를 제공하지 못했습니다.

답변

1

그래서 웹 호스트 (GoDaddy)와 FullContact에 다가갔습니다. GoDaddy와 공유 호스팅 플랫폼을 사용하여 포트 번호를 제한합니다. FullContact는 포트 80 또는 443 만 사용한다는 것을 확인했습니다.

이 문제를 해결하기 위해 로컬 xampp 서버를 만들어 공개적으로 사용할 수 있도록했습니다. 그런 다음 FullContact에 로컬 서버를 내 webhook으로 사용하도록 지시했습니다.

나는 몇 가지 테스트를 실시하고 PHP를 사용하여 IP 주소, 호스트 이름 및 포트 번호를 가져 왔습니다. 다음은 결과입니다 :


테스트 1.

호스트 주소 : 52.70.48.63

호스트 이름 : ec2-52-70-48-63.compute-1.amazonaws.com

포트 번호 : 63498


테스트 2.

호스트 주소 : 52.70.48.63

호스트 이름 : ec2-52-70-48-63.compute-1.amazonaws.com

포트 번호 : 4169


테스트 3.

호스트 주소 : 52.70.48.63

호스트 이름 : ec2-52-70-48-63.compute-1.amazonaws.com

포트 번호 : 61425


모든 반환 된 포트 번호는 GoDaddy에 의해 차단됩니다. FullContact에서 데이터를 다시받는 유일한 방법은 로컬 서버를 사용하는 것이 었습니다. 경우 폐쇄. 희망 이것은 언젠가 누군가를 돕는 것을 끝내었다!

+0

안녕하세요,이 오류를 해결합니다. 내 webhook URL도 작동하지 않습니다. –

+0

@sujal은 GoDaddy가 공을 빨아 먹는 것으로 나타났습니다. 테스트 할 로컬 서버를 설정했는데 잘 작동했습니다. 그런 다음 다른 호스팅 업체 인 "fastComet"으로 호스팅을 전환했습니다. 전환 할 경우 GoDaddy와 같은 포트를 제한하지 않는지 확인하십시오. – Austin

+0

서버가 가장 문제 일 수 있습니다. 서버 문제가 아니라면 여기에 코드를 게시하십시오. 코딩 문제 일 수 있습니다. – Austin