[25327] 2016-08-03_如何用Python和Flask建立部署一个FacebookMessenger机器人

文档创建者:s7ckTeam
浏览次数:4
最后更新:2025-01-19
2016-08-03_如何用Python和Flask建立部署一个FacebookMessenger机器人   P y t h o n     F l a s k     F a c e b o o k   M e s s e n g e r     w y a n g s u n   L i n u x   2 0 1 6 - 0 8 - 0 3   F a c e b o o k   M e s s e n g e r   H e l l o   W o r l d   M e s s e n g e r   使 : H e r o k u [ 1 ]   P y t h o n [ 2 ]     2 . 7   P y h t o n   3   F l a s k [ 3 ]     G i t [ 4 ]     H e r o k u V i r t u a l e n v [ 5 ]   p y t h o n     p y t h o n   M e s s e n g e r   G E T     F a c e B o o k     M e s s e n g e r   P O S T     P O S T     P O S T     2 0 0   O K     2 0 0   O K     M e s s e n g e r   H e r o k u   F a c e b o o k   便   M e s s e n g e r  
  G i t h u b     h u l t ( M a g n u s   H u l t ) [ 6 ]     C h a t b o t [ 7 ]   4 .   6 .   1 0 .   2 0 .   1 .   f r o m   f l a s k   i m p o r t   F l a s k ,   r e q u e s t 2 .   i m p o r t   j s o n 3 .   i m p o r t   r e q u e s t s 5 .   a p p   =   F l a s k ( _ _ n a m e _ _ ) 7 .   # # #   P A T 8 .   # # #     F a c e b o o k   9 .   P A T   =   ' ' 1 1 .   @ a p p . r o u t e ( ' / ' ,   m e t h o d s = [ ' G E T ' ] ) 1 2 .   d e f   h a n d l e _ v e r i f i c a t i o n ( ) : 1 3 .       p r i n t   " H a n d l i n g   V e r i f i c a t i o n . " 1 4 .       i f   r e q u e s t . a r g s . g e t ( ' h u b . v e r i f y _ t o k e n ' ,   ' ' )   = =   ' m y _ v o i c e _ i s _ m y _ p a s s w o r d _ v e r i f y _ m e ' : 1 5 .           p r i n t   " V e r i f i c a t i o n   s u c c e s s f u l ! " 1 6 .           r e t u r n   r e q u e s t . a r g s . g e t ( ' h u b . c h a l l e n g e ' ,   ' ' ) 1 7 .       e l s e : 1 8 .           p r i n t   " V e r i f i c a t i o n   f a i l e d ! " 1 9 .           r e t u r n   ' E r r o r ,   w r o n g   v a l i d a t i o n   t o k e n ' 2 1 .   @ a p p . r o u t e ( ' / ' ,   m e t h o d s = [ ' P O S T ' ] ) 2 2 .   d e f   h a n d l e _ m e s s a g e s ( ) : 2 3 .       p r i n t   " H a n d l i n g   M e s s a g e s " 2 4 .       p a y l o a d   =   r e q u e s t . g e t _ d a t a ( ) 2 5 .       p r i n t   p a y l o a d 2 6 .       f o r   s e n d e r ,   m e s s a g e   i n   m e s s a g i n g _ e v e n t s ( p a y l o a d ) : 2 7 .           p r i n t   " I n c o m i n g   f r o m   % s :   % s "   %   ( s e n d e r ,   m e s s a g e )
