BBB bit2byte blog

bit2byte

Line API × AWS Lambda×Slack Incoming WebhookでLineのメッセージをSlackに自動投稿させる

2020.11.10.火

井上 飛鳥

Engineer

はじめに

社内ではコミュニケーションツールとしてSlackを活用しているものの、お客様によってはビジネスでの連絡でもLINEを使用している方が多くいらっしゃいます。
LINEでのやりとりは社内共有に時間ロスが発生してしまう為、今回LINE BOTを作成しLINEからSlackに投稿するツールを作ってみました。

SlackアプリでIncomming Webhooks を設定

Slackアプリの作成方法はこちらの記事で紹介しておりますので予め作成を済ませておいてください。

AWS Lambdaで関数を作成

AWS Lambdaはサーバレスと呼ばれるサーバーを持たないプログラム実行の為のサービスです。
実行したい処理だけをプログラムで書いて実行した分だけ課金される料金体系になっています。
お試しのつもりで、今回は手軽に済ます為にもこちらを利用しました。
Lambdaを使用する為にはAPI Gatewayの作成が必要になります。

Lamdaで使用できるコードは現在、Java、Go、PowerShell、Node.js、C#、Python、Rubyとなります。
今回はPython3.8を選んでコードを記述しました。
LINEからメッセージをSlackに転送する為、予め作成しておいたSlackのWebhookのURL指定が必要です。

import os
import json
import urllib.request

#Slack Webhookへ送信する
def send_slack(msg):
   #Slack Webhook URLを指定する
    url ='https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    headers = {
        'Content-Type': 'application/json; charset=utf-8'
    }
    message = {
        "username": "Python",
        "icon_emoji": ":snake:",
        "attachments": [
            {
                "fields": [
                    {
                        "title": "LINE",
                        "value": msg,
                        "short": False
                    }
                ]
            }
        ]
    }
    req = urllib.request.Request(url, data=json.dumps(message).encode("utf-8"), method='POST', headers = headers)
    with urllib.request.urlopen(req) as res:
        logger.info(res.read().decode("utf-8"))


def lambda_handler(event, context):
   #LINE BOTから送信されたメッセージを受け取り、Slack Webhookへ送信する
    for message_event in json.loads(event['body'])['events']:
        send_slack(message_event['message']['text'])

    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

LINE BOTを作成

Line Developersにアクセスします

初めて利用する場合、プロバイダーの作成が必要なので案内に従って進めてください。

続けてチャネルを作成します。

新規チャネル作成をクリックするとチャネルの種類を選択するポップアップが開きますので、今回はMessaging APIを選択します。

作成されたチャネルで必要な情報を入力しておきます。
※今回チャネル名は「line2slackくん」にしました。

その後「Messaging API設定」タブを選択して「Webhook設定」でWebhookの利用をONにしたうえAWS Lambdaを呼び出すAPI GatewayのエンドポイントをWebhook URLに設定します。

試してみる

LINEアプリインストール済の端末からカメラでQRコードを読み込み、ボットを友達登録します。

LINEアプリからグループに招待します。

投稿してみる

見事Slackに通知されました!

まとめ

急にグループに知らないBOTを追加されると悪いことしてるんじゃと疑われますので、必ず了解いただいてからにしましょう!

井上 飛鳥代表取締役

<Web業界との関わり>
Webは20歳のころ自分のHPを作成する事から始まり、当時はHTMLよりもFlash MXでFlashサイトを作ったりしていました。
その後サーバーサイドに興味を持ち、様々な企業様のWeb制作・システム開発に携わらせていただきました。

<会社名Bit2Byteの由来>
企業前からイメージしていたものです。
昔から仕事や悩みなどを1人で抱え込む事が多かったのですが、何事も1人だけではできず、皆の協力で成り立っているものだと深く思い、1人から皆に繋げていく意味を込めて名付けました。

お客様の立場になり問題を解決できるよう会社一丸となって本当に感謝される事を目的としています。

<好きなもの>
好きな歌手は中島みゆきです。コンサートや夜会にも毎年行っていました(コロナでラストツアーも公演中止となりましたが・・) 。
歌の内容は年代を重ねる毎に変わっていきますが、どの年代のものも聴く人によって色々な角度からはまるもので共感が持てます。
歌う姿勢も真っ直ぐで凛としており見るといつも心が洗われます。

生まれ変わったらシンガーソングライターになって自分が想う事を歌にして皆に聴かせたいなあなんて妄想をよくしています。

Recommend