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:
@@ -2,7 +2,6 @@ package core
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -99,42 +98,23 @@ func (s *Service) worker1() {
|
||||
if msg, err := scheduler.GetMessage(event.MessageId); err != nil {
|
||||
log.Println("Error getting message:", err)
|
||||
} 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)
|
||||
} else {
|
||||
log.Println("Message Id:", msg.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)
|
||||
} else {
|
||||
if res != nil {
|
||||
bytes, err := json.Marshal(res)
|
||||
if err != nil {
|
||||
log.Println("Error parsing result:", err)
|
||||
if eventResponse, err := scheduler.RecordEventResponse(event, item.UserId, resRaw, sent); err != nil {
|
||||
log.Println("Failure recording event response:", 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)
|
||||
if len(eventResponse) == 0 {
|
||||
log.Println("No event responses")
|
||||
} else {
|
||||
if len(eventResponse) == 0 {
|
||||
log.Println("No event responses")
|
||||
} else {
|
||||
eventResponse := eventResponse[0]
|
||||
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")
|
||||
}
|
||||
}
|
||||
eventResponse := eventResponse[0]
|
||||
log.Println("Event response saved. Id:", eventResponse.Id)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"net/http"
|
||||
"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/catapult/internal/app"
|
||||
@@ -18,11 +18,11 @@ type MessageEventResponse struct {
|
||||
}
|
||||
|
||||
type recordMessageEventResponse struct {
|
||||
Message string `json:"message"`
|
||||
Data []*message.MessageEventResponse `json:"data"`
|
||||
Message string `json:"message"`
|
||||
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)
|
||||
jsonData, err := json.Marshal(mer)
|
||||
if err != nil {
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"git.kundeng.us/phoenix/swoosh/swoop/types"
|
||||
"git.kundeng.us/phoenix/textsender-models/tx0/contact"
|
||||
"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/token"
|
||||
"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}
|
||||
if res, err := msgSender.Send(msg, c, &schMsg.Scheduled); err != nil {
|
||||
return nil, nil, err
|
||||
if res, resRaw, err := msgSender.Send(msg, c, &schMsg.Scheduled); err != nil {
|
||||
return nil, nil, nil, err
|
||||
} else {
|
||||
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) {
|
||||
mre := message.MessageEventResponse{ScheduledMessageEventId: schMsgEvent.Id, UserId: userId, Response: bytes, Sent: *sent, Status: message.Message_Event_Response_Status_Scheduled}
|
||||
func (s *Scheduler) RecordEventResponse(schMsgEvent *scheduling.ScheduledMessageEvent, userId uuid.UUID, bytes map[string]any, sent *time.Time) ([]*evnt.MessageEventResponse, error) {
|
||||
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}
|
||||
if responses, err := msgEventResponse.RecordEventResponse(&mre); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user