如何使用 twilio sdk 获取 json 格式的响应

问题描述 投票:0回答:3

我正在使用 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 格式的响应? 如有任何帮助,我们将不胜感激。

php twilio twilio-api twilio-php
3个回答
2
投票

我不确定我是否正确理解了您的意图,但是,我创建了一个新的 GitHub 存储库,如果您仍然感兴趣,我希望它能为您提供所需的信息。

调用

MessageInstance
返回的
$client->messages->create()
对象在传递给
json_encode()
时不会返回任何值。这是因为相关属性包含在受保护的属性中,因此
json_encode()
无法访问它们。

解决这个问题的一个选择是使用一个实现 JsonSerialized 并返回

MessageInstance
对象的 JSON 表示形式的类,例如 JsonMessageInstance

看看代码,让我知道这是否符合您的要求。


0
投票

快速回答是:

$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 表示形式。


0
投票

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()
的呼叫包装在 异常处理程序 中,因为如果目标电话号码无效,它可能会引发异常。

© www.soinside.com 2019 - 2024. All rights reserved.