tsk-20: Modify how Twilio message is sent out (#21)

Closes #20

Reviewed-on: #21
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
phoenix
2026-01-01 20:58:03 +00:00
committed by phoenix
parent 7ec1f58f6a
commit 40d92ab7d3
6 changed files with 29 additions and 48 deletions
+2 -2
View File
@@ -3,8 +3,8 @@ module git.kundeng.us/phoenix/catapult
go 1.25.4 go 1.25.4
require ( require (
git.kundeng.us/phoenix/swoosh v0.0.12 git.kundeng.us/phoenix/swoosh v0.1.0
git.kundeng.us/phoenix/textsender-models v0.0.12 git.kundeng.us/phoenix/textsender-models v0.1.6
github.com/google/uuid v1.6.0 github.com/google/uuid v1.6.0
github.com/joho/godotenv v1.5.1 github.com/joho/godotenv v1.5.1
) )
+4 -4
View File
@@ -1,7 +1,7 @@
git.kundeng.us/phoenix/swoosh v0.0.12 h1:OtGUYJzakpzJ0fF2BP/z+maCtEfG+avQUJiCY9LMix8= git.kundeng.us/phoenix/swoosh v0.1.0 h1:9P+wLuJsIZmVcRoG+W22l06hwp54eNrYbsBtGjucnjI=
git.kundeng.us/phoenix/swoosh v0.0.12/go.mod h1:5J/URwiWcjksaPmczelvBEeLdwB1mACFuhUdtWTheDg= git.kundeng.us/phoenix/swoosh v0.1.0/go.mod h1:6/97/aS8KVdYqlczQ9ALvS3GVoce1UVl+D8VQK42Bd0=
git.kundeng.us/phoenix/textsender-models v0.0.12 h1:ps9H3FS5LyCwQhAiIvg4vYyfLZZ64dex1y9ytb0o9C4= git.kundeng.us/phoenix/textsender-models v0.1.6 h1:d/rhvqjFSt1Ty/3UfwS21be+lYb9EtWEaDtkzfbzEp0=
git.kundeng.us/phoenix/textsender-models v0.0.12/go.mod h1:9iPDQJg1Tc6WMNoW5+f8YKmnosMwlWHJ++hmxNLDEe0= git.kundeng.us/phoenix/textsender-models v0.1.6/go.mod h1:9iPDQJg1Tc6WMNoW5+f8YKmnosMwlWHJ++hmxNLDEe0=
github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+4 -4
View File
@@ -5,7 +5,7 @@ import (
"os" "os"
"path" "path"
"git.kundeng.us/phoenix/textsender-models/tx0/config" auxcfg "git.kundeng.us/phoenix/textsender-models/tx0/config/auxiliary"
"github.com/joho/godotenv" "github.com/joho/godotenv"
) )
@@ -16,7 +16,7 @@ type App struct {
AuthUrl string AuthUrl string
ServiceUsername string ServiceUsername string
ServicePassphrase string ServicePassphrase string
TwilioConfig *config.TwilioConfig TwilioConfig *auxcfg.TwilioConfig
} }
func Load() (*App, error) { func Load() (*App, error) {
@@ -56,7 +56,7 @@ func Load() (*App, error) {
} }
} }
func loadTwilioConfig() (*config.TwilioConfig, error) { func loadTwilioConfig() (*auxcfg.TwilioConfig, error) {
authSid := os.Getenv("TWILIO_AUTH_SID") authSid := os.Getenv("TWILIO_AUTH_SID")
serviceSid := os.Getenv("TWILIO_SERVICE_SID") serviceSid := os.Getenv("TWILIO_SERVICE_SID")
authToken := os.Getenv("TWILIO_AUTH_TOKEN") authToken := os.Getenv("TWILIO_AUTH_TOKEN")
@@ -71,7 +71,7 @@ func loadTwilioConfig() (*config.TwilioConfig, error) {
} else if len(phoneNumber) == 0 { } else if len(phoneNumber) == 0 {
return nil, fmt.Errorf("Twilio config phone number not provided") return nil, fmt.Errorf("Twilio config phone number not provided")
} else { } else {
cfg := config.TwilioConfig{} cfg := auxcfg.TwilioConfig{}
cfg.AccountSID = authSid cfg.AccountSID = authSid
cfg.AuthToken = authToken cfg.AuthToken = authToken
cfg.ServiceSID = serviceSid cfg.ServiceSID = serviceSid
+3 -23
View File
@@ -2,7 +2,6 @@ package core
import ( import (
"context" "context"
"encoding/json"
"log" "log"
"sync" "sync"
"time" "time"
@@ -99,23 +98,16 @@ func (s *Service) worker1() {
if msg, err := scheduler.GetMessage(event.MessageId); err != nil { if msg, err := scheduler.GetMessage(event.MessageId); err != nil {
log.Println("Error getting message:", err) log.Println("Error getting message:", err)
} else { } else {
if c, err := scheduler.GetContact(event.RecipientId); err != nil { if c, err := scheduler.GetContact(event.ContactId); err != nil {
log.Println("Error getting contact:", err) log.Println("Error getting contact:", err)
} else { } else {
log.Println("Message Id:", msg.Id) log.Println("Message Id:", msg.Id)
log.Println("Contact Id:", c.Id) log.Println("Contact Id:", c.Id)
if res, sent, err := scheduler.ScheduleMessage(*item, *event, *c, *msg); err != nil { if res, resRaw, sent, err := scheduler.ScheduleMessage(*item, *event, *c, *msg); err != nil {
log.Println("Failure with scheduling the message:", err) log.Println("Failure with scheduling the message:", err)
} else { } else {
if res != nil { if res != nil {
bytes, err := json.Marshal(res) if eventResponse, err := scheduler.RecordEventResponse(event, item.UserId, resRaw, sent); err != nil {
if err != nil {
log.Println("Error parsing result:", err)
} else {
jsonValue := string(bytes)
log.Println("Result:", jsonValue)
if eventResponse, err := scheduler.RecordEventResponse(event, item.UserId, bytes, sent); err != nil {
log.Println("Failure recording event response:", err) log.Println("Failure recording event response:", err)
} else { } else {
if len(eventResponse) == 0 { if len(eventResponse) == 0 {
@@ -123,18 +115,6 @@ func (s *Service) worker1() {
} else { } else {
eventResponse := eventResponse[0] eventResponse := eventResponse[0]
log.Println("Event response saved. Id:", eventResponse.Id) log.Println("Event response saved. Id:", eventResponse.Id)
sameJsonValue := string(eventResponse.Response)
if jsonValue == sameJsonValue {
log.Println("Matches")
} else if len(jsonValue) == len(sameJsonValue) {
log.Println("Same size")
log.Println(jsonValue)
log.Println(sameJsonValue)
} else {
log.Println("Not the same")
}
}
} }
} }
} else { } else {
+3 -3
View File
@@ -6,7 +6,7 @@ import (
"net/http" "net/http"
"strings" "strings"
"git.kundeng.us/phoenix/textsender-models/tx0/message" "git.kundeng.us/phoenix/textsender-models/tx0/message/event"
"git.kundeng.us/phoenix/textsender-models/tx0/token" "git.kundeng.us/phoenix/textsender-models/tx0/token"
"git.kundeng.us/phoenix/catapult/internal/app" "git.kundeng.us/phoenix/catapult/internal/app"
@@ -19,10 +19,10 @@ type MessageEventResponse struct {
type recordMessageEventResponse struct { type recordMessageEventResponse struct {
Message string `json:"message"` Message string `json:"message"`
Data []*message.MessageEventResponse `json:"data"` Data []*event.MessageEventResponse `json:"data"`
} }
func (m *MessageEventResponse) RecordEventResponse(mer *message.MessageEventResponse) ([]*message.MessageEventResponse, error) { func (m *MessageEventResponse) RecordEventResponse(mer *event.MessageEventResponse) ([]*event.MessageEventResponse, error) {
fullUrl := fmt.Sprintf("%s/api/v1/schedule/message/event/response/record", m.Application.ApiUrl) fullUrl := fmt.Sprintf("%s/api/v1/schedule/message/event/response/record", m.Application.ApiUrl)
jsonData, err := json.Marshal(mer) jsonData, err := json.Marshal(mer)
if err != nil { if err != nil {
+7 -6
View File
@@ -7,6 +7,7 @@ import (
"git.kundeng.us/phoenix/swoosh/swoop/types" "git.kundeng.us/phoenix/swoosh/swoop/types"
"git.kundeng.us/phoenix/textsender-models/tx0/contact" "git.kundeng.us/phoenix/textsender-models/tx0/contact"
"git.kundeng.us/phoenix/textsender-models/tx0/message" "git.kundeng.us/phoenix/textsender-models/tx0/message"
evnt "git.kundeng.us/phoenix/textsender-models/tx0/message/event"
"git.kundeng.us/phoenix/textsender-models/tx0/message/scheduling" "git.kundeng.us/phoenix/textsender-models/tx0/message/scheduling"
"git.kundeng.us/phoenix/textsender-models/tx0/token" "git.kundeng.us/phoenix/textsender-models/tx0/token"
"github.com/google/uuid" "github.com/google/uuid"
@@ -46,18 +47,18 @@ func (s *Scheduler) GetContact(id uuid.UUID) (*contact.Contact, error) {
} }
} }
func (s *Scheduler) ScheduleMessage(schMsg scheduling.ScheduledMessage, event scheduling.ScheduledMessageEvent, c contact.Contact, msg message.Message) (*types.TwilioResult, *time.Time, error) { func (s *Scheduler) ScheduleMessage(schMsg scheduling.ScheduledMessage, event scheduling.ScheduledMessageEvent, c contact.Contact, msg message.Message) (*types.TwilioResult, map[string]any, *time.Time, error) {
msgSender := send.MessageSender{Config: s.Application.TwilioConfig} msgSender := send.MessageSender{Config: s.Application.TwilioConfig}
if res, err := msgSender.Send(msg, c, &schMsg.Scheduled); err != nil { if res, resRaw, err := msgSender.Send(msg, c, &schMsg.Scheduled); err != nil {
return nil, nil, err return nil, nil, nil, err
} else { } else {
sent := time.Now() sent := time.Now()
return res, &sent, nil return res, resRaw, &sent, nil
} }
} }
func (s *Scheduler) RecordEventResponse(schMsgEvent *scheduling.ScheduledMessageEvent, userId uuid.UUID, bytes []byte, sent *time.Time) ([]*message.MessageEventResponse, error) { func (s *Scheduler) RecordEventResponse(schMsgEvent *scheduling.ScheduledMessageEvent, userId uuid.UUID, bytes map[string]any, sent *time.Time) ([]*evnt.MessageEventResponse, error) {
mre := message.MessageEventResponse{ScheduledMessageEventId: schMsgEvent.Id, UserId: userId, Response: bytes, Sent: *sent, Status: message.Message_Event_Response_Status_Scheduled} mre := evnt.MessageEventResponse{ScheduledMessageEventId: schMsgEvent.Id, UserId: userId, Response: bytes, Sent: *sent, Status: evnt.Message_Event_Response_Status_Scheduled}
msgEventResponse := MessageEventResponse{Application: s.Application, Token: s.Token} msgEventResponse := MessageEventResponse{Application: s.Application, Token: s.Token}
if responses, err := msgEventResponse.RecordEventResponse(&mre); err != nil { if responses, err := msgEventResponse.RecordEventResponse(&mre); err != nil {