最新情報

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

公開日 2020/11/10

最終更新日 2024/10/4

技術情報

井上 飛鳥
投稿者井上 飛鳥

はじめに

社内ではコミュニケーションツールとして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サイト制作やITシステム導入をご検討中の方へ

ビットツーバイトでは、Webサイト制作・システム開発・AI活用支援など、お客様のビジネス成長を支える幅広いITソリューションを提供しています。
新規サイトの立ち上げやリニューアル、業務効率化・DX推進など、ご相談・お見積りはお気軽にお問い合わせください。

Line API × AWS Lambda×Slack Incoming WebhookでLineのメッセージをSlackに自動投稿させる | 最新情報 | 株式会社ビットツーバイト