@@ -21,7 +21,7 @@ class Twilio
21
21
* Twilio constructor.
22
22
*
23
23
* @param TwilioService $twilioService
24
- * @param TwilioConfig $config
24
+ * @param TwilioConfig $config
25
25
*/
26
26
public function __construct (TwilioService $ twilioService , TwilioConfig $ config )
27
27
{
@@ -33,8 +33,8 @@ public function __construct(TwilioService $twilioService, TwilioConfig $config)
33
33
* Send a TwilioMessage to the a phone number.
34
34
*
35
35
* @param TwilioMessage $message
36
- * @param string $to
37
- * @param bool $useAlphanumericSender
36
+ * @param string $to
37
+ * @param bool $useAlphanumericSender
38
38
* @return mixed
39
39
* @throws CouldNotSendNotification
40
40
*/
@@ -59,7 +59,7 @@ public function sendMessage(TwilioMessage $message, $to, $useAlphanumericSender
59
59
* Send an sms message using the Twilio Service.
60
60
*
61
61
* @param TwilioSmsMessage $message
62
- * @param string $to
62
+ * @param string $to
63
63
* @return \Twilio\Rest\Api\V2010\Account\MessageInstance
64
64
* @throws CouldNotSendNotification
65
65
*/
@@ -70,31 +70,55 @@ protected function sendSmsMessage(TwilioSmsMessage $message, $to)
70
70
'body ' => trim ($ message ->content ),
71
71
];
72
72
73
- if ($ message instanceof TwilioMmsMessage) {
74
- $ params ['mediaUrl ' ] = $ message ->mediaUrl ;
75
- }
76
-
77
73
if ($ serviceSid = $ this ->config ->getServiceSid ()) {
78
74
$ params ['messagingServiceSid ' ] = $ serviceSid ;
79
75
}
80
76
77
+ $ this ->fillOptionalParams ($ params , $ message , [
78
+ 'statusCallback ' ,
79
+ 'statusCallbackMethod ' ,
80
+ 'applicationSid ' ,
81
+ 'maxPrice ' ,
82
+ 'provideFeedback ' ,
83
+ 'validityPeriod ' ,
84
+ ]);
85
+
86
+ if ($ message instanceof TwilioMmsMessage) {
87
+ $ this ->fillOptionalParams ($ params , $ message , [
88
+ 'mediaUrl ' ,
89
+ ]);
90
+ }
91
+
81
92
return $ this ->twilioService ->messages ->create ($ to , $ params );
82
93
}
83
94
84
95
/**
85
96
* Make a call using the Twilio Service.
86
97
*
87
98
* @param TwilioCallMessage $message
88
- * @param string $to
99
+ * @param string $to
89
100
* @return \Twilio\Rest\Api\V2010\Account\CallInstance
90
101
* @throws CouldNotSendNotification
91
102
*/
92
103
protected function makeCall (TwilioCallMessage $ message , $ to )
93
104
{
105
+ $ params = [
106
+ 'url ' => trim ($ message ->content ),
107
+ ];
108
+
109
+ $ this ->fillOptionalParams ($ params , $ message , [
110
+ 'statusCallback ' ,
111
+ 'statusCallbackMethod ' ,
112
+ 'method ' ,
113
+ 'status ' ,
114
+ 'fallbackUrl ' ,
115
+ 'fallbackMethod ' ,
116
+ ]);
117
+
94
118
return $ this ->twilioService ->calls ->create (
95
119
$ to ,
96
120
$ this ->getFrom ($ message ),
97
- [ ' url ' => trim ( $ message -> content )]
121
+ $ params
98
122
);
99
123
}
100
124
@@ -107,7 +131,7 @@ protected function makeCall(TwilioCallMessage $message, $to)
107
131
*/
108
132
protected function getFrom (TwilioMessage $ message )
109
133
{
110
- if (! $ from = $ message ->getFrom () ?: $ this ->config ->getFrom ()) {
134
+ if (!$ from = $ message ->getFrom () ?: $ this ->config ->getFrom ()) {
111
135
throw CouldNotSendNotification::missingFrom ();
112
136
}
113
137
@@ -125,4 +149,19 @@ protected function getAlphanumericSender()
125
149
return $ sender ;
126
150
}
127
151
}
152
+
153
+ /**
154
+ * @param array $params
155
+ * @param TwilioMessage $message
156
+ * @param array $optionalParams
157
+ * @return mixed
158
+ */
159
+ protected function fillOptionalParams (&$ params , $ message , $ optionalParams )
160
+ {
161
+ foreach ($ optionalParams as $ optionalParam ) {
162
+ if ($ message ->$ optionalParam ) {
163
+ $ params [$ optionalParam ] = $ message ->$ optionalParam ;
164
+ }
165
+ }
166
+ }
128
167
}
0 commit comments