Я не могу отправить смс с библиотекой Twilio и Aloha - PullRequest
0 голосов
/ 18 ноября 2018

Я использую Laravel 5.1 и хочу отправлять SMS-сообщения, поэтому я установил библиотеку Aloha: https://github.com/aloha/laravel-twilio

Я отредактировал файл .env с:

TWILIO_SID=AC7556934234234234234uuuuuuuuuu3
TWILIO_TOKEN=ca8xxxxxb9b60e66666666666666d355cfe315
TWILIO_FROM=+555555555555

Сейчас я пытаюсь отправить смс с кодом:

...
use Twilio;
use Illuminate\Database\Eloquent\Model;
use Aloha\Twilio\TwilioInterface;
use Services_Twilio_RestException;

class AdminController extends Controller {

    public function send() {
        try {
            Twilio::message('+77777777777', 'test test test');
        } catch (\Services_Twilio_RestException $e) {
            dd($e);
        }

Когда я запускаю функцию send(), ничего не происходит (пустой белый экран) - нет ошибки с catch {}, но я также не получаю SMS. Когда я смотрю на логи Twilio SMS, там тоже ничего нет.

Как я могу получить сообщение об ошибке? ПОЧЕМУ этот код не отправляет сообщение?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

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 клиент или передать любые данные конфигурации.

Надеюсь, это поможет.

0 голосов
/ 18 ноября 2018

Перейдите в веб-консоль Twilio и попробуйте отправлять сообщения. Обычно оно выдает сообщение или код ошибки, если сообщение не было успешно отправлено.

У меня возникли проблемы с тем, что Twilio не отправляет сообщения из-за специфической для страны политики в области телекоммуникаций, запрещающей прием сообщений от незапрошенных пользователей / учетных записей.

...