Slack: Files Upload

Slack: Files Upload
Uploads files. If you want to share files, specify a comma separated list of channel names or IDs in SLACK CHANNELs.
https://support.questetra.com/addons/slack-files-upload/
2018-12-01 (C) Questetra, Inc. (MIT License)
Configs
  • A: Select FILES DATA for Upload *
  • B: Set OAuth2 Config Name (at [OAuth 2.0 Setting]) *
  • C: Set SLACK CHANNELs to Share (e.g. “#general,#random”) #{EL}
Script
// (c) 2018, Questetra, Inc. (the MIT License)

//// == OAuth2 Setting example ==
// Authorization Endpoint URL: "https://slack.com/oauth/authorize"
// Token Endpoint URL: "https://slack.com/api/oauth.access"
// Scope: "files:write:user" (or "bot" etc)
// Client ID: ( from https://api.slack.com/apps )
// Consumer Secret: ( from https://api.slack.com/apps )
// -more- https://api.slack.com/methods/files.upload


//////// START "main()" ////////
main();
function main(){ 

//// == Config Retrieving / 工程コンフィグの参照 ==
const dataIdA  = configs.get( "conf_DataIdA" ) + "";
const oauth2   = configs.get( "conf_OAuth2" ) + "";
const channels = configs.get( "conf_Channels" ) + "";
// 'java.lang.String' (String Obj) to javascript primitive 'string'


//// == Data Retrieving / ワークフローデータの参照 ==
const myFiles  = engine.findDataByNumber( dataIdA ); 
// java.util.ArrayList
if (myFiles == null) {
  throw new Error( '\n Files not Attached \n' );
}
const numFiles = myFiles.size() - 0; // javascript 'number'
// myFiles[i]: com.questetra.bpms.core.event.scripttask.QfileView


//// == Calculating / 演算 ==
/// obtain OAuth2 Access Token
const token   = httpClient.getOAuth2Token( oauth2 );

for(let i = 0; i < numFiles; i++){
  /// prepare API Request
  let apiRequest = httpClient.begin(); // HttpRequestWrapper
  // - com.questetra.bpms.core.event.scripttask.HttpClientWrapper
  apiRequest     = apiRequest.multipart( "token", token );
  // not "apiRequest.bearer( token )"
  if(channels !== ""){
    apiRequest     = apiRequest.multipart( "channels", channels );
  }
  apiRequest     = apiRequest.multipart( "file", myFiles[i] );

  /// access API (with post(), get(), put(), etc.)
  const response = apiRequest.post( "https://slack.com/api/files.upload" );
  // - HttpResponseWrapper
  const httpStatus  = response.getStatusCode() + "";
  engine.log( "STATUS: " + httpStatus );
  const responseStr = response.getResponseAsString() + "";
  engine.log( "RESPONSE: \n" + responseStr );
}


//// == Data Updating / ワークフローデータへの代入 ==
// (nothing)

} //////// END "main()" ////////

Download

Slack-Files-Upload.xml

Capture

See also

Slack: Chat Post

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top

Discover more from Questetra Support

Subscribe now to keep reading and get access to the full archive.

Continue reading