Как опубликовать слабое сообщение как пользователь рабочей области, используя chat.postmessage? - PullRequest
0 голосов
/ 10 июня 2019

Я создал слабого бота, у которого есть несколько интерактивных кнопок. После нажатия кнопки я отправлю прямое сообщение пользователю, который нажал на интерактивную кнопку. Там мне нужно показать профиль пользователя, а не изображение бота profie. для размещения сообщения я использую slack api chat. сообщение ().

Когда я вызываю этот метод, сообщение публикуется как пользователь бота (в нем отображается значок пользователя бота). Но мне нужно опубликовать это сообщение как пользователь, который нажимает на эту кнопку. я проверил as_user: ложное свойство, чтобы сделать это. Но это не сработало? я использую токен аутентификации моего приложения для вызова этого метода.

var url = "https://slack.com/api/chat.postMessage";
    var auth_token ='xoxb-518598944980-577890089556-0i753DBbVkigtyuhfbnmfhjn'; //Your Bot's auth token
    var headers = {
       "Authorization": "Bearer " + auth_token,
       "Content-Type" : "application/json"
    }
    var body = {
        channel: actionJSONPayload.channel.id,
        text: "Your text goes here.",
        as_user: false // Slack user or channel, where you want to send the message
    }
    request.post({
       "url": url,
       "headers": headers,
       "body": JSON.stringify(body)
    }, (err, response, body) => {
       if (err) {
           reject(err);
       }
       console.log("response: ", JSON.stringify(response));
       console.log("body: ",body);
    });
  }

Так есть ли способ генерировать токены специально для пользователей, которые динамически взаимодействуют с кнопкой и используют этот токен для вызова этого метода? Это решит эту проблему или есть другие способы? Я добавил все связанные разрешения при установке приложения, такие как чат: запись: пользователь

1 Ответ

1 голос
/ 10 июня 2019

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

Таким образом, чтобы это работало в вашем рабочем пространстве, вам нужно попросить каждого пользователя установить ваше приложение один раз и собрать свои токены во время процесса установки Ouath 2.0 для последующего пользователя.

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

Обходной путь - вручную установить имя пользователя и значок сообщения, отправляемого вашим приложением (путем установки icon_url и username соответственно и as_user = false при вызове chat.postMessage ). Вы можете получить значок и имя пользователя из users.info. Сообщения по-прежнему будут содержать тег APP, чтобы пометить их как поступающие от бота.

...