1 | <?php |
||
12 | class TwilioChannel |
||
13 | { |
||
14 | /** |
||
15 | * @var Twilio |
||
16 | */ |
||
17 | protected $twilio; |
||
18 | |||
19 | /** |
||
20 | * @var Dispatcher |
||
21 | */ |
||
22 | protected $events; |
||
23 | |||
24 | /** |
||
25 | * Default 'from' from config. |
||
26 | * @var string |
||
27 | */ |
||
28 | protected $from; |
||
29 | |||
30 | /** |
||
31 | * TwilioChannel constructor. |
||
32 | * |
||
33 | * @param Twilio $twilio |
||
34 | * @param Dispatcher $events |
||
35 | */ |
||
36 | public function __construct(Twilio $twilio, Dispatcher $events, $from) |
||
42 | |||
43 | /** |
||
44 | * Send the given notification. |
||
45 | * |
||
46 | * @param mixed $notifiable |
||
47 | * @param \Illuminate\Notifications\Notification $notification |
||
48 | * @return mixed |
||
49 | * @throws CouldNotSendNotification |
||
50 | */ |
||
51 | public function send($notifiable, Notification $notification) |
||
52 | { |
||
53 | if (! $to = $notifiable->routeNotificationFor('twilio')) { |
||
54 | if (! $to = $notifiable->phone_number) { |
||
55 | return; |
||
56 | } |
||
57 | } |
||
58 | |||
59 | try { |
||
60 | $message = $notification->toTwilio($notifiable); |
||
61 | |||
62 | if (is_string($message)) { |
||
63 | $message = new TwilioSmsMessage($message); |
||
64 | } |
||
65 | |||
66 | if (! $message instanceof TwilioMessage) { |
||
67 | throw CouldNotSendNotification::invalidMessageObject($message); |
||
68 | } |
||
69 | |||
70 | return $this->sendMessage($message, $to); |
||
71 | } catch (Exception $exception) { |
||
72 | $this->events->fire( |
||
73 | new NotificationFailed($notifiable, $notification, 'twilio', ['message' => $exception->getMessage()]) |
||
74 | ); |
||
75 | } |
||
76 | } |
||
77 | |||
78 | /** |
||
79 | * Send message to Twilio. |
||
80 | * |
||
81 | * @param TwilioMessage $message |
||
82 | * @param string $to |
||
83 | * @return mixed |
||
84 | * |
||
85 | * @throws \NotificationChannels\Twilio\Exceptions\CouldNotSendNotification |
||
86 | */ |
||
87 | protected function sendMessage(TwilioMessage $message, $to) |
||
109 | |||
110 | protected function getFrom($message) |
||
118 | } |
||
119 |