いつも大変お世話になっております。
表記の件について、line-bot-sdk-pythonを使ってみたを参考に送信したメッセージがおうむ返しされるbotを作りましたが、返ってきません。
$ heroku logs -tail 2018-08-19T21:35:47.514283+00:00 heroku[router]: at=info method=POST path="/linebot/callback" host=echo-bot123.herokuapp.com request_id=aefb51e5-8487-4936-98b1-00607b167f77 fwd="203.104.146.155" dyno=web.1 connect=1ms service=3ms status=301 bytes=204 protocol=https 2018-08-19T21:35:47.515531+00:00 app[web.1]: 10.182.199.117 - - [20/Aug/2018:06:35:47 +0900] "POST /linebot/callback HTTP/1.1" 301 0 "-" "LineBotWebhook/1.0"
となり、エラーは出ていないようなのですが…
何が原因なのかわからず困っておりますので助言いただけるとありがたいです。
書いたコードは以下の通りです。
開発環境
・mac OS 10.13.6
・Python 3.7.0
・Django 2.1
・line-bot-sdk 1.8.0
コード全文
https://github.com/nokonoko1203/line_bot
Pythom
1# views.py 2 3# -*- encoding: utf-8 -*- 4#from django.shortcuts import render 5# 6## Create your views here. 7from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden 8from django.views.decorators.csrf import csrf_exempt 9from linebot import LineBotApi, WebhookHandler 10from linebot.exceptions import InvalidSignatureError, LineBotApiError 11from linebot.models import MessageEvent, TextMessage, TextSendMessage 12 13import os 14 15 16ECHO_BOT_ACCESS_TOKEN = os.environ.get('ECHO_BOT_ACCESS_TOKEN') 17ECHO_BOT_CHANNEL_SECRET = os.environ.get('ECHO_BOT_CHANNEL_SECRET') 18 19# 各クライアントライブラリのインスタンス作成 20line_bot_api = LineBotApi(channel_access_token=ECHO_BOT_ACCESS_TOKEN) 21handler = WebhookHandler(channel_secret=ECHO_BOT_CHANNEL_SECRET) 22 23 24def index(request): 25 return HttpResponse("This is bot api.") 26 27 28@csrf_exempt 29def callback(request): 30 # リクエストヘッダーから署名検証のための値を取得 31 signature = request.META['HTTP_X_LINE_SIGNATURE'] 32 # リクエストボディを取得 33 body = request.body.decode('utf-8') 34 try: 35 # 署名の検証を行い、成功した場合にhandleされたメソッドを呼び出す 36 handler.handle(body, signature) 37 except InvalidSignatureError: 38 # 署名検証で失敗したときは例外をあげる 39 return HttpResponseForbidden() 40 # handleの処理を終えればOK 41 return HttpResponse('OK') 42 43 44# メッセージイベントの場合の処理 45@handler.add(MessageEvent, message=TextMessage) 46def handle_text_message(event): 47 # メッセージでもテキストの場合はオウム返しする 48 line_bot_api.reply_message( 49 event.reply_token, 50 TextSendMessage(text=event.message.text) 51 )
Python
1# urls.py 2 3from django.conf.urls import include, url 4from django.urls import path 5from . import views 6 7urlpatterns = [ 8 path('callback/', views.callback), 9 path('index/', views.index), 10]
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。