Я использую slackbots (https://github.com/mishk0/slack-bot-api) для создания интерактивного бота. Я могу, как пользователь, отправлять сообщения в чате, и мой бот дает мне ответ в зависимости от того, что я написал. Например, если я напечатаю:! Уик-энд, мой бот ответит, если выходные близки или нет, загрузив API.
Так работает
bot.on('message', data => {
if (data.type !== 'message') {
return;
}
handleMessage(data.text);
});
function handleMessage(message) {
switch (message) {
case '!weekend':
case '!we':
fetchWeekendData();
break;
case '!apero':
case '!biere':
case '!pastis':
fetchAperoData();
break;
case '!meteo':
fetchWeatherData();
break;
case '!metro':
fetchMetroData('A');
fetchMetroData('R');
break;
case '!features':
getFeatures();
break;
}
}
function fetchWeekendData() {
axios.get('https://estcequecestbientotleweekend.fr/api',
).then(res => {
const weText = res.data.text;
postToChannel(`_Bientôt le week end ?_ : *${weText}*`);
});
}
function postToChannel(message) {
bot.postMessageToChannel(
'général',
message,
params
)
}
У меня есть другая функция, вызывающая, на этот раз, API погоды. API отвечает много информации и ссылки на PNG в зависимости от погоды. Небольшой значок погоды.
Проблема в том, что когда я отправляю свое сообщение в чат, он отправляет ссылку на изображение, и я просто не могу понять, как получить эту ссылку в виде изображения в чате.
function fetchWeatherData() {
axios.get('http://api.weatherstack.com/current?access_key=myAPIkey&query=Paris&units=m',
).then(res => {
const location = res.data.location.name;
const icon = res.data.current.weather_icons;
const temperature = res.data.current.temperature;
const feelslike = res.data.current.feelslike;
const humidity = res.data.current.humidity;
postToChannel(`Météo à *${location}* : ${icon} \n>_Température_ : *${temperature}* °C _Ressenti_ : *${feelslike}* °C\n\n>_Humidité_ : *${humidity}* %`)
});
}
Если кто-то уже использовал slack-bot-api и публиковал изображения со своим ботом, я хотел бы знать, как вы это сделали, потому что у меня заканчиваются идеи, slack api docs показывает JSON вложения для изображений, но я не знаю, как использовать его с этим пакетом.
РЕДАКТИРОВАТЬ: Хорошо, это решено, таким образом
function postToChannelWithImage() {
bot.postMessageToChannel(
'général',
'yikes itis working',
params = {
"icon_url": "https://avatars.slack-edge.com/2020-02-04/935676215584_38623245747b942874b5_192.jpg",
"attachments":
[
{
"fallback": "this did not work",
"image_url": "https://a.slack-edge.com/80588/img/blocks/bkb_template_images/beagle.png"
}
]
}
)
}
Я добавил массив, и он работал отлично, я просто должен добавить другие параметры в тот же массив, чтобы сохранить мои настройки, как это.
Большое спасибо @Erik Kalkoken !!