@@ -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