geeh/twrap

Twilio PHP 库的便捷包装器。

dev-main 2021-03-31 09:05 UTC

This package is auto-updated.

Last update: 2024-09-29 05:56:24 UTC


README

  • Twilio PHP 库的便捷包装器

example workflow

这是一个Twilio SDK库的便捷包装器,因为每个人都不喜欢处理数组,而且我厌倦了编写中间件来保护传入的webhooks。目标是逐步包装生成的SDK,尽可能多地返回对象,从最常用的端点开始。

创建客户端

您可以使用工厂方法创建一个新的 TwrapClient 实例。

$client = \Twrap\Factory::create('MYACCOUNTSID', 'MYSUPERSECRETAUTHTOKEN');

使用客户端

一旦您有了客户端,您可以使用这些可爱的API方法获取对象,例如查找消息的详细信息。

var_dump($client->messageDetails('SM322bd06e7c948e05461cc5c5dea3797b'));
class Twrap\Model\Message#11 (20) {
  public string $body =>
  string(45) "Hello, drop me an email at ghockin@twilio.com"
  public int $numSegments =>
  int(1)
  public string $direction =>
  string(14) "outbound-reply"
  public string $from =>
  string(13) "+447123456789"
  public string $to =>
  string(13) "+447987654321"
  public ?DateTimeImmutable $dateUpdated =>
  class DateTimeImmutable#12 (3) {
    public $date =>
    string(26) "2021-03-22 16:23:25.000000"
    public $timezone_type =>
    int(1)
    public $timezone =>
    string(6) "+00:00"
  }
  public string $price =>
  string(8) "-0.04000"
  public ?string $errorMessage =>
  string(31) "Unreachable destination handset"
  public string $uri =>
  string(104) "/2010-04-01/Accounts/ACb877821242bbaedc246328ca0a8c3fc6/Messages/SM322bd06e7c948e05461cc5c5dea3797b.json"
  public string $accountSid =>
  string(34) "ACb877821242bbaedc246328ca0a8c3fc6"
  public int $numMedia =>
  int(0)
  public string $status =>
  string(11) "undelivered"
  public ?string $messagingServiceSid =>
  NULL
  public string $sid =>
  string(34) "SM322bd06e7c948e05461cc5c5dea3797b"
  public ?DateTimeImmutable $dateSent =>
  class DateTimeImmutable#17 (3) {
    public $date =>
    string(26) "2021-03-20 15:18:11.000000"
    public $timezone_type =>
    int(1)
    public $timezone =>
    string(6) "+00:00"
  }
  public ?DateTimeImmutable $dateCreated =>
  class DateTimeImmutable#18 (3) {
    public $date =>
    string(26) "2021-03-20 15:18:11.000000"
    public $timezone_type =>
    int(1)
    public $timezone =>
    string(6) "+00:00"
  }
  public ?string $errorCode =>
  string(5) "30003"
  public string $priceUnit =>
  string(3) "USD"
  public string $apiVersion =>
  string(10) "2010-04-01"
  public array $subresourceUris =>
  array(2) {
    'media' =>
    string(110) "/2010-04-01/Accounts/ACb877821242bbaedc246328ca0a8c3fc6/Messages/SM322bd06e7c948e05461cc5c5dea3797b/Media.json"
    'feedback' =>
    string(113) "/2010-04-01/Accounts/ACb877821242bbaedc246328ca0a8c3fc6/Messages/SM322bd06e7c948e05461cc5c5dea3797b/Feedback.json"
  }
} 

中间件

有一个PSR-15中间件可用于自动检查添加了Twilio安全头部的任何请求。这可以防止Twilio的伪造请求,并保护您的webhooks不会被意外调用。您可以在使用PSR-15中间件的地方添加它。例如,在Slim Framework中。

<?php

use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;

require __DIR__.'/../vendor/autoload.php';

$app = AppFactory::create();

$client = \Twrap\Factory::create(getenv('TWILIO_DEMO_ACCOUNT_SID'), getenv('TWILIO_DEMO_AUTH_TOKEN'));
$middleware = new \Twrap\Middleware\TwilioWebhookMiddleware($client);

$app->post(
    '/',
    function (Request $request, Response $response, $args) {
        $response->getBody()->write("Hello world!");
        $response = $response->withAddedHeader('Content-Type', 'text/plain');
        $response = $response->withStatus(200);
        return $response;
    }
)->addMiddleware($middleware);

$app->run();

贡献

请随时贡献,无论是告诉我哪些方法最有用,编写代码,提交错误报告,还是在Twitter上给我加油@GeeH