3 0 .   4 2 .   4 3 .   4 7 .   5 7 .   2 7 .           p r i n t   " I n c o m i n g   f r o m   % s :   % s "   %   ( s e n d e r ,   m e s s a g e ) 2 8 .           s e n d _ m e s s a g e ( P A T ,   s e n d e r ,   m e s s a g e ) 2 9 .       r e t u r n   " o k " 3 1 .   d e f   m e s s a g i n g _ e v e n t s ( p a y l o a d ) : 3 2 .       " " " G e n e r a t e   t u p l e s   o f   ( s e n d e r _ i d ,   m e s s a g e _ t e x t )   f r o m   t h e 3 3 .       p r o v i d e d   p a y l o a d . 3 4 .       " " " 3 5 .       d a t a   =   j s o n . l o a d s ( p a y l o a d ) 3 6 .       m e s s a g i n g _ e v e n t s   =   d a t a [ " e n t r y " ] [ 0 ] [ " m e s s a g i n g " ] 3 7 .       f o r   e v e n t   i n   m e s s a g i n g _ e v e n t s : 3 8 .           i f   " m e s s a g e "   i n   e v e n t   a n d   " t e x t "   i n   e v e n t [ " m e s s a g e " ] : 3 9 .               y i e l d   e v e n t [ " s e n d e r " ] [ " i d " ] ,   e v e n t [ " m e s s a g e " ] [ " t e x t " ] . e n c o d e ( ' u n i c o d e _ e s c a p e ' ) 4 0 .           e l s e : 4 1 .               y i e l d   e v e n t [ " s e n d e r " ] [ " i d " ] ,   " I   c a n ' t   e c h o   t h i s " 4 4 .   d e f   s e n d _ m e s s a g e ( t o k e n ,   r e c i p i e n t ,   t e x t ) : 4 5 .       " " " S e n d   t h e   m e s s a g e   t e x t   t o   r e c i p i e n t   w i t h   i d   r e c i p i e n t . 4 6 .       " " " 4 8 .       r   =   r e q u e s t s . p o s t ( " h t t p s : / / g r a p h . f a c e b o o k . c o m / v 2 . 6 / m e / m e s s a g e s " , 4 9 .           p a r a m s = { " a c c e s s _ t o k e n " :   t o k e n } , 5 0 .           d a t a = j s o n . d u m p s ( { 5 1 .               " r e c i p i e n t " :   { " i d " :   r e c i p i e n t } , 5 2 .               " m e s s a g e " :   { " t e x t " :   t e x t . d e c o d e ( ' u n i c o d e _ e s c a p e ' ) } 5 3 .           } ) , 5 4 .           h e a d e r s = { ' C o n t e n t - t y p e ' :   ' a p p l i c a t i o n / j s o n ' } ) 5 5 .       i f   r . s t a t u s _ c o d e   ! =   r e q u e s t s . c o d e s . o k : 5 6 .           p r i n t   r . t e x t
使   F l a s k     a p p . r o u t e     G E T     P O S T     F a c e b o o k   v e r i f y _ t o k e n     M e s s e n g e r   h u b . c h a l l e n g e M e s s e n g e r   P O S T   5 8 .   i f   _ _ n a m e _ _   = =   ' _ _ m a i n _ _ ' : 5 9 .       a p p . r u n ( ) 1 .   f r o m   f l a s k   i m p o r t   F l a s k ,   r e q u e s t 2 .   i m p o r t   j s o n 3 .   i m p o r t   r e q u e s t s 1 .   @ a p p . r o u t e ( ' / ' ,   m e t h o d s = [ ' G E T ' ] ) 2 .   d e f   h a n d l e _ v e r i f i c a t i o n ( ) : 3 .       p r i n t   " H a n d l i n g   V e r i f i c a t i o n . " 4 .       i f   r e q u e s t . a r g s . g e t ( ' h u b . v e r i f y _ t o k e n ' ,   ' ' )   = =   ' m y _ v o i c e _ i s _ m y _ p a s s w o r d _ v e r i f y _ m e ' : 5 .           p r i n t   " V e r i f i c a t i o n   s u c c e s s f u l ! " 6 .           r e t u r n   r e q u e s t . a r g s . g e t ( ' h u b . c h a l l e n g e ' ,   ' ' ) 7 .       e l s e : 8 .           p r i n t   " V e r i f i c a t i o n   f a i l e d ! " 9 .           r e t u r n   ' E r r o r ,   w r o n g   v a l i d a t i o n   t o k e n ' 1 .   @ a p p . r o u t e ( ' / ' ,   m e t h o d s = [ ' P O S T ' ] ) 2 .   d e f   h a n d l e _ m e s s a g e s ( ) : 3 .       p r i n t   " H a n d l i n g   M e s s a g e s " 4 .       p a y l o a d   =   r e q u e s t . g e t _ d a t a ( ) 5 .       p r i n t   p a y l o a d 6 .       f o r   s e n d e r ,   m e s s a g e   i n   m e s s a g i n g _ e v e n t s ( p a y l o a d ) : 7 .           p r i n t   " I n c o m i n g   f r o m   % s :   % s "   %   ( s e n d e r ,   m e s s a g e )
使   m e s s a g i n g _ e v e n t s   p y t h o n     M e s s e n g e r     s e n d _ m e s s a g e   使   F a c e b o o k   G r a p h   m e s s a g e s   A P I     M e s s e n g e r     P O S T     M e s s e n g e r   5 X X     u n i c o d e     P y t h o n     M e s s e n g e r     P O S T     5 x x   使       7 .           p r i n t   " I n c o m i n g   f r o m   % s :   % s "   %   ( s e n d e r ,   m e s s a g e ) 8 .           s e n d _ m e s s a g e ( P A T ,   s e n d e r ,   m e s s a g e ) 9 .       r e t u r n   " o k " 1 .   d e f   m e s s a g i n g _ e v e n t s ( p a y l o a d ) : 2 .       " " " G e n e r a t e   t u p l e s   o f   ( s e n d e r _ i d ,   m e s s a g e _ t e x t )   f r o m   t h e 3 .       p r o v i d e d   p a y l o a d . 4 .       " " " 5 .       d a t a   =   j s o n . l o a d s ( p a y l o a d ) 6 .       m e s s a g i n g _ e v e n t s   =   d a t a [ " e n t r y " ] [ 0 ] [ " m e s s a g i n g " ] 7 .       f o r   e v e n t   i n   m e s s a g i n g _ e v e n t s : 8 .           i f   " m e s s a g e "   i n   e v e n t   a n d   " t e x t "   i n   e v e n t [ " m e s s a g e " ] : 9 .               y i e l d   e v e n t [ " s e n d e r " ] [ " i d " ] ,   e v e n t [ " m e s s a g e " ] [ " t e x t " ] . e n c o d e ( ' u n i c o d e _ e s c a p e ' ) 1 0 .           e l s e : 1 1 .               y i e l d   e v e n t [ " s e n d e r " ] [ " i d " ] ,   " I   c a n ' t   e c h o   t h i s " e n c o d e ( ' u n i c o d e _ e s c a p e ' ) d e c o d e ( ' u n i c o d e _ e s c a p e ' ) 1 .   d e f   s e n d _ m e s s a g e ( t o k e n ,   r e c i p i e n t ,   t e x t ) : 2 .       " " " S e n d   t h e   m e s s a g e   t e x t   t o   r e c i p i e n t   w i t h   i d   r e c i p i e n t . 3 .       " " "
4 .     H e r o k u   H e r o k u     R a i l s   H e r o k u   [ 8 ] r e q u i r e m e n t s . t x t P r o c f i l e   H e r o k u   H e r o k u     e c h o s e r v e r . p y   使   g u n i c o r n     W e b   使   H e r o k u   W e b     H T T P     W e b   使   W e b   D j a n g o     F l a s k   w e b   便   W e b     H e r o k u   G u n i c o r n     P y t h o n     H T T P     W S G I     P y t h o n     P y t h o n   r e q u i r e m e n t s . t x t   V i r t u a l e n v   5 .       r   =   r e q u e s t s . p o s t ( " h t t p s : / / g r a p h . f a c e b o o k . c o m / v 2 . 6 / m e / m e s s a g e s " , 6 .           p a r a m s = { " a c c e s s _ t o k e n " :   t o k e n } , 7 .           d a t a = j s o n . d u m p s ( { 8 .               " r e c i p i e n t " :   { " i d " :   r e c i p i e n t } , 9 .               " m e s s a g e " :   { " t e x t " :   t e x t . d e c o d e ( ' u n i c o d e _ e s c a p e ' ) } 1 0 .           } ) , 1 1 .           h e a d e r s = { ' C o n t e n t - t y p e ' :   ' a p p l i c a t i o n / j s o n ' } ) 1 2 .       i f   r . s t a t u s _ c o d e   ! =   r e q u e s t s . c o d e s . o k : 1 3 .           p r i n t   r . t e x t 1 .   w e b :   g u n i c o r n   e c h o s e r v e r : a p p  
  p y t h o n   使 V i r t u a l e n v   便 p i p     P y t h o n   [ 9 ] 使   V i r t u a l e n v     e c h o b o t     s o u r c e   使   p i p   f r e e z e   1 .   k o s t i s @ K o s t i s M B P   ~   $   p i p   f r e e z e 2 .   c y c l e r = = 0 . 1 0 . 0 3 .   F l a s k = = 0 . 1 0 . 1 4 .   g u n i c o r n = = 1 9 . 6 . 0 5 .   i t s d a n g e r o u s = = 0 . 2 4 6 .   J i n j a 2 = = 2 . 8 7 .   M a r k u p S a f e = = 0 . 2 3 8 .   m a t p l o t l i b = = 1 . 5 . 1 9 .   n u m p y = = 1 . 1 0 . 4 1 0 .   p y p a r s i n g = = 2 . 1 . 0 1 1 .   p y t h o n - d a t e u t i l = = 2 . 5 . 0 1 2 .   p y t z = = 2 0 1 5 . 7 1 3 .   r e q u e s t s = = 2 . 1 0 . 0 1 4 .   s c i p y = = 0 . 1 7 . 0 1 5 .   s i x = = 1 . 1 0 . 0 1 6 .   v i r t u a l e n v = = 1 5 . 0 . 1 1 7 .   W e r k z e u g = = 0 . 1 1 . 1 0 1 .   k o s t i s @ K o s t i s M B P   p r o j e c t s   $   m k d i r   e c h o s e r v e r 2 .   k o s t i s @ K o s t i s M B P   p r o j e c t s   $   c d   e c h o s e r v e r / 3 .   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $
  f l a s k g u n i c o r n     r e q u e s t s   r e q u i r e m e n t s . t x t     p y t h o n     e c h o s e r v e r . p y     P r o c f i l e /   H e r o k u   H e r o k u   t o o l b e t   H e r o k u [ 1 0 ] H e r o k u   [ 1 1 ]   H e r o k u   C r e a t e   n e w   a p p 1 .   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   v i r t u a l e n v   e c h o b o t 2 .   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   s o u r c e   e c h o b o t / b i n / a c t i v a t e 3 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   p i p   f r e e z e 4 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $ 1 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   p i p   i n s t a l l   f l a s k 2 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   p i p   i n s t a l l   g u n i c o r n 3 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   p i p   i n s t a l l   r e q u e s t s 4 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   p i p   f r e e z e 5 .   c l i c k = = 6 . 6 6 .   F l a s k = = 0 . 1 1 7 .   g u n i c o r n = = 1 9 . 6 . 0 8 .   i t s d a n g e r o u s = = 0 . 2 4 9 .   J i n j a 2 = = 2 . 8 1 0 .   M a r k u p S a f e = = 0 . 2 3 1 1 .   r e q u e s t s = = 2 . 1 0 . 0 1 2 .   W e r k z e u g = = 0 . 1 1 . 1 0 1 3 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   p i p   f r e e z e   >   r e q u i r e m e n t s . t x t 1 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   l s 2 .   P r o c f i l e           e c h o b o t           e c h o s e r v e r . p y       r e q u i r e m e n t s . t x t
