无法使用Slackbots(javascript)使用Slackbot发送图像

时间:2020-02-05 11:24:40

标签: node.js json axios bots slack-api

我正在使用slackbots(https://github.com/mishk0/slack-bot-api)创建一个交互式bot。 作为用户,我可以在聊天中发送消息,并让我的机器人根据我的写意给我答案。就像我输入:!weekend一样,我的机器人将通过获取API来回答周末是否接近。

这种方式工作

option batch abort
option confirm off
open sftp://sftpuser04:password123!@lynn-vs2.cloudapp.net -hostkey="ssh-ed25519 256 00:69:55:c8:a8:84:01:6d:7c:ff:9f:8c:89:b3:7d:67"
synchronize local C:\Users\****\OneDrive\Desktop\RaspPCAP /home/pi/Desktop/PCapFiles
exit

这次我有另一个函数调用天气api。该API会回复许多信息,并且 取决于天气的png链接。天气图标。

问题是,当我发回消息进行聊天时,它会发送图像链接,而我只是不知道如何在聊天中获取此链接作为图像。

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
    )
}

如果有人已经使用slack-bot-api并在其bot上发布了图像,我想知道您是如何做到的,因为我已经不明白了,slack api docs正在显示图像的JSON附件,但是我不知道如何在此程序包中使用它。

编辑:好的,这样就解决了

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}* %`)
    });
}

我添加了数组,并且效果很好,我只需要向同一数组中添加其他参数即可保持配置不变。

非常感谢@Erik Kalkoken!

1 个答案:

答案 0 :(得分:0)

该库只能将参数转发到相应的Slack API方法chat.postMessage

要发布带有Slack的图片,您需要在attachment(已过时)或blocks中包含图片网址。

例如要附加图片和附件,您可以通过params添加此数组:

{
    "attachments":
    [
        {
            "fallback": "this did not work",
            "image_url": "https://a.slack-edge.com/80588/img/blocks/bkb_template_images/beagle.png"
        }       
    ]
}