Closed irania30 closed 1 year ago
Please give reproducible code, slack-go's version, Go's version.
slack version v0.11.3 go version go1.16.15
func GenerateModalFailed() *slack.ModalViewRequest {
titleText := slack.NewTextBlockObject("plain_text", "Sonic Bot", false, false)
closeText := slack.NewTextBlockObject("plain_text", "Close", false, false)
headerText := slack.NewTextBlockObject("mrkdwn", "Failed to submit your request!", false, false)
headerSection := slack.NewSectionBlock(headerText, nil, nil)
contentText := slack.NewTextBlockObject("plain_text", "Please wait a minutes and try again", false, false)
contentSection := slack.NewSectionBlock(contentText, nil, nil)
blocks := slack.Blocks{
BlockSet: []slack.Block{
headerSection,
contentSection,
},
}
var modalRequest slack.ModalViewRequest
modalRequest.Type = slack.ViewType("modal")
modalRequest.Title = titleText
modalRequest.Close = closeText
modalRequest.Blocks = blocks
return &modalRequest
}
func FirstModal() slack.ModalViewRequest {
// Create a ModalViewRequest with a header and two inputs
titleText := slack.NewTextBlockObject("plain_text", "Sonic Bot", false, false)
closeText := slack.NewTextBlockObject("plain_text", "Close", false, false)
submitText := slack.NewTextBlockObject("plain_text", "Submit", false, false)
headerText := slack.NewTextBlockObject("mrkdwn", "testing", false, false)
headerSection := slack.NewSectionBlock(headerText, nil, nil)
//Show dropdown environment
envOptions := createOptionBlockObjects("staging", true)
envText := slack.NewTextBlockObject("plain_text", "Environment", false, false)
envHint := slack.NewTextBlockObject("plain_text", "Mandatory", false, false)
envSelectOption := slack.NewOptionsSelectBlockElement(slack.OptTypeStatic, nil, "environment", envOptions...)
envBlock := slack.NewInputBlock("environment", envText, envHint, envSelectOption)
userIdText := slack.NewTextBlockObject("plain_text", "User ID", false, false)
userIdHint := slack.NewTextBlockObject("plain_text", "Mandatory. Only input 1 user id", false, false)
userIdPlaceholder := slack.NewTextBlockObject("plain_text", "Input User ID", false, false)
userIdElement := slack.NewPlainTextInputBlockElement(userIdPlaceholder, "userIdValue")
userId := slack.NewInputBlock("User ID", userIdText, userIdHint, userIdElement)
blocks := slack.Blocks{
BlockSet: []slack.Block{
headerSection,
envBlock,
userId,
},
}
var modalRequest slack.ModalViewRequest
modalRequest.Type = slack.ViewType("modal")
modalRequest.Title = titleText
modalRequest.Close = closeText
modalRequest.Submit = submitText
modalRequest.Blocks = blocks
return modalRequest
}
func getAll(w http.ResponseWriter, r *http.Request) {
//Parse Response (callback from user interaction)
var intcb slack.InteractionCallback
err := json.Unmarshal([]byte(r.FormValue("payload")), &intcb)
if err != nil {
log.Println(err)
if intcb.Type == slack.InteractionTypeBlockActions {
modalRequest = FirstModal()
_, err := SlackClient.OpenView(intcb.TriggerID, modalRequest)
if err != nil {
log.Println(err)
}
}
if intcb.Type == slack.InteractionTypeViewSubmission {
modal := GenerateModalFailed()
resp := slack.NewUpdateViewSubmissionResponse(modal)
respByte, _ := json.Marshal(resp)
w.WriteHeader(http.StatusOK)
w.Header().Add("Content-Type", "application/json")
w.Write(respByte)
}
}
Is there any chance to use UpdateView instead? When I want to update an existing view it worked fine for me.
i have tried that function, but it only works in block_action
type
but i'll try again, anyway what version do you use @KouWakai ?
mines are:
github.com/slack-go/slack v0.11.4
go version go1.19.3
@irania30 According to https://pkg.go.dev/net/http#ResponseWriter We need to set any HTTP Trailers before writing.
With this order,it worked as expected.
w.Header().Add("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
w.Write(respByte)
version: github.com/slack-go/slack v0.11.3 go version go1.19.3
ok, i'll try again
nice, it works now, thank you @KouWakai
This issue is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.
It seems that this is already resolved.
in
view_submission
i want to update view by using this functionNewUpdateViewSubmissionResponse
, but always get error. how to fix it?resp := slack.NewUpdateViewSubmissionResponse(modal) respByte, _ = json.Marshal(resp)
w.WriteHeader(http.StatusOK) w.Header.Add("Content-Type", "application/json") w.Write(respByte)