3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python、LINEbot【番外編】~もしも赤ちゃん服のお店をしていたら~

Last updated at Posted at 2020-11-27

#経緯
前回Python、Herokuを用いたLINEbot(オウム返し)を作成してみた!
よろしければそちらの記事も読んでいただければ幸いです!
PythonとHerokuでLINEBOTを作ってみた

そこで更に調べてみるとLINEdevelopersを調べていくとたくさん遊べると感じたので少しだけアレンジしたものを作ってみました。テーマは何でもよかったのですが、今年赤ちゃんが生まれたので「赤ちゃん服のお店」だったらにしました(笑)

※今回はホームページありきの内容を想定しております。
#LINEの編集
###基本設定
LINEdevelopersの基本設定からLINEbotのアイコンや挨拶メッセージを編集します。
スクリーンショット 2020-11-27 122144.png
※アイコンは間もなくクリスマスなのでサンタにしてます
###あいさつメッセージ設定
友達登録された際のあいさつ文を編集します
スクリーンショット 2020-11-27 121759.png
指定したメッセージを送ってもらうように同線を作ります。
※なお、指定されたメッセージ以外は前回同様にオウム返しされます。
#あとはソースコードをいじるだけ

main.py
from flask import Flask, request, abort

from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)
import os

app = Flask(__name__)

#環境変数取得
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]

line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)

@app.route("/")
def hello_world():
    return "hello world!"

@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']

    # get request body as text
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    # handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)

    return 'OK'

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    # "赤ちゃん"というメッセージが送られてきた場合
    # 指定のリンクを送信する。
    if event.message.text == "赤ちゃん":
        line_bot_api.reply_message(
            event.reply_token, 
            TextSendMessage(text="https://~"))
    # "ママ"というメッセージが送られてきた場合
    # 指定のリンクを送信する。
    elif event.message.text == "ママ":
        line_bot_api.reply_message(
            event.reply_token, 
            TextSendMessage(text="https://~"))
    # "ベビー"というメッセージが送られてきた場合
    # 指定のリンクを送信する。
    elif event.message.text == "ベビー":
        line_bot_api.reply_message(
            event.reply_token, 
            TextSendMessage(text="https://~"))
    # 特定の文字列以外はオウム返しする。
    else:
        line_bot_api.reply_message(
            event.reply_token, 
            TextSendMessage(text=event.message.text))

if __name__ == "__main__":
#    app.run()
    port = int(os.getenv("PORT"))
    app.run(host="0.0.0.0", port=port)

前回作成したオウム返しの部分にif文で送られてきたメッセージに応じてサイトの各ページに飛べるようにURLを返すように修正しました。
※ここに画像や文を乗せてもOK

cd linebot  
git init
git add .
git commit -am "make it better"
git push heroku master

前回作成したHerokuに設置します
#友達登録してみる
友達登録をすると挨拶文が表示されるため、それらに応じたメッセージを送信すると、、、
スクリーンショット 2020-11-27 120421.png
各ページへのリンクを返信することができました!
#バージョンアップ
これらの機能以外にも一斉送信で新商品の宣伝も出来ると思ったので試してみたいと思います!

###作ってみた感想
ただ実際に作ってみての感想としては赤ちゃん用品の場合、こういったBotによる宣伝よりも友人や知人による口コミなどの方が影響力があるのかな思いつつ、お店の人があいさつ代わりに友達登録してもらうドブ板営業をしていけば、、、なんて思いました(笑)

お付き合いいただきありがとうございました!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?