Twilio - Laravel проблема - учетные данные необходимы для создания клиента - PullRequest
0 голосов
/ 18 декабря 2018

Я получаю следующую ошибку

[2018-12-18 12:12:46] local.ERROR: учетные данные необходимы для создания клиента {"исключение": "[объект](Twilio \ Exceptions \ ConfigurationException (код: 0): учетные данные необходимы для создания клиента на C: \ wamp64 \ www \ _javid \ javid \ vendor \ twilio \ sdk \ Twilio \ Rest \ Client.php: 157)

Я включу приведенный ниже код и источник, который я использовал для его создания. Я хотел бы добавить, что все это вечером работало корректно.

Сегодня я просто добавил новую функциючтобы обработать сохранение сообщений в базу данных. Затем я начал получать вышеуказанную ошибку. Естественно, я отменил свои изменения, но все еще та же ошибка.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;


use App\User;
use Illuminate\Support\Facades\Auth;
use JWTAuth;
use App\Item;
use Log;

use Twilio\Rest\Client;

class MessagingController extends Controller
{
    protected $client;

    public function __construct(Client $client){
        $this->client = $client;
    }


    /**
     * Show the form for creating a notification.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('notifications.create');
    }


    public function sendMessage(request $request){
        $details = $request->only('membershipNumber', 'countryCode', 'message');

        $user = User::where('membership_number', $details['membershipNumber'])->with('mobile_number')->first();
        if(count($user)>0){
            $this->messageSaveToDatabase($details, $user);
            $this->messageSendToMobile($details, $user);
            $this->messageSendToEmail($details, $user);
            return response([
                'status' => 'success',
                'msg' => __('messages.success'),
                'response' => $details
               ], 200);
        } else {
            return response([
                'status' => 'error',
                'msg' => __('messages.error')
               ], 200);
        }

    }

    protected function messageSaveToDatabase($details, $user){

    }
    protected function messageSendToMobile($details, $user, $imageUrl = null){
        $lineBreak = "\n\n";
        $phoneNumber = $user->mobile_number->country_code.decrypt($user->mobile_number->number);

        $message = "Hi member #".$details['membershipNumber'].$lineBreak.
            $details['message'];

        $twilioPhoneNumber = config('services.twilio')['phoneNumber'];
        $messageParams = array(
            'from' => $twilioPhoneNumber,
            'body' => $message
        );
        if ($imageUrl) {
            $messageParams['mediaUrl'] = $imageUrl;
        }

        $this->client->messages->create(
            $phoneNumber,
            $messageParams
        );
    }
    protected function messageSendToEmail($details, $user){

    }
}

Я проверил TWILIO_ACCOUNT_SID и TWILIO_AUTH_TOKEN,оба они верны.

Код был взят из следующего руководства, я вырезал часть подписчика. Руководство от Twilio

Еще одна вещь, я нашел следующее Здесь , что говорит о том, что мне нужно что-то сделать.Ке это $client = new Client($keySid, $keySecret, $accountSid);, но руководство, приведенное выше, не делает этого, плюс все это работает так же.

Любая помощь или предложения будут великолепны, у меня кончаются волосы, чтобы вытащить: (

1 Ответ

0 голосов
/ 18 декабря 2018

Немного погуглив и немного поработав, я нашел рабочее решение

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\User;
use Illuminate\Support\Facades\Auth;


use Twilio\Rest\Client;

class MessagingController extends Controller
{

    protected function messageSendToMobile($details, $message, $user, $imageUrl = null){
        $accountSid = env('TWILIO_ACCOUNT_SID');
        $authToken = env('TWILIO_AUTH_TOKEN');
        $twilioNumber = env('TWILIO_PHONE_NUMBER');
        $lineBreak = "\n\n";
        $to = $user->mobile_number->country_code.decrypt($user->mobile_number->number);
        $client = new Client($accountSid, $authToken);
        try {
            $client->messages->create(
                $to,
                [
                    "body" => $message,
                    "from" => $twilioNumber
                ]
            );
            Log::info('Message sent to ' . $twilioNumber);
        } catch (TwilioException $e) {
            Log::error(
                'Could not send SMS notification.' .
                ' Twilio replied with: ' . $e
            );
        }
    }
}
...