LINE@からのWebhook との通信でエラーが発生しましたについて
- 評価
- クリップ 0
- VIEW 1,326
DjangoとApacheを用いてLINE@にBOTを作成しています。環境を整えwebhook(アドレスは<domain>/callback)を認識させる段まで来ましたが、タイトル通りのエラーが出てしまいます。以下私の環境、確認した現象ならびにソースコードなどです。
・環境
ArchLinux
Apache 2.4.33
Django 2.0.5
SSL証明書Let's encrypt由来のものを使用
・確認した現象
アクセスログにはLINEからと思われる通信記録がありませんでした。しかし、httpsでfirefoxを使用したアクセスはでき、生存信号は発しています。
・ソースなど(httpd.conf,views.py,url.py)
//httpd.conf(一部省略)
#WSGIScriptAlias / /srv/http/trippp/trippp/wsgi.py
#WSGIPythonPath /srv/http/trippp
#Alias /static /srv/http/static
#<Directory /srv/http/trippp/trippp>
# AllowOverride None
# <Files wsgi.py>
# Require all granted
# </Files>
#</Directory>
#<Directory /srv/http/static>
#Require all granted
#</Directory>
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
//django views.py
from django.shortcuts import render
from django.http.response import HttpResponse
import os
import json
import random
import requests
from django.http import JsonResponse
from django.views.generic import View
import urllib
REPLY_ENDPOINT = 'https://api.line.me/v2/bot/message/reply'
header = {
"Content-Type": "application/json",
"Authorization": "SNhJEyedwz7m8O2Bl0oZ5OUnVFrYJMwi/riT0EdZxUtwLpg/OKFbKr27UVdLZ7P7nEQp0YufLtriNnE1CVo2tmSRidh/yY/69rmnnYoMdFX7oMz/8g9hiSFZOzwqNd0+TLqhi3UzOf03BQ3LC4bTiwdB04t89/1O/w1cDnyilFU="
}
def dispose(events):
global header
print('This is dispose request')
for event in events:
reply_token = event['replyToken']
event_type = event['type']
user_id = event['source']['userId']
response_to_talk(reply_token, event)
def response_to_talk(reply_token, event):
global header
print("enter response to talk")
payload = {
"replyToken":reply_token,
"messages":
{
"type":"text",
"text": event['message']['text']
}
}
req = requests.post(REPLY_ENDPOINT, headers=header, data=json.dumps(payload))
class ViewSet(View):
global header
http_method_names = ['get', 'post']
def get(self, *args, **kwargs):
return JsonResponse({'Successfully': 'Connected!'})
def post(self, request, *args, **kwargs):
dispose(json.loads(request.body.decode("utf-8"))['events'])
return JsonResponse({'': ''})
//url.py
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from core.views import ViewSet
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^callback$', ViewSet.as_view()),
]
足りない情報等あれば大変恐縮ですが、指摘していただけると幸いです。以上よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.37%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる