示例#1
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)
示例#2
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()
示例#3
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()
示例#4
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'])
示例#5
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.'
示例#6
0
 def test_template_with_invalid_quick_replies(self):
     with pytest.raises(ValueError) as err:
         templates.GenericTemplate(elements=None, quick_replies='wrong')
     assert str(
         err.value) == 'quick_replies must be an instance of QuickReplies.'
示例#7
0
 def test_generic_template_with_no_elements(self):
     with pytest.raises(ValueError) as err:
         res = templates.GenericTemplate(elements=[])
         res.to_dict()
     assert str(err.value) == 'At least 1 elements are required.'
示例#8
0
    def postback(self, message):
        print("postback", message)

        user = index_user.get(message["sender"]["id"]) or {}
        # User not found, better index him at first
        if user == {}:
            index_user.index(message)

        if message["postback"]["payload"] == State.SCHEDULE_ORDER:
            if not user.get("logged_in", False):
                self.send(
                    {"text": "অর্ডার করার জন্য দয়া করে লগিন করুন। ধন্যবাদ"})
            else:
                self.send(
                    templates.GenericTemplate(
                        elements=food_item_list.food_elements, ).to_dict(),
                    "RESPONSE",
                )

        if message["postback"]["payload"] == State.REGISTER:
            pass

        if message["postback"]["payload"] == State.HI:
            if message["sender"]["id"] != PAGE_ID:
                index_user.index(message)

        if "ORDER#" in message["postback"]["payload"]:
            update_state.update(
                user.get("fb_id", None),
                current_state=State.SCHEDULE_ORDER,
                state_completion=False,
            )

            item_id = message["postback"]["payload"].split("ORDER#")[-1]
            # print(item_id)
            item = [
                f for f in food_item_list.food_list["foods"]
                if f["food_id"] == item_id
            ][0]

            scheduled_day = pendulum.now().add(days=1).format("DD-MMM-YYYY")

            mongodb.cx.caterbot.orders.update_one(
                {
                    "userId": user.get("fb_id", None),
                    "scheduled_day": scheduled_day
                },
                update={
                    "$set": {
                        "userId": user.get("fb_id", None),
                        "item": item,
                        "scheduled_day": scheduled_day,
                        "state": State.PENDING,
                    }
                },
                upsert=True,
            )

            self.send(food_confirm_decision.get_confirmation(item), "RESPONSE")

        if message["postback"]["payload"] == State.LOGIN:
            if message["sender"]["id"] != PAGE_ID:

                if user.get("logged_in", False):
                    self.send({
                        "text":
                        "আপনি লগড-ইন অবস্থায়ই আছেন, চাইলে আগামীকালের জন্য অর্ডার প্লেস করুন। ধন্যবাদ।"
                    })

                else:
                    update_state.update(
                        message["sender"]["id"],
                        current_state=State.LOGIN,
                        state_completion=False,
                    )
                    self.send(
                        {
                            "text":
                            "দয়া করে ইউজারনেম ও পাসওয়ার্ড দিন, উদাহরণ: username password"
                        },
                        "RESPONSE",
                    )