@@ -32,9 +32,10 @@ func NewWebsocketListener(
3232 }
3333
3434 return l , map [string ]events.EventListener {
35- events .EventTypePhoneUpdated : l .onPhoneUpdated ,
36- events .EventTypeMessagePhoneSent : l .onMessagePhoneSent ,
37- events .EventTypeMessageSendFailed : l .onMessagePhoneFailed ,
35+ events .EventTypePhoneUpdated : l .onPhoneUpdated ,
36+ events .EventTypeMessagePhoneSent : l .onMessagePhoneSent ,
37+ events .EventTypeMessageSendFailed : l .onMessagePhoneFailed ,
38+ events .EventTypeMessagePhoneReceived : l .onMessagePhoneReceived ,
3839 }
3940}
4041
@@ -57,6 +58,25 @@ func (listener *WebsocketListener) onMessagePhoneSent(ctx context.Context, event
5758 return nil
5859}
5960
61+ // onMessagePhoneReceived handles the events.EventTypeMessagePhoneReceived event
62+ func (listener * WebsocketListener ) onMessagePhoneReceived (ctx context.Context , event cloudevents.Event ) error {
63+ ctx , span , _ := listener .tracer .StartWithLogger (ctx , listener .logger )
64+ defer span .End ()
65+
66+ var payload events.MessagePhoneReceivedPayload
67+ if err := event .DataAs (& payload ); err != nil {
68+ msg := fmt .Sprintf ("cannot decode [%s] into [%T]" , event .Data (), payload )
69+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
70+ }
71+
72+ if err := listener .client .Trigger (payload .UserID .String (), event .Type (), event .ID ()); err != nil {
73+ msg := fmt .Sprintf ("cannot trigger websocket [%s] event with ID [%s] for user with ID [%s]" , event .Type (), event .ID (), payload .UserID )
74+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
75+ }
76+
77+ return nil
78+ }
79+
6080// onMessagePhoneFailed handles the events.EventTypeMessageSendFailed event
6181func (listener * WebsocketListener ) onMessagePhoneFailed (ctx context.Context , event cloudevents.Event ) error {
6282 ctx , span , _ := listener .tracer .StartWithLogger (ctx , listener .logger )
0 commit comments