aloha/twilio

Laravel 的 Twilio API

资助包维护!
hannesvdvreken

安装量: 2,849,683

依赖关系: 8

建议者: 0

安全: 0

星标: 467

关注者: 30

分支: 160

5.0.0 2021-02-10 17:00 UTC

README

Laravel Twilio API 集成

Build Status Total Downloads Latest Stable Version License

安装

首先通过 Composer 安装此包。从终端运行以下命令

composer require aloha/twilio

这将为您注册两个新的 artisan 命令

  • twilio:sms
  • twilio:call

并将这些对象可解析地注册到 IoC 容器中

  • Aloha\Twilio\Manager(别名 twilio
  • Aloha\Twilio\TwilioInterface(解析一个 Twilio 对象,这是由 Manager 创建的默认连接对象)。

如果您想使用简短的类名,可以在 app.php 配置文件中将以下行添加到 aliases 数组中

'Twilio' => 'Aloha\Twilio\Support\Laravel\Facade',

您可以使用终端命令将默认配置文件发布到 config/twilio.php

php artisan vendor:publish --provider="Aloha\Twilio\Support\Laravel\ServiceProvider"

外观类

外观类具有与 Aloha\Twilio\TwilioInterface 完全相同的函数。首先,在文件顶部包含 Facade

use Twilio;

使用默认条目从您的 twilio 配置文件 发送消息

Twilio::message($user->phone, $message);

一个额外功能是可以定义要使用哪些设置(以及哪些发送者电话号码)

Twilio::from('call_center')->message($user->phone, $message);
Twilio::from('board_room')->message($boss->phone, 'Hi there boss!');

在您的 twilio 配置文件 中定义多个条目以使用此功能。

用法

创建一个 Twilio 对象。此对象实现了 Aloha\Twilio\TwilioInterface

$twilio = new Aloha\Twilio\Twilio($accountId, $token, $fromNumber);

发送短信

$twilio->message('+18085551212', 'Pink Elephants and Happy Rainbows');

创建一个通话

$twilio->call('+18085551212', 'http://foo.com/call.xml');

一次生成一个通话并构建消息

$twilio->call('+18085551212', function (\Twilio\TwiML\VoiceResponse $message) {
    $message->say('Hello');
    $message->play('https://api.twilio.com/cowbell.mp3', ['loop' => 5]);
});

或使用 任何 Twiml 描述进行通话,您可以传递任何 Twiml 对象

$message = new \Twilio\TwiML\VoiceResponse();
$message->say('Hello');
$message->play('https://api.twilio.com/cowbell.mp3', ['loop' => 5]);

$twilio->call('+18085551212', $message);

访问配置的 Twilio\Rest\Client 对象

$sdk = $twilio->getTwilio();

您也可以通过外观类访问

$sdk = Twilio::getTwilio();
传递尽可能多的可选参数

如果您想将额外的可选参数传递给 messages->sendMessage(...) 方法 来自 Twilio SDK,可以在 message 方法中这样做。所有参数都会传递,并且从配置中预置了 from 字段。

$twilio->message($to, $message, $mediaUrls, $params);
// passes all these params on.

对于 调用方法 也同样适用。

$twilio->call($to, $message, $params);
// passes all these params on.

模拟类

还有一个 TwilioInterface 的模拟实现:Aloha\Twilio\Dummy。此类允许您在需要快速集成测试的情况下注入此实现而不是使用有效实现。

日志装饰器

还有一个可用的类:Aloha\Twilio\LoggingDecorator。此类包装任何 TwilioInterface 对象并记录 Twilio 将为您执行的操作。它还接受一个 Psr\Log\LoggerInterface 对象(如 Monolog)用于记录,您知道的。

默认情况下,服务提供者不会用 LoggingDecorator 包装对象,但如果需要,它可供您使用。一种可能的用例是构建一个记录将要发生什么但实际不调用 Twilio 的 TwilioInterface 对象(使用 Dummy 类)。

if (getenv('APP_ENV') === 'production') {
    $twilio = $container->make(\Aloha\Twilio\Manager::class);
} else {
    $psrLogger = $container->make(\Psr\Log\LoggerInterface::class);
    $twilio = new LoggingDecorator($psrLogger, new \Aloha\Twilio\Dummy());
}

// Inject it wherever you want.
$notifier = new Notifier($twilio);

致谢

许可

laravel-twilio 是开源软件,许可协议为 MIT 许可