I am calling slack API(conversations.history) to get channel messages. I want to retrieve sender name in message response. how can i get it?
below is my message response:
{ "client_msg_id": "0e19ca7d-1072-4f73-a932-9ec7fa9956de",
"type": "message",
"text": "Yeah good edge case, I would agree, just mentioning \" no data found\"",
"user": "U01JW9D10PQ",
"ts": "1642216920.001100",
"team": "T01K38V9Q7M", blocks:[]}
You can use the user id returned from the user key to make a call to users.info after you receive that payload.
The conversations.history API doesn't return user information (just user id), you may need to fetch each user from the channel history, see an example code:
| Get Slack channel history users | Run in Fusebit |
|---|
const channelId = 'C02TSNCQ2Q2';
const channelHistory = await client.conversations.history({
channel: channelId,
});
// Get the user ids from the history and populate an array with the user details
const userList = [];
for await (let message of channelHistory.messages) {
const userAdded = userList.find(user => user.id === message.user);
if (!userAdded) {
const response = await slackClient.users.info({
user: message.user,
});
if (response.ok) {
const { id, name, real_name, profile, is_bot } = response.user;
userList.push({ id, name, real_name, profile, is_bot });
}
}
}
console.log(`There are ${userList.length} users in the channel conversation:\n${userList.map(user => `${(user.is_bot ? '🤖' : '👤')} ${user.name}`).join('\n')}`);