@@ -31,7 +31,11 @@ func NewWebhookListener(
3131 }
3232
3333 return l , map [string ]events.EventListener {
34- events .EventTypeMessagePhoneReceived : l .OnMessagePhoneReceived ,
34+ events .EventTypeMessagePhoneReceived : l .OnMessagePhoneReceived ,
35+ events .EventTypeMessageSendExpired : l .OnMessageSendExpired ,
36+ events .EventTypeMessagePhoneDelivered : l .OnMessagePhoneDelivered ,
37+ events .EventTypeMessageSendFailed : l .OnMessageSendFailed ,
38+ events .EventTypeMessagePhoneSent : l .OnMessagePhoneSent ,
3539 }
3640}
3741
@@ -53,3 +57,79 @@ func (listener *WebhookListener) OnMessagePhoneReceived(ctx context.Context, eve
5357
5458 return nil
5559}
60+
61+ // OnMessageSendExpired handles the events.EventTypeMessageSendExpired event
62+ func (listener * WebhookListener ) OnMessageSendExpired (ctx context.Context , event cloudevents.Event ) error {
63+ ctx , span := listener .tracer .Start (ctx )
64+ defer span .End ()
65+
66+ var payload events.MessageSendExpiredPayload
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 .service .Send (ctx , payload .UserID , event , payload .Owner ); err != nil {
73+ msg := fmt .Sprintf ("cannot process [%s] event with ID [%s]" , event .Type (), event .ID ())
74+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
75+ }
76+
77+ return nil
78+ }
79+
80+ // OnMessageSendFailed handles the events.EventTypeMessageSendFailed event
81+ func (listener * WebhookListener ) OnMessageSendFailed (ctx context.Context , event cloudevents.Event ) error {
82+ ctx , span := listener .tracer .Start (ctx )
83+ defer span .End ()
84+
85+ var payload events.MessageSendFailedPayload
86+ if err := event .DataAs (& payload ); err != nil {
87+ msg := fmt .Sprintf ("cannot decode [%s] into [%T]" , event .Data (), payload )
88+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
89+ }
90+
91+ if err := listener .service .Send (ctx , payload .UserID , event , payload .Owner ); err != nil {
92+ msg := fmt .Sprintf ("cannot process [%s] event with ID [%s]" , event .Type (), event .ID ())
93+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
94+ }
95+
96+ return nil
97+ }
98+
99+ // OnMessagePhoneSent handles the events.EventTypeMessagePhoneSent event
100+ func (listener * WebhookListener ) OnMessagePhoneSent (ctx context.Context , event cloudevents.Event ) error {
101+ ctx , span := listener .tracer .Start (ctx )
102+ defer span .End ()
103+
104+ var payload events.MessagePhoneSentPayload
105+ if err := event .DataAs (& payload ); err != nil {
106+ msg := fmt .Sprintf ("cannot decode [%s] into [%T]" , event .Data (), payload )
107+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
108+ }
109+
110+ if err := listener .service .Send (ctx , payload .UserID , event , payload .Owner ); err != nil {
111+ msg := fmt .Sprintf ("cannot process [%s] event with ID [%s]" , event .Type (), event .ID ())
112+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
113+ }
114+
115+ return nil
116+ }
117+
118+ // OnMessagePhoneDelivered handles the events.EventTypeMessagePhoneDelivered event
119+ func (listener * WebhookListener ) OnMessagePhoneDelivered (ctx context.Context , event cloudevents.Event ) error {
120+ ctx , span := listener .tracer .Start (ctx )
121+ defer span .End ()
122+
123+ var payload events.MessagePhoneDeliveredPayload
124+ if err := event .DataAs (& payload ); err != nil {
125+ msg := fmt .Sprintf ("cannot decode [%s] into [%T]" , event .Data (), payload )
126+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
127+ }
128+
129+ if err := listener .service .Send (ctx , payload .UserID , event , payload .Owner ); err != nil {
130+ msg := fmt .Sprintf ("cannot process [%s] event with ID [%s]" , event .Type (), event .ID ())
131+ return listener .tracer .WrapErrorSpan (span , stacktrace .Propagate (err , msg ))
132+ }
133+
134+ return nil
135+ }
0 commit comments