Twilio查找API无法正常工作?

时间:2015-07-11 08:13:04

标签: php laravel sms twilio

我尝试使用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); ,我可以确认它正在返回一些内容:

enter image description here

对象的突出显示属性只是递归而没有新信息。

尝试评估$number返回$number->phone_number。我已经尝试了这个,现在可能有六个完全有效的数字,这是我得到的唯一回应。

尝试null返回json_encode($number)

我不知道为什么这不起作用,但如果我能知道我做错了什么,它会有所帮助。

3 个答案:

答案 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;