Невозможно отобразить кнопки с помощью действий Slack-go

Пытаюсь отобразить две кнопки: «Нет, спасибо!» и «Да, пожалуйста!» следуя этому уроку. Однако в эфемерном сообщении я получаю только поле «Текст» вместо заголовка и двух кнопок:

func handleIsArticleGood() (interface{}, error) {
        attachment := slack.Attachment{
        Text:       "Would you like to see the most recent scores?",
        CallbackID: "ask_us",
        Color:      "#666666",
        Actions: []slack.AttachmentAction{
            slack.AttachmentAction{
                Name:  "action",
                Text:  "No thanks!",
                Type:  slack.ActionType("button"),
                Value: "no",
            },
            slack.AttachmentAction{
                Name:  "action",
                Text:  "Yes, please!",
                Type:  slack.ActionType("button"),
                Value: "yes",
            },
        },
    }
    return attachment, nil

}

Я вижу действия в ответе, но не кнопки:

socketmode: 2024/02/29 12:00:27 socket_mode_managed_conn.go:348: Sending Socket Mode response with envelope ID "$envID": &{d02eddad-fe96-4a46-8aa0-ccd6a7e4bd09 {#666666  ask_us 0         Would you like to see the most recent scores?       [] [{action No thanks!  button no  0 [] [] [] <nil> } {action Yes, please!  button yes  0 [] [] [] <nil> }] [] {[]}   }}

Мой линтер также выдает следующее предупреждение (также на скриншоте выше):

"redundant type from array, slice or map composite literal"

Кстати, я попробовал установить значение Type для «кнопки» в виде строки и установить его как slack.ActionType, поскольку, судя по документации, это ожидаемое значение.

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, кажется, что по какой-то причине это невозможно с использованием приведенной выше реализации. Вместо этого я использовал пример из репозитория Slack-go. Кажется, эта функция обрабатывает отображение правильных кнопок (хотя я, похоже, не получаю обратно значение) -

func handleIsArticleGood(command slack.SlashCommand, client *slack.Client) error {

    attachment := slack.Attachment{
        Pretext:    "pretext",
        Fallback:   "We don't currently support your client",
        CallbackID: "accept_or_reject",
        Color:      "#3AA3E3",
        Actions: []slack.AttachmentAction{
            slack.AttachmentAction{
                Name:  "accept",
                Text:  "Accept",
                Type:  "button",
                Value: "accept",
            },
            slack.AttachmentAction{
                Name:  "reject",
                Text:  "Reject",
                Type:  "button",
                Value: "reject",
                Style: "danger",
            },
        },
    }
    _, _, err := client.PostMessage(command.ChannelID, slack.MsgOptionAttachments(attachment))
    if err != nil {
        return fmt.Errorf("failed to post message: %w", err)
    }
    return nil
}

Другие вопросы по теме