Опубликовать изображение, чтобы расслабиться, используя пакет httr в R - PullRequest
0 голосов
/ 06 сентября 2018

Slack предлагает метод для загрузки файлов через API. Документация находится здесь:

Slack files.upload метод

На этой странице приведен пример публикации файла:

curl -F file=@dramacat.gif -F "initial_comment=Shakes the cat" -F channels=C024BE91L,D032AC32T -H "Authorization: Bearer xoxa-xxxxxxxxx-xxxx" https://slack.com/api/files.upload

Я пытаюсь перевести, как выполнить эту строку кода, используя пакет httr в R, с файлом в моем рабочем каталоге R. У меня проблемы с переводом различных частей команды. Вот что у меня есть.

api_token='******'
f_path='c:/mark/consulting/dreamcloud' #this is also my working directory
f_name='alert_picture.png'

res<-httr::POST(url='https://slack.com/api/files.upload', httr::add_headers(`Content-Type` = "multipart/form-data"), 
      body = list(token=api_token, channels='CCJL7TMC7', title='test', file = httr::upload_file(f_path), filename=f_name))

Когда я запускаю это, я получаю следующую ошибку:

Error in curl::curl_fetch_memory(url, handle = handle) : 
  read function returned funny value

Я пытался найти лучшие примеры для использования, но пока безуспешно. Любые предложения приветствуются!

1 Ответ

0 голосов
/ 07 сентября 2018

В собственном методе slackr gg_slackr есть пример, который создает изображение GGPlot и загружает его в Slack:

  res <- POST(url="https://slack.com/api/files.upload",
              add_headers(`Content-Type`="multipart/form-data"),
              body=list(file=upload_file(ftmp),
                        token=api_token, channels=modchan))

Ваш код, кажется, передает путь к каталогу, а не файлу в качестве параметра file - рассмотрите возможность изменения этого параметра на file=upload_file(paste(f_path, f_name, sep="/") и посмотрите, исправит ли это вашу ошибку.

...