示例#1
0
 def test_generic_template_with_single_element(self):
     btn = elements.Button(button_type='web_url',
                           title='Web button',
                           url='http://facebook.com')
     elems = elements.Element(title='Element',
                              item_url='http://facebook.com',
                              image_url='http://facebook.com/image.jpg',
                              subtitle='Subtitle',
                              buttons=[btn])
     res = templates.GenericTemplate(elements=elems)
     expected = {
         'attachment': {
             'type': 'template',
             'payload': {
                 'template_type':
                 'generic',
                 'elements': [{
                     'title':
                     'Element',
                     'item_url':
                     'http://facebook.com',
                     'image_url':
                     'http://facebook.com/image.jpg',
                     'subtitle':
                     'Subtitle',
                     'buttons': [{
                         'type': 'web_url',
                         'title': 'Web button',
                         'url': 'http://facebook.com'
                     }]
                 }]
             }
         }
     }
     assert expected == res.to_dict()
示例#2
0
    def test_element(self):
        btn = elements.Button(button_type='web_url',
                              title='Web button',
                              url='http://facebook.com')
        default = elements.Button(button_type='web_url',
                                  url='https://facebook.com')
        res = elements.Element(title='Element',
                               item_url='http://facebook.com',
                               image_url='http://facebook.com/image.jpg',
                               subtitle='Subtitle',
                               default_action=default,
                               buttons=[btn])

        expected = {
            'title':
            'Element',
            'item_url':
            'http://facebook.com',
            'image_url':
            'http://facebook.com/image.jpg',
            'subtitle':
            'Subtitle',
            'default_action': {
                'type': 'web_url',
                'url': 'https://facebook.com'
            },
            'buttons': [{
                'type': 'web_url',
                'title': 'Web button',
                'url': 'http://facebook.com'
            }]
        }
        assert expected == res.to_dict()
示例#3
0
def send_user_subscribe_msg(user_id):
    if user_id is None:
        app.logger.warn('Trying to send a subscribe message without a user_id')
        return None

    # quick_replies = QuickReplies([
    #     QuickReply(content_type="text",
    #                title="Yes",
    #                payload=f"register {user_id}", ),
    #     QuickReply(content_type="text",
    #                title="No",
    #                payload=f"ignore {user_id}", ),
    # ])
    # msg = elements.DynamicText(text='Do you want to get daily quotes?',
    #                            quick_replies=quick_replies)
    btn1 = elements.Button(button_type='postback',
                           title='Yes',
                           payload=f"register {user_id}")
    btn2 = elements.Button(button_type='postback',
                           title='No',
                           payload=f"ignore {user_id}")
    elems = elements.Element(title='Do you want to get daily quotes',
                             buttons=[btn1, btn2])
    msg = templates.GenericTemplate(elements=[elems])
    return messenger.send_msg(msg, user_id)
示例#4
0
 def test_generic_template_with_quick_replies(self):
     btn = elements.Button(
         button_type='web_url',
         title='Web button',
         url='http://facebook.com'
     )
     elems = elements.Element(
         title='Element',
         item_url='http://facebook.com',
         image_url='http://facebook.com/image.jpg',
         subtitle='Subtitle',
         buttons=[
             btn
         ]
     )
     qr = quick_replies.QuickReply(title='QR', payload='QR payload')
     qrs = quick_replies.QuickReplies(quick_replies=[qr] * 2)
     res = templates.GenericTemplate(
         elements=[elems],
         quick_replies=qrs
     )
     expected = {
         'attachment': {
             'type': 'template',
             'payload': {
                 'template_type': 'generic',
                 'sharable': False,
                 'elements': [
                     {
                         'title': 'Element',
                         'item_url': 'http://facebook.com',
                         'image_url': 'http://facebook.com/image.jpg',
                         'subtitle': 'Subtitle',
                         'buttons': [
                             {
                                 'type': 'web_url',
                                 'title': 'Web button',
                                 'url': 'http://facebook.com'
                             }
                         ]
                     }
                 ],
             },
         },
         'quick_replies': [
             {
                 'content_type': 'text',
                 'title': 'QR',
                 'payload': 'QR payload'
             },
             {
                 'content_type': 'text',
                 'title': 'QR',
                 'payload': 'QR payload'
             },
         ],
     }
     assert expected == res.to_dict()
