Я пытаюсь использовать 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")
}
}
Я не получаю никаких ошибок в моем терминале, но слабые уведомления не отправляются. Я не совсем уверен, где я иду не так, но любая помощь будет высоко ценится!