我尝试使用Twilio的Lookup API通过PHP获取手机号码的某些属性......但收效甚微:
private List<Elemento> combinazioneMassima = new ArrayList<>();
private Log logger = LogFactory.getLog(Combinazioni3.class);
public Combinazioni3(List<Elemento> generaCombinazioneMassima) {
this.combinazioneMassima = generaCombinazioneMassima;
}
public void combine() {
this.findAllCombinations(combinazioneMassima);
}
private static class Node{
int lastIndex = 0;
List<Elemento> currentList;
public Node(int lastIndex, List<Elemento> list) {
this.lastIndex = lastIndex;
this.currentList = list;
}
public Node(Node n) {
this.lastIndex = n.lastIndex;
this.currentList = new ArrayList<Elemento>(n.currentList);
}
}
public void findAllCombinations(List<Elemento> combinazioni) {
Date dataInizio = new Date();
List<List<Elemento>> resultList = new ArrayList<List<Elemento>>();
LinkedList<Node> queue = new LinkedList<Node>();
int n = combinazioni.size();
ArrayList<Elemento> temp = new ArrayList<Elemento>();
temp.add(combinazioni.get(0));
queue.add(new Node(0, temp));
// add all different integers to the queue once.
for(int i=1;i<n;++i) {
if(combinazioni.get(i-1) == combinazioni.get(i)) continue;
temp = new ArrayList<Elemento>();
temp.add(combinazioni.get(i));
queue.add(new Node(i, temp));
}
// do bfs until we have no elements
while(!queue.isEmpty()) {
Node node = queue.remove();
if(node.lastIndex+1 < n) {
Node newNode = new Node(node);
newNode.lastIndex = node.lastIndex+1;
newNode.currentList.add(combinazioni.get(node.lastIndex+1));
queue.add(newNode);
}
for(int i=node.lastIndex+2;i<n;++i) {
if(combinazioni.get(i-1) == combinazioni.get(i)) continue;
// create a copy and add extra integer
Node newNode = new Node(node);
newNode.lastIndex = i;
newNode.currentList.add(combinazioni.get(i));
queue.add(newNode);
}
GestoreRegole gestoreRegole = new GestoreRegole();
gestoreRegole.esegui(node.currentList);
}
}
请注意,这是他们的“入门”中的示例代码。第here页。
通过查看调试器中的 $twilioClient = new Lookups_Services_Twilio(Credential::TwilioSID, Credential::TwilioToken);
$number = $twilioClient->phone_numbers->get($someNumber);
,我可以确认它正在返回一些内容:
对象的突出显示属性只是递归而没有新信息。
尝试评估$number
返回$number->phone_number
。我已经尝试了这个,现在可能有六个完全有效的数字,这是我得到的唯一回应。
尝试null
返回json_encode($number)
。
我不知道为什么这不起作用,但如果我能知道我做错了什么,它会有所帮助。
答案 0 :(得分:10)
我也不会成功定义他们的代码,所以我使用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)
答案 1 :(得分:5)
我要继续假设您尝试的电话号码既不是来自美国,也不是国际格式。
来自Twilio的Lookups Quickstart Tutorial:
您需要包含要格式化的电话号码的国家/地区代码。如果未包含,则国家/地区代码将默认为美国。
所以你的查找可能应该是这样的:
$number = $twilioClient->phone_numbers->get($someNumber, array('CountryCode' => 'NZ'));
如果电话号码 来自美国,采用国际格式,或者上述情况仍不起作用,请尝试在Twilio的web interface上查找是否成功(您需要国际前缀)。
如果是这样,您的软件库可能会损坏,或者您的Twilio帐户可能有不正确/损坏的访问权限。
如果网络查找失败,您应该contact Twilio并报告问题。
答案 2 :(得分: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;