1

FullContact カード リーダー API を使用しています。名刺を処理するリクエストを作成するときにわかることから、FullContact API に名刺の画像と 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');
 ?>

curl の結果には 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": "person@something.com",
          "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 のドキュメントを確認しようとしましたが、Webhook がデータを返送する方法について明確な詳細を提供できませんでした。

4

1 に答える 1

1

そのため、Web ホスト (GoDaddy) と FullContact の両方に連絡することになりました。GoDaddy と共有ホスティング プラットフォームを使用しているため、大量のポート番号が制限されています。FullContact は、ポート 80 または 443 のいずれかのみを使用すると保証しました。

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

いくつかのテストを実行し、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 からデータを受信する唯一の方法は、ローカル サーバーを使用することでした。ケースクローズ。これがいつか誰かを助けることを願っています!

于 2017-03-22T19:56:38.500 に答える