前提・実現したいこと
ここに質問の内容を詳しく書いてください。
Line API(Bot)開発において,対話相手からメッセージがあるとその内容をローカル(自分のPC)にあるテキストファイルに自動で書き込むシステム
なおwebhookを用いており,オウム返しの動作は下のURLのコードを参考にし,動作を確認した
https://note.com/consultant1221/n/n7084879ae345
発生している問題・エラーメッセージ
FileNotFoundError: [Errno 2] No such file or directory (当然オンライン上で動かしているプログラムなので,ローカルのpathを指定しても動かない)
該当のソースコード
Python
1from flask import Flask, request, abort 2from linebot import ( 3 LineBotApi, WebhookHandler 4) 5from linebot.exceptions import ( 6 InvalidSignatureError 7) 8from linebot.models import ( 9 FollowEvent, MessageEvent, TextMessage, TextSendMessage, ImageMessage, ImageSendMessage, TemplateSendMessage, ButtonsTemplate, PostbackTemplateAction, MessageTemplateAction, URITemplateAction 10) 11import os 12# 軽量なウェブアプリケーションフレームワーク:Flask 13app = Flask(__name__) 14#環境変数からLINE Access Tokenを設定 15LINE_CHANNEL_ACCESS_TOKEN = os.environ["LINE_CHANNEL_ACCESS_TOKEN"] 16#環境変数からLINE Channel Secretを設定 17LINE_CHANNEL_SECRET = os.environ["LINE_CHANNEL_SECRET"] 18line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN) 19handler = WebhookHandler(LINE_CHANNEL_SECRET) 20@app.route("/callback", methods=['POST']) 21def callback(): 22 # get X-Line-Signature header value 23 signature = request.headers['X-Line-Signature'] 24 # get request body as text 25 body = request.get_data(as_text=True) 26 app.logger.info("Request body: " + body) 27 # handle webhook body 28 try: 29 handler.handle(body, signature) 30 except InvalidSignatureError: 31 abort(400) 32 return 'OK' 33# MessageEvent 34@handler.add(MessageEvent, message=TextMessage) 35def handle_message(event): 36 37f = open('自分のローカルのテキストファイルのパス', 'w') 38f.write(event.message.text) 39f.close() 40 41line_bot_api.reply_message 42( 43 event.reply_token, 44 TextSendMessage(text=event.message.text) 45 ) 46if __name__ == "__main__": 47 port = int(os.getenv("PORT")) 48 app.run(host="0.0.0.0", port=port)
試したこと
・オンライン上でローカルのファイルにアクセス(file open)を使う方法を調べたが,見つからなかった.
・ネットワークパスについて調べたが,実現したいことに繋がるかわからなかった.
→そもそもセキュリティの都合上オンライン上から自分のテキストファイルに遠隔で書き込むことができない可能性も考えているのですが,知識が浅いため,それができないという知識(理由など)もないので,お手数だとは思いますが,教えていただけると幸いです.
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/18 05:50