@@ -4,9 +4,12 @@ import (
44 "context"
55 "fmt"
66 "net/http"
7+ "strings"
78 "sync"
89 "time"
910
11+ "github.com/NdoleStudio/httpsms/pkg/events"
12+
1013 "github.com/NdoleStudio/httpsms/pkg/entities"
1114 "github.com/NdoleStudio/httpsms/pkg/repositories"
1215 "github.com/NdoleStudio/httpsms/pkg/telemetry"
@@ -194,23 +197,45 @@ func (service *WebhookService) sendNotification(ctx context.Context, event cloud
194197 Client (service .client ).
195198 Bearer (token ).
196199 Header ("X-Event-Type" , event .Type ()).
197- BodyJSON (event ).
200+ BodyJSON (service . getPayload ( ctxLogger , event , webhook ) ).
198201 ToString (& response ).
199202 Fetch (ctx )
200203 if err != nil {
201204 msg := fmt .Sprintf ("cannot send [%s] event to webhook [%s] for user [%s]" , event .Type (), webhook .URL , webhook .UserID )
202205 ctxLogger .Error (service .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg )))
203206 }
204207
205- ctxLogger .Info (fmt .Sprintf ("sent webhook to url [%s] for event [%s] with ID [%s]" , webhook .URL , event .Type (), event .ID ()))
208+ ctxLogger .Info (fmt .Sprintf ("sent webhook to url [%s] for event [%s] with ID [%s] and response [%s]" , webhook .URL , event .Type (), event .ID (), response ))
209+ }
210+
211+ func (service * WebhookService ) getPayload (ctxLogger telemetry.Logger , event cloudevents.Event , webhook * entities.Webhook ) any {
212+ if event .Type () != events .EventTypeMessagePhoneReceived {
213+ return event
214+ }
215+
216+ if ! strings .HasPrefix (webhook .URL , "https://discord.com/api/webhooks/" ) {
217+ return event
218+ }
219+
220+ payload := new (events.MessagePhoneReceivedPayload )
221+ err := event .DataAs (payload )
222+ if err != nil {
223+ ctxLogger .Error (stacktrace .Propagate (err , fmt .Sprintf ("cannot unmarshal event [%s] with ID [%s] into [%T]" , event .Type (), event .ID (), payload )))
224+ return event
225+ }
226+
227+ return map [string ]string {
228+ "username" : payload .Contact ,
229+ "content" : payload .Content ,
230+ }
206231}
207232
208233func (service * WebhookService ) getAuthToken (webhook * entities.Webhook ) (string , error ) {
209234 token := jwt .NewWithClaims (jwt .SigningMethodHS256 , jwt.StandardClaims {
210235 Audience : webhook .URL ,
211236 ExpiresAt : time .Now ().UTC ().Add (10 * time .Minute ).Unix (),
212237 IssuedAt : time .Now ().UTC ().Unix (),
213- Issuer : "httpSMS " ,
238+ Issuer : "api.httpsms.com " ,
214239 NotBefore : time .Now ().UTC ().Add (- 10 * time .Minute ).Unix (),
215240 Subject : string (webhook .UserID ),
216241 })
0 commit comments