Ответ бота R Plumber Slack

#r #slack #slack-api #plumber #slack-commands

#r #слабый #slack-api #сантехник #slack-команды

Вопрос:

Я пытаюсь создать ответ бота для slack с помощью Plumber, и я могу заставить модель работать и получать текстовый ответ при запросе из командной строки или тестировании из swagger. Когда я использую команду Slack с косой чертой, хотя ответ возвращается, но в канале отображается только пустой ответ. Я попробовал несколько небольших настроек, но это просто не сработает для меня, поэтому надеюсь, что кто-то, у кого есть работающий Slack Plumber bot, сможет увидеть, что я делаю неправильно.

     #' return chatbot response
#' @param text the message used for analysis
#' @post /response
function(text=" ", res) {
  
  # turn parsed message into tidy dataframe
  msg_df <- tibble(line = 1:1, text = text)
  
  # unnest words in dataframe and create response
  msg_df <<- msg_df %>% unnest_tokens(word, text)
  body <- pred(msg_df)
  my_message <- list(response_type = unbox("in_channel"),
                     text=unbox(body))

  return(my_message)
}
  

и это то, что я получаю от slack после его настройки и запуска.
Ответ команды Slack slash (пустой

возвращаемый ответ выглядит так, что я вижу в руководствах по Slack

Тело ответа

 {
  "response_type": "in_channel",
  "text": "some text information"
}
  

Действительно ценю любые идеи!

Комментарии:

1. поместите browser() оператор в свою функцию plumber, добавьте параметр req после res и проверьте, что вы получаете от slack в req среде.

Ответ №1:

Первоначальное решение заключается в том, что сериализатор Plumber может быть привязан к:

@serializer ContentType list(тип=»текст / обычный») #предоставляет простой текстовый ответ

Это работает, если все, что вам нужно, — это обычный текст без форматирования (что работает в моем случае).