MCPcopy Index your code
hub / github.com/NdoleStudio/httpsms / RespondToMissedCall

Method RespondToMissedCall

api/pkg/services/message_service.go:209–244  ·  view source on GitHub ↗

RespondToMissedCall creates an SMS response to a missed phone call on the android phone

(ctx context.Context, source string, payload *events.MessageCallMissedPayload)

Source from the content-addressed store, hash-verified

207
208// RespondToMissedCall creates an SMS response to a missed phone call on the android phone
209func (service *MessageService) RespondToMissedCall(ctx context.Context, source string, payload *events.MessageCallMissedPayload) error {
210 ctx, span, ctxLogger := service.tracer.StartWithLogger(ctx, service.logger)
211 defer span.End()
212
213 phone, err := service.phoneService.Load(ctx, payload.UserID, payload.Owner)
214 if err != nil {
215 msg := fmt.Sprintf("cannot find phone with owner [%s] for user with ID [%s] when handling missed phone call message [%s]", payload.Owner, payload.UserID, payload.MessageID)
216 return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
217 }
218
219 if phone.MissedCallAutoReply == nil || strings.TrimSpace(*phone.MissedCallAutoReply) == "" {
220 ctxLogger.Info(fmt.Sprintf("no auto reply set for phone [%s] for message [%s] with user [%s]", payload.Owner, payload.MessageID, payload.UserID))
221 return nil
222 }
223
224 requestID := fmt.Sprintf("missed-call-%s", payload.MessageID)
225 owner, _ := phonenumbers.Parse(payload.Owner, phonenumbers.UNKNOWN_REGION)
226 message, err := service.SendMessage(ctx, MessageSendParams{
227 Owner: owner,
228 Contact: payload.Contact,
229 Encrypted: false,
230 Content: *phone.MissedCallAutoReply,
231 Source: source,
232 SendAt: nil,
233 RequestID: &requestID,
234 UserID: payload.UserID,
235 RequestReceivedAt: time.Now().UTC(),
236 })
237 if err != nil {
238 msg := fmt.Sprintf("cannot send auto response message for owner [%s] for user with ID [%s] when handling missed phone call message [%s]", payload.Owner, payload.UserID, payload.MessageID)
239 return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
240 }
241
242 ctxLogger.Info(fmt.Sprintf("created response message with ID [%s] for missed call event [%s] for user [%s]", message.ID, payload.MessageID, message.UserID))
243 return nil
244}
245
246// MessageGetParams parameters for sending a new message
247type MessageGetParams struct {

Callers 1

onMessageCallMissedMethod · 0.80

Calls 5

SendMessageMethod · 0.95
StartWithLoggerMethod · 0.65
LoadMethod · 0.65
WrapErrorSpanMethod · 0.65
InfoMethod · 0.65

Tested by

no test coverage detected