RegisterMissedCall a new message
(ctx context.Context, params *MissedCallParams)
| 539 | |
| 540 | // RegisterMissedCall a new message |
| 541 | func (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 | |
| 579 | func (service *MessageService) getSendDelay(ctxLogger telemetry.Logger, eventPayload events.MessageAPISentPayload, params MessageSendParams, messagesPerMinute uint) time.Duration { |
| 580 | if params.SendAt != nil { |
no test coverage detected