LINEbotを作成してみる(phpから変更)のソースを表示
←
LINEbotを作成してみる(phpから変更)
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、以下のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
== 概要 == == 使用例 == === flaskから === ==== conf.jsonファイル ==== <syntaxhighlight lang="json"> { "CHANNEL_SECRET": "SECRETを入力", "CHANNEL_ACCESS_TOKEN": "アクセストークンを入力" } </syntaxhighlight> ==== main ==== <syntaxhighlight lang="python3"> with open('conf.json', 'r', encoding="utf-8") as f: CONF_DATA = json.load(f) CHANNEL_ACCESS_TOKEN = CONF_DATA['CHANNEL_ACCESS_TOKEN'] CHANNEL_SECRET = CONF_DATA['CHANNEL_SECRET'] line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN) handler = WebhookHandler(CHANNEL_SECRET) errorHandler = handler #もしアカウントごとにセッションを保持したければこちらを使っても良い #簡易的なものだから雑 #たとえば、前の会話を記録して「さっきの話をして」などに対応できる。 class lineUser: def __init__(self): self.history = {"name": "ラーメン"} self.msg = "" def set(self, user, cmd): self.history[user] = cmd def get(self, user): try: return self.history.pop(user) except: return "" def log(self,msg): self.msg = msg return msg def getLog(self): if not(self.msg): self.msg = '時間内に処理できませんでした。org' return self.msg def setLog(self,msg): self.msg = str(msg) #個チャかグループかオープンチャットの否を識別させます。 def isEndUserType(self,event,command): if type(command) == str: return event.source.type == "user" or ( (event.source.type == "group" or event.source.type == "room") and ("all" == command)) elif command == None: return event.source.type == "user" else: event.source.type == "group" or event.source.type == "room" linebotUser = lineUser() @app.route("/api/line/callback", methods=['POST']) def callback(): try: # get X-Line-Signature header value signature = request.headers['X-Line-Signature'] # get request body as text #body = request.raw_body.decode('utf8') body = request.get_data(as_text=True) # 署名を検証、問題なければhandleに定義されている関数を呼び出す handler.handle(body, signature) # handle webhook body except InvalidSignatureError as e: if debug: return e, 403 else: return "参照する権限がありませんでした。", 403 except Exception as e: try: signature = request.headers['X-Line-Signature'] body = request.get_data(as_text=True) # 署名を検証、問題なければhandleに定義されている関数を呼び出す errorHandler.handle(body, signature) except: with open("DEBUG.log","a",encoding="utf-8") as f: f.write("{}\n".format(traceback.format_exc())) f.write("->'{}'<-\n".format(linebotUser.getLog())) if debug: return e, 503 else: return "APIError: Sorry. try again.", 400 return 'OK' @errorHandler.add(MessageEvent, message=TextMessage) def ErrorHandle_message(event): line_bot_api.reply_message( event.reply_token, TextSendMessage(text=linebotUser.getLog())) @handler.add(MessageEvent, message=TextMessage) def handle_message(event): line_bot_api.reply_message( event.reply_token, TextSendMessage(text='ここにメッセージ') ) @handler.add(MessageEvent, message=ImageMessage) def handle_image(event): if lineUser.isEndUserType(event,command=None): line_bot_api.reply_message( event.reply_token, TextSendMessage(text="画像への返信")) @handler.add(MessageEvent, message=VideoMessage) def handle_video(event): if lineUser.isEndUserType(event,command=None): line_bot_api.reply_message( event.reply_token, TextSendMessage(text="動画への返信")) #LINEスタンプの送信 @handler.add(MessageEvent, message=StickerMessage) def handle_sticker(event): # https://developers.line.biz/media/messaging-api/sticker_list.pdf sticker_ids = [] for i in range(42, 66): sticker_ids.append(f"165812{i}") random.shuffle(sticker_ids) sticker_message = StickerSendMessage( package_id='8515', sticker_id=sticker_ids[0] ) line_bot_api.reply_message( event.reply_token, sticker_message ) </syntaxhighlight> ==== ラインのデコレーション ====
LINEbotを作成してみる(phpから変更)
に戻る。
案内メニュー
個人用ツール
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWikiについてのヘルプ
コード系
Program
PHP
Java
Python
Swift
JavaScript
HTML
CSS
C言語
MySQL
サーバー系
Apache2
OS系
Debian
kail
アプリケーション系
Xcode
Android Studio
計算系
ファイル系
速度系
メモ・業務
My命名規則
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
編集
左メニュー
動画挿入について
動画・音声を追加する
JavaScriptを埋め込む
ページにリダイレクトを指定する