FullContact Webhook Callback не работает
Я использую FullContact Card Reader API. Из того, что я могу сказать, делая запрос на обработку визитной карточки, мне нужно отправить API-интерфейсу FullContact изображение визитной карточки вместе с веб-крючком.
скрипт отправки:
<?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');
?>
Я знаю, что скрипт отправки работает, потому что результат скручивания содержит идентификатор, назначенный API FullContact. Затем, когда я ссылаюсь на этот идентификатор, вручную введя следующий URL в мой браузер:
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"
}]
}
}
Вы можете видеть в приведенном выше результате, что API FullContact делает 5 попыток вызвать мой сценарий обратного вызова, что в итоге приводит к CALLBACK_FAILED
, Тем не менее, мой скрипт обратного вызова содержит только HTTP/1.1 200 OK
который должен работать просто отлично. Это говорит мне, что мой сценарий обратного вызова по какой-то причине недоступен. Мой сайт размещается на GoDaddy с использованием их платформы общего хостинга SSL.
Кто-нибудь знает, блокирует ли GoDaddy определенный трафик webhook? Любая помощь будет оценена!
Я попытался просмотреть документацию FullContact, но он не дал каких-либо четких подробностей о том, как веб-пользователи отправляют данные обратно.
1 ответ
В итоге я обратился к своему веб-хостеру (GoDaddy) и FullContact. У меня есть платформа общего хостинга с GoDaddy, поэтому они ограничивают тонну номеров портов. FullContact заверил меня, что они используют только порт 80 или 443.
Чтобы решить эту проблему, мне пришлось создать локальный сервер xampp и сделать его общедоступным. Затем я дал указание 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 - это использовать мой локальный сервер. Дело закрыто. Надеюсь, это помогло кому-нибудь когда-нибудь!