Идентификация сообщений, отправленных моим приложением в Slack

#slack-api

#slack-api

Вопрос:

Я разрабатываю приложение Slack, которое отправляет приложения-оповещения в каналы. Я хочу, чтобы это приложение проверяло историю канала, чтобы найти сообщения, которые он опубликовал ранее, чтобы он мог реагировать соответствующим образом. Например, если есть предупреждение, которое еще не «очищено», оно обновит указанное предупреждение вместо публикации нового сообщения.

Проблема, с которой я сталкиваюсь, заключается в том, что неясно, как я могу идентифицировать сообщения, опубликованные моим приложением. Я вижу, что могу искать канал с помощью conversations.history, и это дает мне события сообщений. Похоже, что у некоторых сообщений есть user свойство. Существуют также bot_message сообщения подтипа, которые имеют bot_id свойство. Однако я не вижу никакого способа идентифицировать мой идентификатор приложения.

Должно ли каждое приложение иметь связанный bot_id ? user ИДЕНТИФИКАТОР? Если да, то где мне получить эти идентификаторы, чтобы я мог фильтровать историю разговоров?

Обновить

Я попытался вызвать bots.info метод без параметра bot ID, надеясь, что он выдаст мне мой идентификатор бота, но он не вернул никаких данных, кроме статуса «OK».

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

1. мозговой штурм здесь, возможно ли создание базы данных? Вы могли бы хранить и обновлять эту информацию и использовать запросы для определения этой информации, я полагаю

2. У меня все еще нет основ; как мне получить свой идентификатор бота?

3. возможно ли обновление сообщения? Я полагаю, что я вижу документацию Slack о том, что сообщения могут быть обновлены. В настоящее время я не могу прочитать документы из-за проблемы с брандмауэром. api.slack.com/methods/chat.update

4. Да, они могут быть обновлены. Моя проблема заключается в поиске сообщения для обновления. Чтобы найти сообщение для обновления, мне нужно знать, какие сообщения отправил мой бот. Чтобы найти их, мне нужен мой идентификатор бота.

5. Теперь у вас есть ваше bot_id обсуждение ниже, извините, что продолжаете переходить по темам

Ответ №1:

Возможно, потому, что Slack имеет долгую историю различных API, я был введен в заблуждение. По-видимому, я могу находить сообщения, которые мой бот ранее публиковал, но не так, как я думал. Вот мои недоразумения и то, что я обнаружил, играя с тестером Slack API.

Используя conversations.history , вы можете получить список сообщений, размещенных в канале. В документах говорится, что история возвращает массив message events , и что у них есть поле подтипа. Одним из подтипов является bot_message , поэтому я предполагаю, что сообщения, отправленные моим ботом, будут иметь этот подтип. В документах для bot_message есть bot_id , который я не знаю для своего приложения, и username , которому я не знаю, чему он будет соответствовать.

Однако, когда я опубликовал тестовое сообщение, оказалось, что сообщение не отображалось как a bot_message ; скорее оно появляется в истории без подтипа и имеет свойства, которые, похоже, не соответствуют какой-либо документации:

 {
  "bot_id": "B01HSBYRKUZ",
  "type": "message",
  "text": "Testing the Slack API; please ignore.",
  "user": "U01HDNUJ5EE",
  "ts": "1609878469.036400",
  "team": "<omitted>",
  "bot_profile": {
      "id": "B01HSBYRKUZ",
      "deleted": false,
      "name": "my-bot-name",
      "updated": 1608584973,
      "app_id": "<omitted>",
      "icons": {
          "image_36": "...",
          "image_48": "...",
          "image_72": "..."
      },
      "team_id": "<omitted>"
  }
}
 

Поэтому, хотя кодировать в недокументированном формате рискованно (или, может быть, я просто не могу найти нужные документы?), Я могу фильтровать эти сообщения, проверяя bot_profile.app_id , соответствует ли идентификатор моего приложения, который я знаю.

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

1. является bot_id ли этот ответ неправильным или что-то в этом роде?

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

3. Если бы был вызов API для получения вашего идентификатора бота, это работало бы нормально, но, как я написал в вопросе, похоже, нет никакого земного способа узнать ваш идентификатор бота программно

Ответ №2:

вы можете узнать идентификатор своего бота, если используете контекст. Пример: const {botUserId} = контекст