Slackr: x проблема с `id` — невозможно отправлять сообщения

#r #slack-api #slackr

#r #slack-api #slackr

Вопрос:

Я не администратор, поэтому я не могу изменить области. Я могу отправлять сообщения slackr_bot на канал, который я настроил при создании приложения в пользовательском интерфейсе, но выполнение приведенного ниже не работает. Кто-нибудь нашел решение этой проблемы?

Я создал текстовый файл с именем: test.txt

В этом текстовом файле это выглядит так:

 api_token: xxxxxxxxxxxx
channel: #channel_name
username: myusername
incoming_webhook_url: https://hooks.slack.com/services/xxxxxxxxxxx/xxxxxxxxxxxxx

  

Затем я хочу просто отправить сообщение, но в конечном итоге я хотел бы запустить функцию
ggslackr(qplot (mpg, wt, data = mtcars))

 slackr_setup(config_file = "test.txt")
my_message <- paste("I'm sending a Slack message at", Sys.time(), "from my R script.")
slackr_msg(my_message, channel = "#channel_name", as_user=F)

  

Вот сообщение об ошибке:

 Error: Join columns must be present in data.
x Problem with `id`.
Run `rlang::last_error()` to see where the error occurred.
In addition: Warning message:
In structure(vars, groups = group_vars, class = c("dplyr_sel_vars",  :
  Calling 'structure(NULL, *)' is deprecated, as NULL cannot have attributes.
  Consider 'structure(list(), *)' instead.
  

Ответ №1:

Редактировать # 2:

Хорошо, я узнал кое-что о пакетах. Если бы мне пришлось делать это снова, я бы зашел в их репозиторий github и прочитал отслеживание проблем.

Причина в том, что, похоже, у slackr есть несколько проблем, связанных с изменениями в API Slack.

А также, поскольку было большое обновление R (версия 4.x), многие пакеты были сломаны.

Я считаю, что наша проблема связана со строкой кода внутри функции slackr (slackr_util.r—iirc), которая вызывает соединение dplyr, которое ищет конкретный идентификатор, которого не существует.

Итак, я собираюсь просмотреть отслеживание проблем и посмотреть, что из этого получится.


Редактировать: попробуйте slackr_bot(my_message,channel = "#general")

сработало, как и было объявлено!

Но ggslackr продолжает сбой.


У меня такая же проблема. Я нашел в другом потоке начало отладки:

 `rlang::last_error()`
  

Когда я запускаю это,

 Backtrace:
  1. slackr::slackr_msg(my_message, channel = "#general")
  5. slackr::slackr_chtrans(channel)
  6. slackr::slackr_ims(api_token)
  8. dplyr:::left_join.data.frame(users, ims, by = "id", copy = TRUE)
  9. dplyr:::join_mutate(...)
 10. dplyr:::join_cols(...)
 11. dplyr:::standardise_join_by(by, x_names = x_names, y_names = y_names)
 12. dplyr:::check_join_vars(by$y, y_names)
  

Итак, на шаге 8 выполняется объединение усилий id , которое, я полагаю, подразумевает, что ‘id’ отсутствует.

тем не менее, если я запускаю из github отслеживание проблем: slackr::slackrSetup(echo=TRUE) я получаю следующее:

 {
  "SLACK_CHANNEL": ["#general"],
  "SLACK_USERNAME": ["slackr_brian"],
  "SLACK_ICON_EMOJI": ["NA"],
  "SLACK_INCOMING_URL_PREFIX": ["https://hooks.xxxxxxx"],
  "SLACK_API_TOKEN": ["token secret"]
} 
  

Я не уверен, куда идти дальше, поскольку в диалоге отслеживания проблем упоминается подтверждение того, что webhooks переходит на правильный канал, и становится очень специфичным для пользователя.

Итак, это все, что я получил.