示例#5
0
 def test_list_template(self):
     btn = elements.Button(button_type='web_url',
                           title='Web button',
                           url='http://facebook.com')
     elems = elements.Element(title='Element',
                              image_url='http://facebook.com/image.jpg',
                              subtitle='Subtitle',
                              buttons=[btn])
     res = templates.ListTemplate(
         elements=[elems] * 2,
         buttons=[btn],
         top_element_style='large',
     )
     expected = {
         'attachment': {
             'type': 'template',
             'payload': {
                 'template_type':
                 'list',
                 'top_element_style':
                 'large',
                 'elements': [{
                     'title':
                     'Element',
                     'image_url':
                     'http://facebook.com/image.jpg',
                     'subtitle':
                     'Subtitle',
                     'buttons': [{
                         'type': 'web_url',
                         'title': 'Web button',
                         'url': 'http://facebook.com'
                     }]
                 }, {
                     'title':
                     'Element',
                     'image_url':
                     'http://facebook.com/image.jpg',
                     'subtitle':
                     'Subtitle',
                     'buttons': [{
                         'type': 'web_url',
                         'title': 'Web button',
                         'url': 'http://facebook.com'
                     }]
                 }],
                 'buttons': [{
                     'type': 'web_url',
                     'title': 'Web button',
                     'url': 'http://facebook.com'
                 }],
             }
         }
     }
     assert expected == res.to_dict()
示例#6
0
    def message(self, message):
        print('message')
        print(message)                
        get_sender = Text(text= str(message['sender']['id']))
        get_text = Text(text= str(message['message']['text']))
        try:
        	chck_payload = Text(text= str(message['message']['quick_reply']['payload']))
        except KeyError:
        	chck_payload = 'text'
        text = get_text.to_dict()
        text = text['text']
        check = self.read(text, chck_payload)
        print(check)
        # problem hereeeee
        if check != 2:
        	print('check')
        	response = self.movie_route()
        	if self.questions_check[response[0]] == 'quick':
        		print(response)
        		quick_reply = [quick_replies.QuickReply(title=i, payload='quick') for i in response[1]]
        		quick_reply += [quick_replies.QuickReply(title='Go back', payload='quick')]
        		quick_replies_set = quick_replies.QuickReplies(quick_replies=quick_reply)
        		text = { 'text': response[0]}
        		text['quick_replies'] = quick_replies_set.to_dict()
        		self.send(text, 'RESPONSE')
        	else:
        		text = {'text': response[0]}
        		self.send(text, 'RESPONSE')
        		print('carousel')
        		print(self.movies)
        		elems  = []
        		i = 0
        		while i < len(self.movies[0]):
        			btn = elements.Button(title='Read More', payload=movies[2][i], button_type='postback')
        			elem = elements.Element(
        				title=self.movies[2][i],
        				image_url=self.movies[0][i],
        				subtitle=self.movies[1][i],
        				buttons=[
        					btn
        				]
        				)
        			elems.append(elem)
        			i+=1
        		res = templates.GenericTemplate(elements=elems)        		
        		messenger.send(res.to_dict(), 'RESPONSE')
	        	quick_reply = [quick_replies.QuickReply(title='Go back', payload='quick')]
	        	quick_replies_set = quick_replies.QuickReplies(quick_replies=quick_reply)
	        	default = {'quick_replies': quick_replies_set.to_dict()}
	        	self.send(default, 'RESPONSE')
        		print(self.movie_responses['Movies'])
示例#7
0
 def test_template_with_too_many_elements(self):
     btn = elements.Button(button_type='web_url',
                           title='Web button',
                           url='http://facebook.com')
     elem = elements.Element(title='Element',
                             item_url='http://facebook.com',
                             image_url='http://facebook.com/image.jpg',
                             subtitle='Subtitle',
                             buttons=[btn])
     elem_list = [elem] * 11
     with pytest.raises(ValueError) as err:
         res = templates.GenericTemplate(elements=elem_list)
         res.to_dict()
     assert str(
         err.value
     ) == 'You cannot have more than 10 elements in the template.'
示例#8
0
 def test_element_subtitle_validation(self, caplog):
     with caplog.at_level(logging.WARNING, logger='fbmessenger.elements'):
         btn = elements.Button(button_type='web_url',
                               title='Web button',
                               url='http://facebook.com')
         res = elements.Element(
             title='Title',
             item_url='http://facebook.com',
             image_url='http://facebook.com/image.jpg',
             subtitle='The subtitle is too long and should throw an error.'
             'The maximum allowed number of characters is 80',
             buttons=[btn])
         res.to_dict()
         assert caplog.record_tuples == [
             ('fbmessenger.elements', logging.WARNING,
              CHARACTER_LIMIT_MESSAGE.format(field='Subtitle', maxsize=80))
         ]
