I had a simple problem where I was trying to use the json array when uploading a file to Slack via the API. The code I was using was
$payload = [ 'json' => [ 'channels' => $this->getChannel(), 'initial_comment' => $message, 'content' => $textAttachment, 'filetype' => 'text' ], 'headers' => 'Authorization' => 'Bearer ' . $this->getBearerToken() ]; $this->sendPayloadToSlack($payload, 'https://slack.com/api/files.upload');
But the problem was that I kept on getting a “new_file_data” error when I sent it.
stdClass Object ( [ok] => [error] => no_file_data )
It turns out that the problem was that I was not able to send the file upload via JSON data. So I changed Guzzle to use the multipart upload method as such:
$payload = [ 'multipart' => [ ['name' => 'channels', 'contents' => $this->getChannel()], ['name' => 'initial_comment', 'contents' => $message], ['name' => 'content', 'contents' => $textAttachment], ['name' => 'filetype', 'contents' => 'text'] ], 'headers' => [ 'Authorization' => 'Bearer ' . $this->getBearerToken() ] ]; $this->sendPayloadToSlack($payload, 'https://slack.com/api/files.upload');
And the result was:
stdClass Object ( [ok] => 1 [file] => stdClass Object ( <bunch of stuff> ) )
Comments
No comments yet...