2017-03-20 4 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を参照する場合:

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

これは私が受け取るものです:

{ 
    "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を見ることができています私のコールバック・リスナー・スクリプトを呼び出す5回の試行が最終的にCALLBACK_FAILEDになります。しかし、私のコールバックスクリプトはHTTP/1.1 200 OKしか含んでおらず、うまく動作するはずです。これは何らかの理由で私のコールバックスクリプトに到達できないことを伝えます。私のサイトは、共有ホスティングプラットフォームのSSLを使用してGoDaddyでホストされています。

GoDaddyが特定のWebhookトラフィックをブロックするかどうかは誰でも知っていますか?どんな助けもありがとう!

私はFullContactのドキュメントを見直そうとしましたが、ウェブフックがデータをどのように返信しているかについてはっきりとした説明はありませんでした。

答えて

1

私はウェブホスト(GoDaddy)とFullContactの両方に手を差し伸べました。私はGoDaddyと共有ホスティングプラットフォームを持っているので、大量のポート番号を制限しています。 FullContactでは、ポート80または443のみを使用していることが保証されています。

これを解決するために、ローカルxamppサーバーを作成して公開する必要がありました。それから、FullContactにローカルサーバを私のwebhookとして使うよう指示しました。

私はいくつかのテストを実行し、IPアドレス、ホスト名、およびポート番号を取得するためにphpを使用しました。ここでの結果です:


テストは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

関連する問題