2017-09-09 3 views
1

Ich versuche, einige Textnachrichten mit Nexmo mit Laravel zu senden. Als ich die Nachricht direkt in der Route sende es funktioniert gut:Laravel Nexmo, schlechte Anmeldeinformationen bei der Verwendung von Benachrichtigungen

Route::get('/sms/send/{to}', function(\Nexmo\Client $nexmo, $to){ 
    $message = $nexmo->message()->send([ 
     'to' => $to, 
     'from' => '@me', 
     'text' => 'Sending SMS from Laravel. yay!!!' 
    ]); 
    Log::info('sent message: ' . $message['message-id']); 
}); 

Aber wenn ich zu sen eine SMS versuchen, eine Mitteilung-Klasse mit erhalte ich die Fehlermeldung „Bad Credentials“. Ich habe aus nach der offiziellen Dokumentation gewesen: https://laravel.com/docs/5.5/notifications#sms-notifications

Hier ist die Klasse, die Mitteilung erweitert:

<?php 

namespace App\Notifications; 

use Illuminate\Bus\Queueable; 
use Illuminate\Notifications\Notification; 
use Illuminate\Contracts\Queue\ShouldQueue; 
use Illuminate\Notifications\Messages\MailMessage; 
use Illuminate\Notifications\Messages\NexmoMessage; 

class KeepGoing extends Notification 
{ 
    use Queueable; 

    /** 
    * Create a new notification instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     // 
    } 

    /** 
    * Get the notification's delivery channels. 
    * 
    * @param mixed $notifiable 
    * @return array 
    */ 
    public function via($notifiable) 
    { 
     return ['nexmo']; 
    } 

    /** 
    * Get the mail representation of the notification. 
    * 
    * @param mixed $notifiable 
    * @return \Illuminate\Notifications\Messages\MailMessage 
    */ 
    public function toNexmo($notifiable) 
    { 

     return (new NexmoMessage) 
       ->content('Your SMS message content'); 

    } 

ich kann nicht herausfinden, warum ich eine „Bad-Anmeldeinformationen“ erhalte -Fehler bei dem Versuch, das zu verwenden, Notification-Klasse, während es in der route-Datei funktioniert?

Vielen Dank!

EDIT: Der Controller, benachrichtigen() aufruft:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\User; 
use App\Notifications\KeepGoing; 

class NotificationController extends Controller 
{ 
    public function index() 
    { 
     $user = User::first(); 
     $user->notify(new KeepGoing()); 
    } 
} 

Ich möchte auch hinzufügen, dass toNexmo() aufgerufen wird:

public function toNexmo($notifiable) 
    { 
     // If i dump($notifiable) I can see the user. 
     // The $notifiable has the attribute phone_number which is 
     // what the notificationsystem looks for... 
     return (new NexmoMessage) 
       ->content('Your SMS message content'); 

    } 

Antwort

0

Sie haben nicht erwähnt, wie Sie Benachrichtigungen senden, wenn Sie sind den Fehler erhalten, aber wenn Sie Warteschlangen verwenden, sollten Sie sicherstellen, dass Sie

php artisan queue:restart 
ausführen

zu Prozessdurchlauf in der Warteschlange sehen Sie die Änderungen (zB modifizierte .env oder config)

+0

Vielen Dank für die Beantwortung. Ich benutze keine Warteschlangen. Ich habe die Frage mit einigen zusätzlichen Informationen bearbeitet. –

0

Stellt sich heraus, der Fehler verursacht wurde durch einen dummen Fehler zu machen, verwirrte ich die nexmo-config in config/services.php up:

'nexmo' => [ 
     'key' => env('NEXMO_KEY'), 
     'secret' => env('NEXMO_SECRET'), 
     'sms_from' => '15556666666', 
    ], 

ich in dem eigentlichen Schlüssel und Geheimnis in der oben setzen ...

+0

Wie SMS gesendet wurden, wenn Sie sie in Ihrer Routenaktion gesendet haben? Es scheint eher unmöglich –

+0

Zuerst hatte ich nichts über nexmo in der services.php. An diesem Punkt wurde der Schlüssel/Secret aus config/nexmo.php geholt. Ich habe die config zu services.php hinzugefügt, nachdem ich einen anderen Guide gesehen habe. Also ich denke, dass die route-version nur bis zu dem Punkt funktionierte, an dem ich die config zu services.php hinzugefügt habe ... –

Verwandte Themen