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

Method RegisterMissedCall

api/pkg/services/message_service.go:541–577  ·  view source on GitHub ↗

RegisterMissedCall a new message

(ctx context.Context, params *MissedCallParams)

Source from the content-addressed store, hash-verified

539
540// RegisterMissedCall a new message
541func (service *MessageService) RegisterMissedCall(ctx context.Context, params *MissedCallParams) (*entities.Message, error) {
542 ctx, span := service.tracer.Start(ctx)
543 defer span.End()
544
545 ctxLogger := service.tracer.CtxLogger(service.logger, span)
546
547 eventPayload := &events.MessageCallMissedPayload{
548 MessageID: uuid.New(),
549 UserID: params.UserID,
550 Timestamp: params.Timestamp,
551 Owner: phonenumbers.Format(params.Owner, phonenumbers.E164),
552 Contact: params.Contact,
553 SIM: params.SIM,
554 }
555
556 event, err := service.createEvent(events.MessageCallMissed, params.Source, eventPayload)
557 if err != nil {
558 msg := fmt.Sprintf("cannot create [%T] from payload with message id [%s]", event, eventPayload.MessageID)
559 return nil, service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
560 }
561
562 ctxLogger.Info(fmt.Sprintf("created event [%s] with id [%s] and message id [%s] and user [%s]", event.Type(), event.ID(), eventPayload.MessageID, eventPayload.UserID))
563
564 message, err := service.storeMissedCallMessage(ctx, eventPayload)
565 if err != nil {
566 msg := fmt.Sprintf("cannot store missed call message message with id [%s]", eventPayload.MessageID)
567 return nil, service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
568 }
569
570 if err = service.eventDispatcher.Dispatch(ctx, event); err != nil {
571 msg := fmt.Sprintf("cannot dispatch event type [%s] and id [%s]", event.Type(), event.ID())
572 return nil, service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
573 }
574
575 ctxLogger.Info(fmt.Sprintf("[%s] event with ID [%s] dispatched succesfully for message [%s] with user [%s]", event.Type(), event.ID(), eventPayload.MessageID, eventPayload.UserID))
576 return message, err
577}
578
579func (service *MessageService) getSendDelay(ctxLogger telemetry.Logger, eventPayload events.MessageAPISentPayload, params MessageSendParams, messagesPerMinute uint) time.Duration {
580 if params.SendAt != nil {

Callers 1

PostCallMissedMethod · 0.80

Calls 7

createEventMethod · 0.80
StartMethod · 0.65
CtxLoggerMethod · 0.65
WrapErrorSpanMethod · 0.65
InfoMethod · 0.65
DispatchMethod · 0.45

Tested by

no test coverage detected