我正在使用 Twilio 的 PHP SDK 发送短信。下面是代码:
<?php
// Required if your environment does not handle autoloading
require './autoload.php';
// Use the REST API Client to make requests to the Twilio REST API
use Twilio\Rest\Client;
// Your Account SID and Auth Token from twilio.com/console
$sid = 'XXXXXXXXXXXXXXXXXXXXXXXX';
$token = 'XXXXXXXXXXXXXXXXXXXX';
$client = new Client($sid, $token);
// Use the client to do fun stuff like send text messages!
$client->messages->create(
// the number you'd like to send the message to
'+XXXXXXXXXX',
array(
// A Twilio phone number you purchased at twilio.com/console
'from' => '+XXXXXXXX',
// the body of the text message you'd like to send
'body' => 'Hey Jenny! Good luck on the bar exam!'
)
);
**Response:
[Twilio.Api.V2010.MessageInstance accountSid=XXXXXXXXXXXXXXXX sid=XXXXXXXXXXXXXXX]**
如何获取 JSON 格式的响应? 如有任何帮助,我们将不胜感激。
我不确定我是否正确理解了您的意图,但是,我创建了一个新的 GitHub 存储库,如果您仍然感兴趣,我希望它能为您提供所需的信息。
调用
MessageInstance
返回的 $client->messages->create()
对象在传递给 json_encode()
时不会返回任何值。这是因为相关属性包含在受保护的属性中,因此json_encode()
无法访问它们。
解决这个问题的一个选择是使用一个实现 JsonSerialized 并返回
MessageInstance
对象的 JSON 表示形式的类,例如 JsonMessageInstance。
看看代码,让我知道这是否符合您的要求。
快速回答是:
$json_string = json_encode(</POST|GET>);
使用
$_POST
或 $_GET
超级全局变量,你会得到一个 json 字符串格式。
例如
/*
* Imagine this is the POST request
*
* $_POST = [
* 'foo' => 'Hello',
* 'bar' => 'World!'
* ];
*
*/
$json_string = json_encode($_POST); // You get → {"foo":"Hello","bar":"World!"}
通过这种方式,您可以将值编码为 JSON 表示形式。
Twilio 提供了一个响应,虽然它不能直接通过管道传输到 json_encode,但包含一个 php magic get 方法,可用于读取 JSON 响应属性:
$response = $twilio->messages->create(
$sms_enrollment->sms_number,
array(
'from' => TWILIO_NUMBER,
'body' => $message
)
);
echo $response->sid . PHP_EOL; // Prints the message SID
echo $response->body . PHP_EOL; // Prints the message body
echo $response->status . PHP_EOL; // Prints the message status (probably "queued")
您可以使用它们来创建自己的对象并对其进行编码/保存:
$saveThis = new stdClass;
$saveThis->sid = $response->sid;
$saveThis->status = $response->status;
$saveThis->body = $response->body;
$json = json_encode($saveThis); // {"sid":"SMe3e123456789123456789a1","status":"queued","body":"hello world!"}
您可以在 Twilio 存储库中找到可访问属性的完整列表。查看
public function __construct
部分中的 $this->properties =
此外,您可能希望将对
$twilio->messages->create()
的呼叫包装在 异常处理程序 中,因为如果目标电话号码无效,它可能会引发异常。