Avid Twilio пользователь здесь.Я бы порекомендовал использовать нативный PHP SDK Twilio поверх aloha / twilio.По умолчанию, я считаю, что aloha / twilio тянет в twilio / sdk, поскольку это зависит от него, но я бы удалил aloha / twilio и просто использовал twilio / sdk.
composer require twilio/sdk
Я бы тогда порекомендовал создать класс Twilioвнутри, например, Services / Twilio.php, где вы можете внедрить клиент Twilio, создать новый экземпляр и создать его экземпляр с вашими данными конфигурации twilio.В этом классе Service теперь вы можете поместить все свои методы Twilio, такие как sendSMS (), sendMMS (), validatePhoneNumber () и т. Д., И получить к ним доступ, внедрив новый класс обслуживания Twilio в конструктор вашего контроллера.
Это может выглядеть так:
Обратите внимание, что моя реализация sendSMS () использует MessagingServiceSid, а не из числа from.Вы можете заменить «messagingServiceSid» на «от», если вы не используете службу обмена сообщениями Twilio CoPilot на их платформе.
Services / Twilio.php
namespace App\Services;
use Twilio\Rest\Client;
class Twilio
{
/**
* @var Client
*/
protected $twilio;
public function __construct() {
try {
$this->twilio = new Client(config('twilio.SID'), config('twilio.TOKEN'));
}
catch (\Exception $e) {
//do something with the exception, client could not be instantiated.
}
}
//My sendSMS allows for the passing of an array in the $to argument, letting you send to
//multiple numbers (or just one)
public function sendSMS($to, $message)
{
if (is_array($to)) {
foreach($to as $value) {
$this->twilio->messages->create($value, ['messagingServiceSid' => config('twilio.MESSAGING_SERVICE_SID'), 'body' => $message]);
}
return true;
}
$this->twilio->messages->create($to, ['messagingServiceSid' => config('twilio.MESSAGING_SERVICE_SID'), 'body' => $message]);
}
}
AdminController.php
use App\Services\Twilio;
class AdminController extends Controller {
protected $twilio;
public function __construct(Twilio $twilio)
{
$this->twilio = $twilio;
}
public function index()
{
$this->twilio->sendSMS('5551234567', 'Test message');
return 'Message was sent.';
}
}
Если вы реализуете Twilio таким образом, вы сможете использовать любую логику Twilio внутри вашего контроллера без необходимости повторного создания новогоTwilio клиент или передать любые данные конфигурации.
Надеюсь, это поможет.