Minette for Python으로 LINE BOT 만들기
사전에 준비하는 것
종속 라이브러리 설치
Minette의 동작에 필요한 pytz와 requests, LINE 엔드포인트를 시작하는 데 필요한 웹 애플리케이션 프레임워크 flask와 LINE SDK를 설치합니다. 설치된 경우 이 단계를 건너뛰어도 괜찮습니다.
$ pip install pytz
$ pip install requests
$ pip install Flask
$ pip install line-bot-sdk
Minette 설치
제목에 있는 것처럼 BOT 프레임워크의 Minette를 사용합니다. Minette에 대한 자세한 내용은 아래 문서를 참조하십시오.
$ pip install pytz
$ pip install requests
$ pip install Flask
$ pip install line-bot-sdk
제목에 있는 것처럼 BOT 프레임워크의 Minette를 사용합니다. Minette에 대한 자세한 내용은 아래 문서를 참조하십시오.
설치는
pip
명령 한 번으로 OK입니다.$ pip install minette
대답 BOT로 동작 확인해 봅시다.
$ minette
user> hello
minette> You said: hello
인터넷에 공개
※이 섹션은 개발 PC상에서 BOT를 동작시키는 경우를 상정한 것이므로, AWS상의 서버등에서 직접 작업을 하고 있는 경우, 스킵 해 주세요
LINE Messaging API의 인바운드는 개발자가 지정한 Webhook을 두드려 메시지를 전달해 주므로 Minette를 실행하는 머신을 인터넷에서 액세스할 수 있도록 해주어야 합니다.
여러가지 방법이 있을까 생각합니다만, 여기에서는 간편한 느낌의 ngrok를 사용한 순서를 설명합니다.
ngrok 설치
ngrok이란, 대충 말하면 각종 프로토콜에 대응한 라우팅&터널링 툴(이라고 하는 인식)입니다. 자세한 것은 ngrok 공식 를 봐 주시려면, 다운로드 페이지로부터 플랫폼에 응한 바이너리를 다운로드·해동해 주세요.
해동하면 그 이름도 ngrok
라는 이름의 실행 파일 1개가 출현하기 때문에, 이 녀석을 아래와 같이 두드립니다. 보통으로 실행하면 그 후의 작업을 할 수 없게 되어 버리므로, 백그라운드 실행하도록 하고 있습니다.
$ ./ngrok http 5050 -log=stdout > ngrok.log &
동작 확인과 함께 인터넷 URL을 확인합니다.
$ curl http://localhost:4040/api/tunnels
{"tunnels":[{"name":"command_line","uri":"/api/tunnels/command_line","public_url":"https://abcd1234.ngrok.io","proto":"https","config":{"addr":"localhost:5050","inspect":true},"metrics":{"conns":{"count":0,"gauge":0,"rate1":0,"rate5":0,"rate15":0,"p50":0,"p90":0,"p95":0,"p99":0},"http":{"count":0,"rate1":0,"rate5":0,"rate15":0,"p50":0,"p90":0,"p95":0,"p99":0}}},{"name":"command_line (http)","uri":"/api/tunnels/command_line+%28http%29","public_url":"http://abcd1234.ngrok.io","proto":"http","config":{"addr":"localhost:5050","inspect":true},"metrics":{"conns":{"count":0,"gauge":0,"rate1":0,"rate5":0,"rate15":0,"p50":0,"p90":0,"p95":0,"p99":0},"http":{"count":0,"rate1":0,"rate5":0,"rate15":0,"p50":0,"p90":0,"p95":0,"p99":0}}}],"uri":"/api/tunnels"}
어긋나고 정보가 돌아왔지만, public_url
의 항목으로 나타난 https://abcd1234.ngrok.io
가, ngrok 에 의해 지불된 Raspberry Pi에 액세스하기 위한 URL이므로, 이것을 카피하는 등 삼가해 유지합니다.
LINE developers의 Webhook URL로 설정
이전에 ngrok에서 내보낸 URL (또는 실행 환경 자체의 URL)의 /api
를 설정합니다.
이런 느낌입니다. 또한 서비스를 아직 시작하지 않았으므로 Verify를 눌러도 실패합니다.
LINE Messaging API의 엔드포인트로 시작
minette
명령은 범용 WebAPI 외에도 LINE Messaging API의 엔드 포인트 샘플 구현을 시작할 수 있습니다.
우선은 LINE Messaging API의 이용에 필요한 인증 관련 정보를 환경 변수로 설정합니다.
$ export LINE_CHANNEL_SECRET="あなたのチャネルシークレット"
$ export LINE_ACCESS_TOKEN="あなたのアクセストークン"
만약 docomo 잡담 API의 API 키가 있으면, 아래와 같이 설정하는 것으로 잡담 BOT가 됩니다. 이 절차를 생략하면 Minette의 동작 확인과 마찬가지로 회귀 BOT로 동작합니다.
$ export CHAT_API_KEY="あなたのAPIキー"
$ export DEFAULT_DIALOG_SERVICE="minette.dialog.chat_dialog.ChatDialogService"
이것으로 준비가 완료되므로 엔드포인트를 시작합시다. -l
옵션을 붙입니다.
$ minette -l
그럼, 동작 확인해 봅시다.
이런 느낌으로 움직이면 성공입니다. 미안해.
Reference
이 문제에 관하여(Minette for Python으로 LINE BOT 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/uezo/items/44136ee2486a3cf4fd8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ ./ngrok http 5050 -log=stdout > ngrok.log &
$ curl http://localhost:4040/api/tunnels
{"tunnels":[{"name":"command_line","uri":"/api/tunnels/command_line","public_url":"https://abcd1234.ngrok.io","proto":"https","config":{"addr":"localhost:5050","inspect":true},"metrics":{"conns":{"count":0,"gauge":0,"rate1":0,"rate5":0,"rate15":0,"p50":0,"p90":0,"p95":0,"p99":0},"http":{"count":0,"rate1":0,"rate5":0,"rate15":0,"p50":0,"p90":0,"p95":0,"p99":0}}},{"name":"command_line (http)","uri":"/api/tunnels/command_line+%28http%29","public_url":"http://abcd1234.ngrok.io","proto":"http","config":{"addr":"localhost:5050","inspect":true},"metrics":{"conns":{"count":0,"gauge":0,"rate1":0,"rate5":0,"rate15":0,"p50":0,"p90":0,"p95":0,"p99":0},"http":{"count":0,"rate1":0,"rate5":0,"rate15":0,"p50":0,"p90":0,"p95":0,"p99":0}}}],"uri":"/api/tunnels"}
이전에 ngrok에서 내보낸 URL (또는 실행 환경 자체의 URL)의
/api
를 설정합니다.이런 느낌입니다. 또한 서비스를 아직 시작하지 않았으므로 Verify를 눌러도 실패합니다.
LINE Messaging API의 엔드포인트로 시작
minette
명령은 범용 WebAPI 외에도 LINE Messaging API의 엔드 포인트 샘플 구현을 시작할 수 있습니다.
우선은 LINE Messaging API의 이용에 필요한 인증 관련 정보를 환경 변수로 설정합니다.
$ export LINE_CHANNEL_SECRET="あなたのチャネルシークレット"
$ export LINE_ACCESS_TOKEN="あなたのアクセストークン"
만약 docomo 잡담 API의 API 키가 있으면, 아래와 같이 설정하는 것으로 잡담 BOT가 됩니다. 이 절차를 생략하면 Minette의 동작 확인과 마찬가지로 회귀 BOT로 동작합니다.
$ export CHAT_API_KEY="あなたのAPIキー"
$ export DEFAULT_DIALOG_SERVICE="minette.dialog.chat_dialog.ChatDialogService"
이것으로 준비가 완료되므로 엔드포인트를 시작합시다. -l
옵션을 붙입니다.
$ minette -l
그럼, 동작 확인해 봅시다.
이런 느낌으로 움직이면 성공입니다. 미안해.
Reference
이 문제에 관하여(Minette for Python으로 LINE BOT 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/uezo/items/44136ee2486a3cf4fd8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ export LINE_CHANNEL_SECRET="あなたのチャネルシークレット"
$ export LINE_ACCESS_TOKEN="あなたのアクセストークン"
$ export CHAT_API_KEY="あなたのAPIキー"
$ export DEFAULT_DIALOG_SERVICE="minette.dialog.chat_dialog.ChatDialogService"
$ minette -l
Reference
이 문제에 관하여(Minette for Python으로 LINE BOT 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uezo/items/44136ee2486a3cf4fd8d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)