Twilio不使用curl php

fed*_*ick 2 php json curl twilio

我正在使用TWILIO SMS,我正在使用试用帐户,一切都在使用纯PHP库,但我在使用CURL和PHP时遇到了问题

require "Services/Twilio.php";
$AccountSid = "SANDBOX_ACC_ID"; 
$AuthToken = "SANDBOX_TOKEN";
$client = new Services_Twilio($AccountSid, $AuthToken);
$message = $client->account->messages->create(array(
"From" => "+MAGICNUMBER",
"To" => "+XXXXXXXXXX",// twilio trial verified number
"Body" => "Test message 2 from Fedrick!",
));
// Display a confirmation message on the screen
echo "testing with php message {$message->sid}";
Run Code Online (Sandbox Code Playgroud)

纯php输出:

testing with php message SMxxxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

代码我尝试过使用CURL和PHP(不能正常工作)

$url = "https://api.twilio.com/2010-04-01/Accounts/SANDBOX_ACC_ID/SMS/Messages.json";
$from = "+MAGICNUMBER";
$to = "+XXXXXXXXXX"; // twilio trial verified number
$body = "using twilio rest api from Fedrick";
$id = "SANDBOX_ACC_ID";
$token = "SANDBOX_TOKEN";
$data = array (
        'From' => $from,
        'To' => $to,
        'Body' => $body,

    );
$post = http_build_query($data);
$x = curl_init($url );
curl_setopt($x, CURLOPT_POST, true);
curl_setopt($x, CURLOPT_RETURNTRANSFER, true);
curl_setopt($x, CURLOPT_USERPWD, "$id:$token");
curl_setopt($x, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($x, CURLOPT_POSTFIELDS, $post);
var_dump($post);
$y = curl_exec($x);
var_dump($y);
curl_close($x);
Run Code Online (Sandbox Code Playgroud)

输出使用Curl php:

bool(false) 
Run Code Online (Sandbox Code Playgroud)

我在curl代码中做了什么错...有没有使用纯PHP库的任何解决方案,我想使用简短的代码,就像上面的CURL代码一样

hin*_*ost 9

首先,由于API的URL是安全的,因此您必须通过将CURLOPT_SSL_VERIFYPEER选项设置为禁用SSL对等验证false.

此外,根据API文档,请求的URL依赖于帐户,即应根据您的帐户沙箱ID构建:

https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages
Run Code Online (Sandbox Code Playgroud)

所以代码应如下所示:

$id = "SANDBOX_ACC_ID";
$token = "SANDBOX_TOKEN";
$url = "https://api.twilio.com/2010-04-01/Accounts/$id/SMS/Messages";
$from = "+MAGICNUMBER";
$to = "+XXXXXXXXXX"; // twilio trial verified number
$body = "using twilio rest api from Fedrick";
$data = array (
    'From' => $from,
    'To' => $to,
    'Body' => $body,
);
$post = http_build_query($data);
$x = curl_init($url );
curl_setopt($x, CURLOPT_POST, true);
curl_setopt($x, CURLOPT_RETURNTRANSFER, true);
curl_setopt($x, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($x, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($x, CURLOPT_USERPWD, "$id:$token");
curl_setopt($x, CURLOPT_POSTFIELDS, $post);
$y = curl_exec($x);
curl_close($x);
var_dump($post);
var_dump($y);
Run Code Online (Sandbox Code Playgroud)


Kae*_*het 5

这是可调用函数中的 PHP - Curl 实现

function send_sms($number,$body)
{
    $ID = '1234567890abcdef1234567890abcdef12';
    $token = '1234567890abcdef1234567890abcdef';
    $service = 'AB1234567890abcdef1234567890abcdef';
    $url = 'https://api.twilio.com/2010-04-01/Accounts/' . $ID . '/Messages.json';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);

    curl_setopt($ch, CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
    curl_setopt($ch, CURLOPT_USERPWD,$ID . ':' . $token);

    curl_setopt($ch, CURLOPT_POST,true);
    curl_setopt($ch, CURLOPT_POSTFIELDS,
        'To=' . rawurlencode('+' . $number) .
        '&MessagingServiceSid=' . $service .
        //'&From=' . rawurlencode('+18885550000') .
        '&Body=' . rawurlencode($body));

    $resp = curl_exec($ch);
    curl_close($ch);
    return json_decode($resp,true);
}
Run Code Online (Sandbox Code Playgroud)

$ID 和 $token 可以在 SMS / Dashboard / 'Show API Credentials' 下找到 https://www.twilio.com/console/sms/dashboard

(可选)$service 可以在 SMS / Messaging Services / 'SID' 下找到https://www.twilio.com/console/sms/services

注释掉“MessagingServiceSid=”并取消注释“From=”以使用从单个电话号码直接发送的功能

最后,关键信息可以在此处的知识库中找到:https://www.twilio.com/docs/sms/send-messages#send-a-message-with-an-image-url