C r e a t e   A p p   H e r o k u     H e r o k u   访   U R L   U R L   F a c e b o o k     F a c e b o o k   F a c e b o o k   [ 1 2 ] 1 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   h e r o k u   l o g i n 2 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   g i t   i n i t 3 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   h e r o k u   g i t : r e m o t e   - a   < m y a p p n a m e > 4 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   g i t   a d d   . 5 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   $   g i t   c o m m i t   - m   " I n i t i a l   c o m m i t " 6 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   ( m a s t e r )   $   g i t   p u s h   h e r o k u   m a s t e r 7 .   . . . 8 .   r e m o t e :                 h t t p s : / / < m y a p p n a m e > . h e r o k u a p p . c o m /   d e p l o y e d   t o   H e r o k u 9 .   . . . 1 0 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   e c h o s e r v e r   ( m a s t e r )   $   h e r o k u   c o n f i g : s e t   W E B _ C O N C U R R E N C Y = 3
  F a c e b o o k   [ 1 3 ] M y   A p p s A d d   a   N e w   A p p b a s i c s e t u p C r e a t e   A p p   I d   P r o d u c t s   +   A d d   P r o d u c t   M e s s e n g e r G e t   S t a r t e d   M e s s e n g e r   w e b h o o k s   W e b h o o k s     U R L     S e t u p   W e b h o o k s     H e r o k u     U R L   m y v o i c e i s m y p a s s w o r d v e r i f y m e   h a n d l e _ v e r i f i c a t i o n     m e s s a g e s   V e r i f y   a n d   S a v e   F a c e b o o k   访   H e r o k u     G o o g l e   访 P A T   F a c e b o o k   1 .   ( e c h o b o t )   k o s t i s @ K o s t i s M B P   h e r o k u   l o g s   - t
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则