#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 переходит на правильный канал, и становится очень специфичным для пользователя.
Итак, это все, что я получил.