44
55use Illuminate \Notifications \Notification ;
66use NotificationChannels \TouchSms \Exceptions \CouldNotSendNotification ;
7- use TouchSMS \TouchSMS \touchSMS ;
7+ use TouchSms \ApiClient \Api \Model \OutboundMessage ;
8+ use TouchSms \ApiClient \Api \Model \SendMessageBody ;
9+ use TouchSms \ApiClient \Client ;
810
911class TouchSmsChannel
1012{
11- /** @var touchSMS */
12- private $ client ;
13+ /** @var Client */
14+ private Client $ client ;
1315
14- public function __construct (touchSMS $ client )
16+ public function __construct (Client $ client )
1517 {
1618 $ this ->client = $ client ;
1719 }
@@ -38,15 +40,24 @@ public function send($notifiable, Notification $notification): void
3840 return ;
3941 }
4042
41- $ response = $ this -> client -> sendMessage (
42- $ message -> content ,
43- $ to ,
44- $ message ->reference ,
45- $ message ->sender ?? config ( ' services.touchsms.default_sender ' )
46- );
43+ $ apiMessage = ( new OutboundMessage ())
44+ -> setTo ( $ to )
45+ -> setFrom ( $ message -> sender ?? config ( ' services.touchsms.default_sender ' ))
46+ -> setBody ( $ message ->content )
47+ -> setReference ( $ message ->reference )
48+ -> setMetadata ( $ message -> metadata );
4749
48- if ($ response ->code !== 200 ) {
49- throw CouldNotSendNotification::touchSmsError ($ response ->message ?? '' , $ response ->code ?? 500 );
50+ if ($ message ->sendAt ) {
51+ $ apiMessage ->setDate ($ message ->sendAt ->format (\DateTimeInterface::ATOM ));
52+ }
53+
54+ $ response = $ this ->client ->sendMessages (new SendMessageBody ([
55+ 'messages ' => [$ apiMessage ],
56+ ]));
57+
58+ if (! $ response || count ($ response ->getData ()->getErrors ())) {
59+ $ error = $ response ->getData ()->getErrors ()[0 ];
60+ throw CouldNotSendNotification::touchSmsError ($ error ->getErrorCode ().$ error ->getErrorHelp () ? ' - ' .$ error ->getErrorHelp () : '' , 400 );
5061 }
5162 }
5263}
0 commit comments