API поиска Twilio не работает?
Я пытаюсь использовать Twilio Lookup API для получения определенных свойств мобильного номера через PHP... с очень небольшим успехом:
$twilioClient = new Lookups_Services_Twilio(Credential::TwilioSID, Credential::TwilioToken);
$number = $twilioClient->phone_numbers->get($someNumber);
Обратите внимание, что это пример кода, присутствующего на странице "Приступая к работе" здесь.
Взглянув на $number
в отладчике, я могу подтвердить, что он что-то возвращает:
![enter image description here]()
Выделенное свойство объекта просто рекурсивно без новой информации.
Попытка оценить $number->phone_number
возвращает null
. Я пробовал это, возможно, с полдюжины вполне допустимых чисел, и это единственный ответ, который я получаю.
Попытка json_encode($number)
возвращает false
.
Я понятия не имею, почему это не работает, но было бы полезно, если бы я мог знать, что я делаю неправильно.
Ответы
Ответ 1
Я собираюсь пойти дальше и предположить, что номера телефонов, которые вы пробовали, не являются ни из США, ни в международном формате.
Из Twilio Поиск в Quickstart Учебник:
Вы хотите указать код страны для номера телефона, который вы хотите отформатировать. Если он не включен, код страны будет по умолчанию для США.
Итак, ваш поиск должен выглядеть следующим образом:
$number = $twilioClient->phone_numbers->get($someNumber, array('CountryCode' => 'NZ'));
Если номера телефонов указаны из США, в международном формате или если выше все еще не работает, попробуйте выполнить поиск в Twilio web интерфейс (здесь вам понадобится международный префикс).
Если это так, ваша библиотека программного обеспечения может быть повреждена или ваша учетная запись Twilio может иметь неправильные/неработающие права доступа.
Если поиск в Интернете также терпит неудачу, вы должны связаться с Twilio и сообщить о проблеме.
Ответ 2
Я бы тоже не успел с их кодом, поэтому я использовал CURL, чтобы захватить их методы API, и это сработало как прелесть для меня, вы можете попробовать следующий код, который вам понадобится
$base_url = "https://lookups.twilio.com/v1/PhoneNumbers/+1XXXXXXXXXX";
$ch = curl_init($base_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$account_sid:$auth_token");
$response = curl_exec($ch);
$response = json_decode($response);
echo "<pre>"; print_r($response); echo "</pre>";
Он вернет вам несколько параметров (country_code, national_format, carrier)
Ответ 3
Теперь 9-6-2016, и они все еще не исправили свою библиотеку PHP...
Тем не менее, это то, что сработало для меня. Если вам нужна дополнительная информация, например, имя вызывающего абонента и т.д., Вы должны сначала включить это в своей панели инструментов twilio.
require 'includes/twilio/Services/Twilio.php';
// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "YOUR-SID";
$token = "YOUR-TOKEN";
$client = new Lookups_Services_Twilio($sid, $token);
// Lookup
$phoneNumber = rawurlencode("(000) 000-0000");
$full_path = $client->phone_numbers->uri . "/$phoneNumber" . "?CountryCode=US&Type=carrier&Type=caller-name";
$number = new $client->phone_numbers->instance_name($client, $full_path);
echo "Caller name:" . $number->caller_name->caller_name;
echo "<br>";
echo "Caller type:" . $number->caller_name->caller_type;
echo "<br>";
echo "Carrier type:" . $number->carrier->type . "\r\n";
echo "<br>";
echo "Carrier name:" . $number->carrier->name;
echo "<br>";
echo "Phone number:" . $number->phone_number;
echo "<br>";
echo "Country code:" . $number->country_code;