Help us understand the problem. What is going on with this article?

技術(者)を支えるネコ - にゃーんbotを作った

More than 1 year has passed since last update.

この記事は『Slack Advent Calendar 2018』の11日目の記事です。

概要

技術(者)を支えるネコということで「にゃーん」と発言すると、すかさず猫画像を返してくれるbotを作ってみました。

スクリーンショット 2018-12-11 13.26.46.png

背景

日々過ごしていて「にゃーん」って発言する機会多いと思うんですが、slackで「にゃーん」って言ってもなんの反応なしに虚しく流れていくのを見つめるのは辛いと思ったので作りました。
(ちなみにこのbotを知人のslackで運用しているのですが、割と利用率が高くて嬉しいです)

実装

Slack側はOutgoing webhookを利用して、バックエンドはAWSのAPI Gateway+Lambdaで作ってます。
(Outgoing webhookはdeprecatedになる予定だそうなので、近々Slack Appを使った実装に直したいと思っています)

猫画像は TheCatApi.com で提供されているApiを利用しています。
静止画よりも動画のほうが嬉しさあると考えたので今回はgifで取ってくるようにしてます。

Lambda ソース

lambda
const https = require('https');

const API_URL = "https://api.thecatapi.com/v1/images/search?format=json&mime_types=gif";

exports.handler = (event, context, callback) => {
    https.get(API_URL, (res) => {
        res.setEncoding('utf8');
        res.on('data', (str) => {
            const data = JSON.parse(str);
            callback(null, {
                username: "cat",
                text: data[0].url
            });
        });
    });
};

まとめ

こんなふうにAPI Gateway+Lambdaを利用すれば比較的簡単に作れて、コストもほとんどかけずにslack botを運用できるのでおすすめです。
もちろん、Cloud FunctionsやAzure Functionsといった他のFaaSでも簡単に実現できそうです。

以上、全力で技術者を支えるにゃーんbotの雑な紹介でした。
明日は、takahyonさんの「LINEのメッセージをSlackに転送するBotをAWSで作成してみる。」です!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした