code: func (api *Client) OpenConversationContext(ctx context.Context, params *OpenConversationParameters) (*Channel, bool, bool, error) {
  	values := url.Values{
  		"token":     {api.token},
  		"return_im": {strconv.FormatBool(params.ReturnIM)},
  	}
  	if params.ChannelID != "" {
  		values.Add("channel", params.ChannelID)
  	}
  	if params.Users != nil {
  		values.Add("users", strings.Join(params.Users, ","))
  	}
  	response := struct {
  		Channel     *Channel `json:"channel"`
  		NoOp        bool     `json:"no_op"`
  		AlreadyOpen bool     `json:"already_open"`
  		SlackResponse
  	}{}
  	err := api.postMethod(ctx, "conversations.open", values, &response)
  	if err != nil {
  		return nil, false, false, err
  	}
  
  	return response.Channel, response.NoOp, response.AlreadyOpen, response.Err()
  }
docs: // OpenConversationContext opens or resumes a direct message or multi-person direct message with a custom context