geeh / twrap
Twilio PHP 库的便捷包装器。
dev-main
2021-03-31 09:05 UTC
Requires
- brick/phonenumber: ^0.2.2
- psr/http-server-middleware: ^1.0
- twilio/sdk: ^6
Requires (Dev)
- pestphp/pest: ^1.0
- vimeo/psalm: ^4.6
This package is auto-updated.
Last update: 2024-09-29 05:56:24 UTC
README
- Twilio PHP 库的便捷包装器
这是一个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。