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代码一样
首先,由于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)
这是可调用函数中的 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