Pymessager는 Facebook 메신저의 Python API이며 Facebook 메신저에서 챗봇을 개발하는 방법을 보여주는 샘플 프로젝트입니다.
완전한 튜토리얼은 Python 및 Chatbot을 사용하여 Facebook 봇 개발에 있습니다. 0에서 1까지 설정하고 개발할 수있는 자세한 정보를 찾을 수 있습니다.
Pymessager를 설치하려면 간단히 실행하십시오.
$ pip install pymessager
또는 저장소에서 설치 :
$ git clone [email protected]:enginebai/PyMessager.git
$ cd PyMessager
$ pip install -r requirements.txt
from pymessager . message import Messager , ... # something else you need
개발자 콘솔에서 Facebook 액세스 토큰을 통해 Messager 클라이언트를 초기화 할 수 있습니다.
from pymessager . message import Messager
client = Messager ( config . facebook_access_token )
다음 코드는 메시지 수신기를 작성하는 데 사용되며 봇을 준비하는 세 가지 주요 단계가 있습니다.
@ app . route ( API_ROOT + FB_WEBHOOK , methods = [ "GET" ])
def fb_webhook ():
verification_code = 'I_AM_VERIFICIATION_CODE'
verify_token = request . args . get ( 'hub.verify_token' )
if verification_code == verify_token :
return request . args . get ( 'hub.challenge' )
@ app . route ( API_ROOT + FB_WEBHOOK , methods = [ 'POST' ])
def fb_receive_message ():
message_entries = json . loads ( request . data . decode ( 'utf8' ))[ 'entry' ]
for entry in message_entries :
for message in entry [ 'messaging' ]:
if message . get ( 'message' ):
print ( "{sender[id]} says {message[text]}" . format ( ** message ))
return "Hi"
if __name__ == '__main__' :
context = ( 'ssl/fullchain.pem' , 'ssl/privkey.pem' )
app . run ( host = '0.0.0.0' , debug = True , ssl_context = context )
text
, image
, quick replies
, button template
또는 generic template
의 여러 유형의 메시지가 있습니다. API는 메시지 템플릿을 생성하기 위해 다른 클래스를 제공합니다.
수신자에게 간단한 텍스트 나 이미지를 보내십시오. 이미지 URL이 유효한 링크인지 확인하십시오.
client . send_text ( user_id , "Hello, I'm enginebai." )
client . send_image ( user_id , "http://image-url.jpg" )
QuickReply(title, payload, image_url, content_type)
클래스는 메시지에 응답하여 사용자에게 현재 버튼을 정의합니다.
매개 변수 | 설명 | 필수의 |
---|---|---|
title | 버튼 제목 | 와이 |
payload | 클릭 페이로드 문자열 | 와이 |
image_url | 아이콘 이미지 URL | N |
content_type | TEXT 또는 LOCATION | 와이 |
client . send_quick_replies ( user_id , "Help" , [
QuickReply ( "Projects" , Intent . PROJECT ),
QuickReply ( "Blog" , Intent . BLOG ),
QuickReply ( "Contact Me" , Intent . CONTACT_ME )
])
ActionButton(button_type, title, url, payload)
클래스는 사용자의 요청 입력에 대한 텍스트 및 버튼 첨부 파일이 포함 된 버튼 템플릿을 정의합니다.
매개 변수 | 설명 | 필수의 |
---|---|---|
button_type | WEB_URL 또는 POSTBACK | 와이 |
title | 버튼 제목 | 와이 |
url | 링크 | button_type url 인 경우에만 |
payload | 클릭 페이로드 문자열 | button_type 가 POSTBACK 인 경우에만 |
client . send_buttons ( user_id , "You can find me with below" , [
ActionButton ( ButtonType . WEB_URL , "Blog" , "http://blog.enginebai.com" ),
ActionButton ( ButtonType . POSTBACK , "Email" , Intent . EMAIL )
])
GenericElement(title, subtitle, image_url, buttons)
클래스는 각각 이미지 첨부 파일, 간단한 설명 및 버튼으로 구성된 수평 스크롤 가능한 회전 목마를 정의하여 사용자의 입력을 요청합니다.
매개 변수 | 설명 | 필수의 |
---|---|---|
title_text | 메시지 메인 제목 | 와이 |
subtitle_text | 메시지 자막, 필요하지 않으면 비워 두십시오. | N |
button_list | ActionButton 목록 | 와이 |
project_list = []
for project_id , project in projects . items ():
project_list . append ( GenericElement (
project [ "title" ],
project [ "description" ],
config . api_root + project [ "image_url" ], [
ActionButton ( ButtonType . POSTBACK ,
self . _get_string ( "button_more" ),
# Payload use Intent for the beginning
payload = Intent . PROJECTS . name + project_id )
]))
client . send_generic ( user_id , project_list )
챗봇이 메시지를 받기 전에 챗봇 페이지에 응용 프로그램을 구독해야합니다. 페이지를 구독하려면 다음과 같이 전화하십시오.
client . subscribe_to_page ()
인사말 텍스트는 모바일에서만이 챗봇을 처음 열 때 표시됩니다. 페이로드는 사용자가 "시작"버튼을 클릭하면 트리거입니다.
client . set_greeting_text ( "Hi, this is Engine Bai. Nice to meet you!" )
client . set_get_started_button_payload ( "HELP" ) # Specify a payload string.
버그 보고서 또는 기능 요청을 자유롭게 제출하고 문제를 열기 전에 기여 가이드 라인을 읽으십시오.
feature
/ bug
)이있는 기능 요청 또는 버그 보고서에 대한 열린 / 닫기 문제를 확인하거나 새로운 문제를여십시오.기고에 대해 자세히 알아보십시오.
The MIT License (MIT)
Copyright © 2017 Engine Bai.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.