Slack API: как определить имя бота в сообщении app_mention? - PullRequest
0 голосов
/ 21 января 2019

Я рассматривал https://api.slack.com/events/app_mention как механизм подписки на сообщения, отправленные моему боту, которые будут обрабатываться моим приложением.

Пример полезной нагрузки на этой странице показан как:

{
    "token": "ZZZZZZWSxiZZZ2yIvs3peJ",
    "team_id": "T061EG9R6",
    "api_app_id": "A0MDYCDME",
    "event": {
        "type": "app_mention",
        "user": "U061F7AUR",
        "text": "What is the hour of the pearl, <@U0LAN0Z89>?",
        "ts": "1515449522.000016",
        "channel": "C0LAN2Q65",
        "event_ts": "1515449522000016"
    },
    "type": "event_callback",
    "event_id": "Ev0LAN670R",
    "event_time": 1515449522000016,
    "authed_users": [
        "U0LAN0Z89"
    ]
}

Я бы хотел исключить имя бота в сообщении, в данном случае <@ U0LAN0Z89>, но я не хочу просто выгружать какие-либо <@mentions>, только бот.

Могу ли я рассчитывать на принадлежащий боту ID, который будет в authed_users?Или у моего приложения есть другой способ получить идентификатор бота, который отправляет ему сообщения?

1 Ответ

0 голосов
/ 22 января 2019

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

Прежде всего, поле authed_users. Лучшее, что я могу сказать , ваше предположение верно, но я не на 100% в этом.

Чтобы быть абсолютно уверенным, что вы удаляете правильный идентификатор, вы можете проанализировать поле event.text и для каждого значения вызвать users.info. Внутри users.info вы увидите поле user.profile.api_app_id. Тот, который соответствует вашему идентификатору приложения: определенно ваш бот.

Второй бит вашего вопроса, в котором я не был уверен, был

получить идентификатор бота, отправляющего ему сообщения

Если вы хотите получить UID человека, который создал сообщение, которое инициировало событие, вам нужно поле event.user.

Надеюсь, это поможет!

...