はじめに
https://business.line.me/ja/services/bot より画像引用
最近DjangoでLINEボット作っているのでメモ的なあれ
上の記事はTrial APIのものなのでそろそろ古いなぁって思ってたので
環境
実装
Djangoプロジェクトの作成やLINEボットのWeb上での取得やURLなどは色んなサイトに載ってるはずなので省略します。
今回オウム返しプロジェクトを作成したのでよければ...
とりあえず簡単なオウム返しは以下。
bot.views.py
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden from django.views.decorators.csrf import csrf_exempt from linebot import LineBotApi, WebhookParser from linebot.exceptions import InvalidSignatureError, LineBotApiError from linebot.models import MessageEvent, TextMessage, TextSendMessage line_bot_api = LineBotApi('YOURLINE_CHANNEL_ACCESS_TOKEN') parser = WebhookParser('YOUR_LINE_CHANNEL_SECRET') @csrf_exempt def webhook(request): if request.method != 'POST': return HttpResponse('ん?なんやようか?', status=405) signature = request.META['HTTP_X_LINE_SIGNATURE'] body = request.body.decode('utf-8') try: events = parser.parse(body, signature) except InvalidSignatureError: return HttpResponseForbidden() except LineBotApiError: return HttpResponseBadRequest() for event in events: if not isinstance(event, MessageEvent): continue if not isinstance(event.message, TextMessage): continue text_send_message = TextSendMessage(text=event.message.text) line_bot_api.reply_message( event.reply_token, text_send_message ) return HttpResponse(status=200)
わざわざ説明するようなことはありませんが、こんな感じですね。
以下、一部サンプルを紹介です。
Botton
Documentation | LINE Developers より画像引用
ソースコード
from linebot.models import ( TemplateSendMessage, ButtonsTemplate, \ PostbackTemplateAction, MessageTemplateAction, URITemplateAction ) ・・・ line_bot_api.reply_message( event.reply_token, TemplateSendMessage( alt_text='Buttons template', template=ButtonsTemplate( thumbnail_image_url='https://example.com/image.jpg', title='Menu', text='Please select', actions=[ PostbackTemplateAction( label='postback', text='postback text', data='action=buy&itemid=1' ), MessageTemplateAction( label='message', text='message text' ), URITemplateAction( label='uri', uri='http://example.com/' ) ] ) ) )
Confirm
Documentation | LINE Developers より画像引用
ソースコード
from linebot.models import ( TemplateSendMessage, ConfirmTemplate, PostbackTemplateAction ) ・・・ line_bot_api.reply_message( event.reply_token, TemplateSendMessage( alt_text='Confirm template', template=ConfirmTemplate( text='Are you sure?', actions=[ PostbackTemplateAction( label='postback', text='postback text', data='action=buy&itemid=1' ), MessageTemplateAction( label='message', text='message text' ) ] ) ) )
README.md みたら基本的に書いてあるので見てね!(面倒になった
おまけ
LINE Messaging API のカルーセルメッセージにImage carouselタイプが追加されました。画像を中心にした表現が可能になりますのでご利用ください。シャレオツメッセージです。 #linebot https://t.co/EMnozwPF33 pic.twitter.com/Ll1Gobh15Z
— LINE_DEV (@LINE_DEV) 2017年8月31日
上記ツイートのように、最近新しいAPIが追加されたのでSDKにPR出したのでそれがマージされたときの使い方を紹介 ← マージされました!!
↓クソPRだよ!
github.com
from linebot.models import ( TemplateSendMessage, ImageCarouselTemplate, ImageCarouselColumn, \ PostbackTemplateAction, MessageTemplateAction, URITemplateAction ) ・・・ line_bot_api.reply_message( event.reply_token, TemplateSendMessage( alt_text='Image carousel template', template=ImageCarouselTemplate( columns=[ ImageCarouselColumn( image_url='https://example.com/item1.jpg', action=PostbackTemplateAction( label='postback1', data='action=buy&itemid=1' ) ), ImageCarouselColumn( image_url='https://example.com/item2.jpg', action=MessageTemplateAction( label='message2', text='message text2' ) ), ImageCarouselColumn( image_url='https://example.com/item3.jpg', action=URITemplateAction( label='uri1', uri='https://example.com/1' ) ) ] ) ) )
最後に
SDKを公式さんが出してくださっているのでやっぱり開発は楽ですね〜。
ただ上記リポジトリの examples
には Flask
でのみの実装サンプルしかないのであれでした。