Heroku+Rails로 움직이는 Facebook Messenger의 앵무새 반환 Bot

5003 단어 경 6FacebookRailsbot
어젯밤

F8 컨퍼런스: 페이스북이 메신저 채팅봇 플랫폼 출시

Facebook의 F8 컨퍼런스에서 Messenger의 채팅봇 플랫폼을 발표했습니다.

그렇다면 조속히 앵무새 반환 Bot을 만들어 보겠습니다.



공식 문서는
Messenger Platform - 참고 자료 - 개발자용 Facebook

여기입니다.

1 Facebook 개발자 페이지에서 앱 또는 페이지 만들기(또는 기존 앱 사용)



채팅봇을 게시하려면 Facebook 앱 또는 페이지가 필요합니다.

Quick Starts - 개발자용 Facebook

2 앱 페이지의 왼쪽 사이드 바 아래에서 두 번째 Messenger를 선택하고 "Get Started"버튼을 누릅니다.



Messenger라는 항목이 새로 추가되었습니다.



3 Webhook 등록하기



약간 까다롭지만 먼저 Webhook을 설정해야합니다. 여기에서 콜백 URL을 등록하기 위해서는 먼저 URL을 준비하고, 적절한 토큰을 입력하고, 등록 시 Facebook이 수행하는 검증을 통과해야 합니다.





이를 위한 샘플 코드를 설명합니다. (heroku의 경우)

다시 전화 요청할 URL htps : // 에어 mpぇ. 어리석은 p. 코 m / 아피 / 굵은 CK
토큰 hogehoge

※토큰은 각자 적당한 것을 입력해 주세요.

를 입력합니다.

그리고 검증을 위해 callback을 받아들이기 위한 처리를 준비합니다.

Rails의 예를 적습니다.
def callback
   if params["hub.verify_token"] == "hogehoge"
      render json: params["hub.challenge"]
   else
      render json: "Error, wrong validation token"
   end
end

그런 다음 '확인 및 저장' 버튼을 누르면 Facebook이 콜백 URL에 확인 요청을 보내고 통과하면 등록이 완료됩니다.

4 액세스 토큰을 발행합시다.



Facebook 페이지를 이용하여,



5 채팅봇 시작



4에서 얻은 액세스 토큰을 사용하여 curl 명령에서 채팅 봇을 시작합니다. YOUR_TOKEN을 교체하고 콘솔에서 다음을 치십시오.

curl -ik -X POST "htps // g 등 ph. 후세보오 k. 이 m/v2.6/메/스 bsc 리베 d_아니 ps? 아세스 s_와 켄 = R_와 켄"

6 테스트해 봅시다.



Facebook Messenger 앱의 '친구 및 그룹 검색'에서 등록한 앱(또는 페이지)을 검색하여 친구에게 추가하고 적당히 말해 보세요. 그러면 콜백 URL에 요청이 전송됩니다.





7 앵무새를 돌려 보자.



글쎄, 마지막이지만 앵무새 반환을 시도합니다.

Bot이 발언을 해도, 같은 콜백에 돌아오므로, 적당하게 「hoge」라든지 돌려주는 샘플을 쓰고 있으면 무한 루프가 되어 빠졌습니다. . . Bot인지 유저의 발언인지를 판정하고, 경우 나누고 있습니다.
def callback

    token = "<TOKEN>"

    message = params["entry"][0]["messaging"][0]    

    if message.include?("message")

      #ユーザーの発言

      sender = message["sender"]["id"]
      text = message["message"]["text"]

      endpoint_uri = "https://graph.facebook.com/v2.6/me/messages?access_token=" + token
      request_content = {recipient: {id:sender},
                         message: {text: text}
                        }

      content_json = request_content.to_json

      RestClient.post(endpoint_uri, content_json, {
        'Content-Type' => 'application/json; charset=UTF-8'
      }){ |response, request, result, &block|
        p response
        p request
        p result
      }
    else
      #botの発言
    end
  end

홍보



아래와 같이 2개를 운영하고 있으므로, 꼭 팔로우해 주세요!

Bot에 관한 뉴스 미디어 "BotEgg 뉴스"htp // // ws. 흐릿한 g. 코m/
Facebook Bot 연구회 htps //w w. 후세보오 k. 이 m/g 납 ps/1684644661776706/? f f = ts

좋은 웹페이지 즐겨찾기