ポートフォリオサイト公開中

ローカルのコマンドラインからLINEbotのプッシュメッセージを送る【Messaging API】

pythonでLINE botを操作したかっただけなんです

開発環境

  • macOS Mojave 10.14.5
  • Python 3.7.3
  • line-bot-sdk 1.12.0

LINEbotのプッシュメッセージを送るコードhello.py

必要に応じてpython用のLINE Messaging API SDK をインストールする。

参考:Messaging API対応のLINE公式SDK for Python

$ pip install line-bot-sdk

pythonファイルを作る

~/hello.py

from linebot import LineBotApi
from linebot.models import TextSendMessage
from linebot.exceptions import LineBotApiError

#botのチャンネルトークン
channel_token = 'your channel access token'
#送信先のID
receiver = 'receiver id'
line_bot_api = LineBotApi(channel_token)

def pushMessage(message):
    try:
        line_bot_api.push_message(receiver, TextSendMessage(text=message))
        print("success")
    except LineBotApiError as e:
        print(e)
pushMessage("Hello!")
pushMessage("こんにちは")
pushMessage("你好")

hello.pyの詳細

チャンネルトークン

【LINE BOT】30分からできるLINE BOT開発②【GASとLINEボットの紐付け】 この記事のアクセストークンを参照

送信先のID

記事作成中

pushMessage(message)

messagereceiverに送信する

hello.pyの実行結果

$ python3 ~/hello.py
   success
   success
   success

line bot

Hello!

line bot

こんにちは

line bot

你好

メッセージ以外もプッシュ通知する

必要モジュール

from linebot import LineBotApi
from linebot.models import send_messages
from linebot.exceptions import LineBotApiError

channel_token = ""
receiver = ""
line_bot_api = LineBotApi(channel_token)

画像

image_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/LINE_logo.svg/1200px-LINE_logo.svg.png"
def pushImage(url):
    try:
        line_bot_api.push_message(receiver, send_messages.ImageSendMessage(original_content_url=url, preview_image_url=url))
    except LineBotApiError as e:
        print(e)
pushImage(image_url)

ビデオ

video_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/LINE_logo.svg/1200px-LINE_logo.svg.png"
def pushVideo(url):
    try:
        line_bot_api.push_message(receiver, send_messages.VideoSendMessage(original_content_url=url, preview_image_url=url))
    except LineBotApiError as e:
        print(e)
pushVideo(video_url)

スタンプ

def pushSticker(pac,sti):
    try:
        line_bot_api.push_message(receiver, send_messages.StickerSendMessage(package_id=pac, sticker_id=sti))
    except LineBotApiError as e:
        print(e)
pushSticker("11539", "52114131")

package_idsticker_idの対応表はこちらから

参考:【LINE BOT】30分からできるLINE BOT開発④【フォローイベントの作成】

音声

def pushAudio(ori,dur):
    try:
        line_bot_api.push_message(receiver, send_messages.AudioSendMessage(original_content_url=ori, duration=dur))

    except LineBotApiError as e:
        print(e)
pushAudio("https://example.com/original.mp4", 60000)

位置情報

def pushLocation(tit,add,lat,lon):
    try:
        line_bot_api.push_message(receiver, send_messages.LocationSendMessage(title=tit, address=add, latitude = lat, longitude = lon))

    except LineBotApiError as e:
        print(e)
pushLocation("my location", "〒150-0002 東京都渋谷区渋谷2丁目21−1", 35.65910807942215, 139.70372892916203)

参考

Github LINE Messaging API SDK for Python

Github send_messages.py

Messaging APIリファレンス メッセージオブジェクト

雑談

初めて知ったけれど、コマンドから無理やりpyファイルの中の関数を実行することもできるらしく、

$ cd hello.pyファイルと同じ階層

$ python -c 'import hello;hello.pushMessage("こんにちは")'

これでそのままLINEにプッシュ通知を送ることもできる

最後に

pythonでMessaging API触りたいなと思って遊んでみた備忘録でした。

上手く使えばpythonでMessaging APIを使ったウェブアプリも作れそうですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です