Slack Message Events Channel Origin
Kali ini saya akan membahas mengenai implementasi Slack Events API pada NodeJS sekaligus melanjutkan artikel yang sebelumnya. Pada artikel sebelumnya sudah dijelaskan bagaimana Slack mengirimkan event ke bot kita. Event tersebut kemudian akan diproses pada server agar bot kita dapat memberikan respons yang sesuai.
Kali ini saya hanya tertarik pada event message. Pada artikel sebelumnya saya menyebutkan akan memroses message dari channels maupun direct message. Ternyata untuk mengetahui suatu message berasal dari channels atau direct message tidak begitu mudah.
Untuk event message, Slack tidak membedakan bentuk JSON data yang dikirimkan. Semua berbentuk
{
“type”: “message”,
“channel”: “C2147483705”,
“user”: “U2147483697”,
“text”: “Hello world”,
“ts”: “1355517523.000005”
}
Agar kita dapat mebedakan dari mana event tersebut terjadi, kita harus memanggil Web API yang lain.
Web API yang saya memanfaatkan ada empat yaitu, channels.list, groups.list, mpim.list, im.list. Web API tersebut berguna untuk mendaftar seluruh public channels dan private channels, multipart im, im yang kita (bergantung token) merupakan anggota tersebut. Sebenarnya jika event yang masuk ternyata dari public channels, kita tidak perlu memeriksa lebih lanjut.
Referensi:
https://api.slack.com/events/message
https://stackoverflow.com/questions/41111227/how-can-a-slack-bot-detect-a-direct-message-vs-a-message-in-a-channel