@@ -32,10 +32,50 @@ func NewWebsocketListener(
3232 }
3333
3434 return l , map [string ]events.EventListener {
35- events .EventTypePhoneUpdated : l .onPhoneUpdated ,
35+ events .EventTypePhoneUpdated : l .onPhoneUpdated ,
36+ events .EventTypeMessagePhoneSent : l .onMessagePhoneSent ,
37+ events .EventTypeMessageSendFailed : l .onMessagePhoneFailed ,
3638 }
3739}
3840
41+ // onMessagePhoneSent handles the events.EventTypeMessagePhoneSent event
42+ func (listener * WebsocketListener ) onMessagePhoneSent (ctx context.Context , event cloudevents.Event ) error {
43+ ctx , span , _ := listener .tracer .StartWithLogger (ctx , listener .logger )
44+ defer span .End ()
45+
46+ var payload events.MessagePhoneSentPayload
47+ if err := event .DataAs (& payload ); err != nil {
48+ msg := fmt .Sprintf ("cannot decode [%s] into [%T]" , event .Data (), payload )
49+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
50+ }
51+
52+ if err := listener .client .Trigger (payload .UserID .String (), event .Type (), event .ID ()); err != nil {
53+ msg := fmt .Sprintf ("cannot trigger websocket [%s] event with ID [%s] for user with ID [%s]" , event .Type (), event .ID (), payload .UserID )
54+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
55+ }
56+
57+ return nil
58+ }
59+
60+ // onMessagePhoneFailed handles the events.EventTypeMessageSendFailed event
61+ func (listener * WebsocketListener ) onMessagePhoneFailed (ctx context.Context , event cloudevents.Event ) error {
62+ ctx , span , _ := listener .tracer .StartWithLogger (ctx , listener .logger )
63+ defer span .End ()
64+
65+ var payload events.MessageSendFailedPayload
66+ if err := event .DataAs (& payload ); err != nil {
67+ msg := fmt .Sprintf ("cannot decode [%s] into [%T]" , event .Data (), payload )
68+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
69+ }
70+
71+ if err := listener .client .Trigger (payload .UserID .String (), event .Type (), event .ID ()); err != nil {
72+ msg := fmt .Sprintf ("cannot trigger websocket [%s] event with ID [%s] for user with ID [%s]" , event .Type (), event .ID (), payload .UserID )
73+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
74+ }
75+
76+ return nil
77+ }
78+
3979// onPhoneUpdated handles the events.EventTypePhoneUpdated event
4080func (listener * WebsocketListener ) onPhoneUpdated (ctx context.Context , event cloudevents.Event ) error {
4181 ctx , span , _ := listener .tracer .StartWithLogger (ctx , listener .logger )
@@ -47,7 +87,7 @@ func (listener *WebsocketListener) onPhoneUpdated(ctx context.Context, event clo
4787 return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
4888 }
4989
50- if err := listener .client .Trigger (payload .UserID .String (), event .Type (), event ); err != nil {
90+ if err := listener .client .Trigger (payload .UserID .String (), event .Type (), event . ID () ); err != nil {
5191 msg := fmt .Sprintf ("cannot trigger websocket [%s] event with ID [%s] for user with ID [%s]" , event .Type (), event .ID (), payload .UserID )
5292 return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
5393 }
0 commit comments