Невозможно отправить уведомления через Slack в Go - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь использовать Slack API для отправки уведомлений, когда один из специалистов по кредитам или аналитиков рисков моей компании назначен на рассмотрение файла дела.

Вот функция Обновления, которая отправляет Обновления в файл с делами в нашу базу данных, где я вызываю функции уведомлений, которые я упоминал выше.

func (r *Routes) UpdateCasefile(c echo.Context) error {
    var ur update.UpdateRequest

    err := c.Bind(&ur)
    if err != nil {
        return handleErr(err, "Error binding JSONUpdateRequest")
    }

    if err := ur.ToGorm(r.db, &casefile.Casefile{}).Error; err != nil {
        return handleErr(err, "Error updating Casefile")
    }

    var updated casefile.Casefile
    if err := r.db.Where("id = ?", ur.EntityID).First(&updated).Error;
    err != nil {
        return handleErr(err, "Error recalling updated Casefile")
    }

    cf := &casefile.Casefile{
        ID:                     updated.ID,
        Name:                   updated.Name,
        LoanAmount:             updated.LoanAmount,
        AssignedLoanSpecialist: updated.AssignedLoanSpecialist,
        AssignedRiskAnalyst:    updated.AssignedRiskAnalyst,
        Business:               updated.Business,
    }

    if ur.Updates["assigned_risk_analyst"] != nil {
        NotifyRiskAnalyst(cf)
    }

    if ur.Updates["assigned_loan_specialist"] != nil {
        NotifyLoanSpecialist(cf)
    }

    go func() {
        events.Bus.Events <- &events.EventMessage{
            EventType: events.EventActivity,
            Payload: &casefile.Activity{
                CasefileID: ur.EntityID,
                Type:       "UPDATE",
                User:       auth.GetEmail(c),
                Message:    ur.FormatUpdateMessage(),
             },
         }
    }()

    return c.JSON(http.StatusOK, updated)
}

Вот функции, которые предполагается для отправки уведомлений через один из наших слабых каналов, когда специалисту по ссуде или аналитику риска назначен файл дела.

func NotifyRiskAnalyst(cf *casefile.Casefile) {
    title := fmt.Sprintf("Casefile  <https://COMPANYWEBSITE/case/%s|%s>, assigned to <@%s> at %s", cf.ID, cf.Name, cf.AssignedRiskAnalyst, cf.CreatedAt.Format("2006-01-02 15:04 -0700 MST"))

    err := common.NewSlackNotifier("#test").Notify(common.SlackMessage{
        Attachments: []common.SlackAttachment{
            {
                Color:    "#008BF8",
                Fallback: title,
                Pretext:  title,
                Fields: []common.SlackField{
                    {
                        Title: cf.Name,
                        Value:   fmt.Sprintf("https:/COMPANYWEBSITE/case/%s", cf.ID),
                    },
                },
            },
        }})

    if err != nil {
        logrus.WithError(err).Error("Error sending Slack message")
    }
}

func NotifyLoanSpecialist(cf *casefile.Casefile) {
    title := fmt.Sprintf("Casefile  <https://COMPANYWEBSITE/case/%s|%s>, assigned to <@%s> at %s", cf.ID, cf.Name, cf.AssignedLoanSpecialist, cf.CreatedAt.Format("2006-01-02 15:04 -0700 MST"))

    err := common.NewSlackNotifier("#test").Notify(common.SlackMessage{
        Attachments: []common.SlackAttachment{
            {
                Color:    "#008BF8",
                Fallback: title,
                Pretext:  title,
                Fields: []common.SlackField{
                    {
                        Title: cf.Name,
                        Value: fmt.Sprintf("https://COMPANYWEBSITE.io/case/%s", cf.ID),
                    },
                },
            },
        }})

    if err != nil {
        logrus.WithError(err).Error("Error sending Slack message")
    }
}

Я не получаю никаких ошибок в моем терминале, но слабые уведомления не отправляются. Я не совсем уверен, где я иду не так, но любая помощь будет высоко ценится!

...