Facebook Messenger API + Flask 비망록 [도입편]

Facebook Graph API의 일부인 Facebook Messenger Platform 사용법 노트
  • FB 앱을 만들고 관리자가 만든 FB 페이지에 연결하여 다양한 메시지를 보낼 수 있습니다
  • 직접 POST 요청으로 전송할 수 있지만 Webhook 기능이 있으므로 PHP 및 Flask와 같은 다른 서버의 프로그램과 링크하여 고급 처리가 가능합니다

  • 미리 Facebook for Developers로 등록한 admin, developer, tester 밖에 사용할 수 없다. 또, 친구가 아닌 사람의 어플리에의 추가는 불가. 공개적으로 누구나 사용할 수 있도록 하려면 Review 신청을 하고 심사에 다닐 필요가 있다.
  • Flask 앱은 Heroku (USA 리전)와 AWS EC2 (싱가포르 리전)에서 시도했지만 AWS는 응답 속도가 빠릅니다.
  • NLP 기능도 있지만 일본어, 태국어 등은 지원되지 않음 (2020-12)

  • 초기 설정



    htps : //에서 ゔぇぺぺrs. 후세보오 k. 이 m/아 ps/에서 Create App로 앱 만들기

    What do you need your app to do?는 Manage Business Integrations를 선택했지만 Something Else에서도 좋을 것 같습니다.

    앱 디스플레이 이름을 넣고 Create App


    Add Products가 많이 나오지만, 우선 Messenger만 선택해 추가



    중간당 Access Tokens로 연동할 Facebook 페이지를 추가합니다. Add or Remove Pages에서
    자신이 admin의 페이지 일람이 나오므로 선택.



    페이지가 등록되면 오른쪽의 Generate Token에서 액세스 토큰을 발행하여 기록한다. 우선 환경 변수 .env에 저장.

    이것은 Facebook Graph API를 통해 요청을 보낼 때 매개 변수로 매번 반드시 첨부해야합니다. 굉장히 길다.



    그런 다음 Webhook 설정. Callback URL은 Flask 앱의 콜백 프로그램이 있는 URL을 지정, HTTP는 불가능하므로 AWS EC2 인스턴스의 IP 주소를 그대로 사용할 수 없다(EC2의 HTTPS화는 별도로 기재). Heroku에 배포하면 HTTPS 통신이 가능합니다.

    URL은 https://.../callback로 설정되었습니다. 여기에 기입하는 Verify Token 은 Facebook 측으로부터 리퀘스트를 보내 답장이 오는지 어떤지를 테스트를 하기 위한 것이며, 뭐든지 좋다. 우선 test 로 해 두고, .envVERIFY_TOKEN=test 라고 보존했지만, 개인용이라면 그대로 프로그램내에 하드 코딩 해도 좋을지도 모른다. 프로그램이 정상이면 Verify and Save 할 수 있습니다.



    여기서, Flask측의 프로그램은 이하. 이 테스트에 대한 요청은 GET 메소드입니다. 실제 콜백 함수가 되는 'POST' 부분은 나중에 추가됩니다.
    import os
    from flask import Flask, request
    from dotenv import load_dotenv
    load_dotenv() # 環境変数ファイル .env の読み込み
    VERIFY_TOKEN = os.getenv('VERIFY_TOKEN')
    
    @app.route('/callback', methods=['GET', 'POST'])
    def receive_message():
        if request.args.get("hub.verify_token") == VERIFY_TOKEN:
            return request.args.get("hub.challenge")
        else:
            return 'ちがうよ'
    

    요청에 어떤 매개 변수가 있는지 여기를 참조하십시오.

    요컨대, 보내져 온 hub.verify_token 의 값을 체크해, 같으면 hub.challenge 의 값을 돌려주고 있을 뿐. 브라우저의 URL 바에
    https://.../callback?hub.verify_token=test&hub.challenge=SUCCESS
    를 입력하고 SUCCESS 라고 표시되면 OK

    Webhook 등록이 완료되면 이번에는 Add Subscription에서 사용할 API 유형을 선택합니다. 너무 많아서 차이를 모른다(여기 참조) 하지만, 우선 messages, message_deliveries, messaging_postbacks 를 선택한다. 필요하면 나중에 얼마든지 추가할 수 있다.





    이 후 자신이 관리하고 있는 FB 페이지로 가서 Page Settings > Advanced Messaging > Connected Apps 곳에 등록한 앱이 있으면 OK.

    회신용 Python 프로그램 구현은 다음에

    실장편 1

    좋은 웹페이지 즐겨찾기