示例#9
0
    def test_share_button(self):
        btn = elements.Button(button_type='web_url',
                              title='Web button',
                              url='http://facebook.com')
        element = elements.Element(title='Element',
                                   item_url='http://facebook.com',
                                   image_url='http://facebook.com/image.jpg',
                                   subtitle='Subtitle',
                                   buttons=[btn])
        template = GenericTemplate(elements=[element], )

        res = elements.Button(button_type='element_share',
                              share_contents=template.to_dict())
        expected = {
            'type': 'element_share',
            'share_contents': {
                'attachment': {
                    'type': 'template',
                    'payload': {
                        'template_type':
                        'generic',
                        'sharable':
                        False,
                        'elements': [
                            {
                                'title':
                                'Element',
                                'item_url':
                                'http://facebook.com',
                                'image_url':
                                'http://facebook.com/image.jpg',
                                'subtitle':
                                'Subtitle',
                                'buttons': [{
                                    'type': 'web_url',
                                    'title': 'Web button',
                                    'url': 'http://facebook.com'
                                }]
                            },
                        ]
                    }
                }
            }
        }
        assert expected == res.to_dict()
示例#10
0
 def test_default_action_validation(self):
     defaults = [(elements.Button(button_type='web_url',
                                  url='https://facebook.com',
                                  title='Facebook'),
                  'The default_action button may not have a title'),
                 (elements.Button(button_type='postback', payload='foo'),
                  'The default_action button must be of type web_url')]
     btn = elements.Button(button_type='web_url',
                           title='Web button',
                           url='http://facebook.com')
     for default, msg in defaults:
         with pytest.raises(ValueError) as err:
             elements.Element(title='Element',
                              item_url='http://facebook.com',
                              image_url='http://facebook.com/image.jpg',
                              subtitle='Subtitle',
                              default_action=default,
                              buttons=[btn])
         assert str(err.value) == msg
示例#11
0
 def test_receipt_template(self):
     element = elements.Element(
         title='Classic White T-Shirt',
         subtitle='100% Soft and Luxurious Cotton',
         quantity=2,
         price=50,
         currency='USD',
         image_url='http://petersapparel.parseapp.com/img/whiteshirt.png',
     )
     adjustment1 = elements.Adjustment(name='New Customer Discount',
                                       amount=20)
     adjustment2 = elements.Adjustment(name='$10 Off Coupon', amount=10)
     address = elements.Address(street_1='1 Hacker Way',
                                city='Menlo Park',
                                postal_code='94025',
                                state='CA',
                                country='US')
     summary = elements.Summary(subtotal=75.00,
                                shipping_cost=4.95,
                                total_tax=6.19,
                                total_cost=56.14)
     res = templates.ReceiptTemplate(
         recipient_name='Stephane Crozatier',
         order_number='12345678902',
         currency='USD',
         payment_method='Visa 2345',
         order_url='http://petersapparel.parseapp.com/order?order_id=123456',
         timestamp='1428444852',
         address=address,
         summary=summary,
         adjustments=[adjustment1, adjustment2],
         elements=[element])
     expected = {
         'attachment': {
             'type': 'template',
             'payload': {
                 'template_type':
                 'receipt',
                 'recipient_name':
                 'Stephane Crozatier',
                 'order_number':
                 '12345678902',
                 'currency':
                 'USD',
                 'payment_method':
                 'Visa 2345',
                 'order_url':
                 'http://petersapparel.parseapp.com/order?order_id=123456',
                 'timestamp':
                 '1428444852',
                 'elements': [{
                     'title':
                     'Classic White T-Shirt',
                     'subtitle':
                     '100% Soft and Luxurious Cotton',
                     'quantity':
                     2,
                     'price':
                     50,
                     'currency':
                     'USD',
                     'image_url':
                     'http://petersapparel.parseapp.com/img/whiteshirt.png'
                 }],
                 'address': {
                     'street_1': '1 Hacker Way',
                     'street_2': '',
                     'city': 'Menlo Park',
                     'postal_code': '94025',
                     'state': 'CA',
                     'country': 'US'
                 },
                 'summary': {
                     'subtotal': 75.00,
                     'shipping_cost': 4.95,
                     'total_tax': 6.19,
                     'total_cost': 56.14
                 },
                 'adjustments': [{
                     'name': 'New Customer Discount',
                     'amount': 20
                 }, {
                     'name': '$10 Off Coupon',
                     'amount': 10
                 }]
             }
         }
     }
     assert expected == res.to_dict()