def start_over(user_id, context):
    global user_conversations
    user_dictionary = next(item for item in user_conversations
                           if item["recipient"]['id'] == user_id)
    user_dictionary['context'] = {}
    user_dictionary['payment'] = {
        "name": "",
        "cardNumber": "",
        "phoneNumber": "",
        "email": "",
        "address": "",
        "railcard": ""
    }
    recipient = messages.Recipient(user_id)
    buy_tickets_button = elements.PostbackButton(title="Buy Tickets",
                                                 payload="buyTickets")
    help_button = elements.PostbackButton(title="Display Help",
                                          payload="displayHelp")
    template = templates.ButtonTemplate(
        text="Is there anything else I can help you with?",
        buttons=[buy_tickets_button, help_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
示例#2
0
def get_results_attachment(listings_data_items, more_url=None):
    tpl_elements = list()
    for listing_d in listings_data_items:
        buttons = list()
        if more_url:
            buttons.append(
                elements.WebUrlButton(
                    title='View more',
                    url=more_url,
                ))

        buttons.append(
            elements.WebUrlButton(
                title='View this listing',
                url=listing_d['listing_url'],
            ))
        element_kwargs = dict(title=Truncator(listing_d['title']).chars(44),
                              subtitle=Truncator(
                                  listing_d['fmt_address']).chars(79),
                              buttons=buttons)
        image_url = listing_d.get('image_url', None)
        if image_url:
            element_kwargs['image_url'] = image_url
        element = elements.Element(**element_kwargs)
        tpl_elements.append(element)

    template = templates.GenericTemplate(tpl_elements)
    return attachments.TemplateAttachment(template=template)
def ask_user_for_origin(user_id, savedHome, savedUniversity):
    recipient = messages.Recipient(user_id)
    if savedHome:
        home_location_button = elements.PostbackButton(title=savedHome,
                                                       payload="useSavedHome")
    if savedUniversity:
        university_location_button = elements.PostbackButton(
            title=savedUniversity, payload="useSavedUniversity")
    other_location_button = elements.PostbackButton(title="Other",
                                                    payload="useOtherLocation")
    if savedHome and savedUniversity:
        template = templates.ButtonTemplate(text="What about for your origin?",
                                            buttons=[
                                                home_location_button,
                                                university_location_button,
                                                other_location_button
                                            ])
    elif savedHome:
        template = templates.ButtonTemplate(
            text="What about for your origin?",
            buttons=[home_location_button, other_location_button])
    elif savedUniversity:
        template = templates.ButtonTemplate(
            text="What about for your origin?",
            buttons=[university_location_button, other_location_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
    return
def askUserForDestination(user_id, savedHome, savedUniversity):
    recipient = messages.Recipient(user_id)
    if savedHome:
        home_location_button = elements.PostbackButton(title=savedHome,
                                                       payload="useSavedHome")
    if savedUniversity:
        university_location_button = elements.PostbackButton(
            title=savedUniversity, payload="useSavedUniversity")
    other_location_button = elements.PostbackButton(title="Other",
                                                    payload="useOtherLocation")
    if savedHome and savedUniversity:
        template = templates.ButtonTemplate(
            text=
            "Would you like to use a previous location as your destination?",
            buttons=[
                home_location_button, university_location_button,
                other_location_button
            ])
    elif savedHome:
        template = templates.ButtonTemplate(
            text=
            "Would you like to use a previous location as your destination?",
            buttons=[home_location_button, other_location_button])
    elif savedUniversity:
        template = templates.ButtonTemplate(
            text=
            "Would you like to use a previous location as your destination?",
            buttons=[university_location_button, other_location_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
    return
def ask_ticket_speed_references(user_id, context):
    global user_conversations
    user_dictionary = next(item for item in user_conversations
                           if item["recipient"]['id'] == user_id)
    recipient = messages.Recipient(user_id)
    if 'returnTime' in context:
        if user_dictionary['ticketPreference'] == "":
            cheaper_button = elements.PostbackButton(
                title="Cheaper", payload="ticketPreferenceCheaper")
            sweet_spot_button = elements.PostbackButton(
                title="Sweet Spot", payload="ticketPreferenceSweetSpot")
            faster_button = elements.PostbackButton(
                title="Faster", payload="ticketPreferenceFaster")
            template = templates.ButtonTemplate(
                text="What are your ticket preferences?",
                buttons=[cheaper_button, sweet_spot_button, faster_button])
        else:
            use_old_preference_button = elements.PostbackButton(
                title="Use " + user_dictionary['ticketPreference'],
                payload="useOldTicketPreference")
            dont_use_old_preference_button = elements.PostbackButton(
                title="Change ticket prefs", payload="changePreferences")
            template = templates.ButtonTemplate(
                text="You have a saved preference. Would you like to use that?",
                buttons=[
                    use_old_preference_button, dont_use_old_preference_button
                ])
        attachment = attachments.TemplateAttachment(template=template)
        message = messages.Message(attachment=attachment)
        request = messages.MessageRequest(recipient, message)
        messenger.send(request)
    return context
示例#6
0
def make_button_choices(text, choices):
    assert len(choices) <= 3

    postback_buttons = list()
    for payload, button_text in choices:
        btn = elements.PostbackButton(title=button_text, payload=payload)
        postback_buttons.append(btn)

    el = templates.ButtonTemplate(text=text, buttons=postback_buttons)
    return attachments.TemplateAttachment(template=el)
def send_yes_no_template(user_id):
    recipient = messages.Recipient(user_id)
    yes_button = elements.PostbackButton(title="Yes",
                                         payload="yesConfirmation")
    no_button = elements.PostbackButton(title="No", payload="noConfirmation")
    template = templates.ButtonTemplate(text="Is this correct?",
                                        buttons=[yes_button, no_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
def ask_to_save_payment(user_id, context):
    recipient = messages.Recipient(user_id)
    yes_button = elements.PostbackButton(title="Yes", payload="yesPayment")
    no_button = elements.PostbackButton(title="No", payload="noPayment")
    template = templates.ButtonTemplate(
        text="Awesome. Would you like to save these details for next time?",
        buttons=[yes_button, no_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
    pass
示例#9
0
def handle_welcome(fbid, received_message):
    recipient = messages.Recipient(recipient_id=fbid)
    red_button = elements.PostbackButton(title='Rouge', payload='Rouge')
    white_button = elements.PostbackButton(title='Blanc', payload='Blanc')
    rose_button = elements.PostbackButton(title='Rose', payload='Rose')
    template = templates.ButtonTemplate(
        text='Bonjour, quelle couleur de vin desirez-vous ?',
        buttons=[red_button, white_button, rose_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
def send_single_or_return_template(user_id):
    recipient = messages.Recipient(user_id)
    single_button = elements.PostbackButton(title="Single",
                                            payload="singleTicket")
    return_button = elements.PostbackButton(title="Return",
                                            payload="returnTicket")
    template = templates.ButtonTemplate(
        text="Would you like a Single or a Return ticket?",
        buttons=[single_button, return_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
def ask_return_date(user_id, context):
    recipient = messages.Recipient(user_id)
    one_way_button = elements.PostbackButton(title="One way only",
                                             payload="oneWayTicket")
    template = templates.ButtonTemplate(
        text=
        "What date and time would you like to return? Please type if not one way.",
        buttons=[one_way_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
    return context
def ask_for_railcard(user_id, context):
    recipient = messages.Recipient(user_id)
    young_persons_button = elements.PostbackButton(title="16-25 Railcard",
                                                   payload="yesRailcard")
    other_button = elements.PostbackButton(title="Other",
                                           payload="otherRailcard")
    no_button = elements.PostbackButton(title="No", payload="noRailcard")
    template = templates.ButtonTemplate(
        text="One more thing: do you have a railcard?",
        buttons=[young_persons_button, other_button, no_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
def ask_to_memorize_location(user_id, context):
    recipient = messages.Recipient(user_id)
    location_save_yes_button = elements.PostbackButton(
        title="Yes", payload="saveLocationConfirmedYes")
    location_save_no_button = elements.PostbackButton(
        title="No", payload="saveLocationConfirmedNo")
    template = templates.ButtonTemplate(
        text="Would you like to save this location?",
        buttons=[location_save_yes_button, location_save_no_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
    return context
def ask_to_save_ticket_preferences(user_id, context):
    recipient = messages.Recipient(user_id)
    yes_button = elements.PostbackButton(title="Yes",
                                         payload="saveTicketPreferences")
    no_button = elements.PostbackButton(title="No",
                                        payload="doNotSaveTicketPreferences")
    template = templates.ButtonTemplate(
        text="Would you like to save your ticket preferences?",
        buttons=[yes_button, no_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
    return context
示例#15
0
    def test_template_attachment(self):
        """
        TemplateAttachment
        """
        template_text = 'What do you want to do next?',
        postback_button = elements.PostbackButton(
            title='Start chatting', payload='USER_DEFINED_PAYLOAD')
        template = templates.ButtonTemplate(text=template_text,
                                            buttons=[postback_button])

        template_attachment = attachments.TemplateAttachment(template=template)
        _dic = template_attachment.to_dict()
        payload = _dic['payload']
        self.assertEqual(_dic['type'], template_attachment.attachment_type)
        self.assertEqual(payload['text'], template_text)
        self.assertEqual(payload['template_type'], 'button')
示例#16
0
def handle_button(fbid, data):
    """
    Handles the sending to messenger of a button template of postback buttons
    """
    recipient = messages.Recipient(recipient_id=fbid)
    text = data["text"]
    button_list = []
    for option in data["options"]:
        button_text = option["text"]
        button_payload = option["payload"]
        button_list.append(
            elements.PostbackButton(title=button_text, payload=button_payload))
    template = templates.ButtonTemplate(text=text, buttons=button_list)
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
示例#17
0
    def test_button_template(self):
        web_button = elements.WebUrlButton(
            title='Show website', url='https://petersapparel.parseapp.com')
        postback_button = elements.PostbackButton(
            title='Start chatting', payload='USER_DEFINED_PAYLOAD')
        template = templates.ButtonTemplate(
            text='What do you want to do next?',
            buttons=[web_button, postback_button])
        attachment = attachments.TemplateAttachment(template=template)

        message = messages.Message(attachment=attachment)
        request = messages.MessageRequest(self.recipient, message)

        self.assertEquals(
            request.serialise(),
            '{"message": {"attachment": {"type": "template", "payload": {"template_type": "button", "text": "What do you want to do next?", "buttons": [{"url": "https://petersapparel.parseapp.com", "type": "web_url", "title": "Show website"}, {"type": "postback", "payload": "USER_DEFINED_PAYLOAD", "title": "Start chatting"}]}}}, "recipient": {"id": "123"}}'
        )
def ask_to_save_used_railcard(user_id, context):
    global user_conversations
    user_dictionary = next(item for item in user_conversations
                           if item["recipient"]['id'] == user_id)
    recipient = messages.Recipient(user_id)
    yes_railcard_button = elements.PostbackButton(title="Yes",
                                                  payload="yesSavedRailcard")
    no_railcard_button = elements.PostbackButton(title="No",
                                                 payload="noRailcard")
    template = templates.ButtonTemplate(
        text="You have a saved railcard: " +
        user_dictionary['savedPayment']['railcard'] +
        ". Would you like to use it?",
        buttons=[yes_railcard_button, no_railcard_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
def ask_to_use_saved_payment(user_id, context):
    global user_conversations
    user_dictionary = next(item for item in user_conversations
                           if item["recipient"]['id'] == user_id)
    recipient = messages.Recipient(user_id)
    use_saved_payment_button = elements.PostbackButton(
        title=user_dictionary['savedPayment']['email'],
        payload="useSavedPayment")
    dont_use_saved_payment_button = elements.PostbackButton(
        title="New email address", payload="enterNewPayment")
    template = templates.ButtonTemplate(
        text="You have a saved email address. Would you like to use that?",
        buttons=[use_saved_payment_button, dont_use_saved_payment_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
    return context
示例#20
0
    def test_generic_template(self):
        element = elements.Element(
            title='Classic White T-Shirt',
            image_url='http://petersapparel.parseapp.com/img/item100-thumb.png',
            subtitle='Soft white cotton t-shirt is back in style',
            buttons=[
                elements.WebUrlButton(
                    title='View Item',
                    url=
                    'https://petersapparel.parseapp.com/view_item?item_id=100',
                )
            ])

        template = templates.GenericTemplate([element])
        attachment = attachments.TemplateAttachment(template)
        message = messages.Message(attachment=attachment)
        request = messages.MessageRequest(self.recipient, message)
        # Assert we can serialise
        self.assertIsInstance(request.serialise(), str)
def ask_location_nature(session_id, context):
    recipient = messages.Recipient(session_id)
    home_button = elements.PostbackButton(title="Home",
                                          payload="saveLocationAsHome")
    university_button = elements.PostbackButton(
        title="University", payload="saveLocationAsUniversity")
    other_button = elements.PostbackButton(title="Other",
                                           payload="saveLocationAsOther")
    if 'location:origin' in context:
        template = templates.ButtonTemplate(
            text="What's the nature of " + str(context['location:origin']) +
            "?",
            buttons=[home_button, university_button, other_button])
    else:
        template = templates.ButtonTemplate(
            text="What's the nature of " +
            str(context['location:destination']) + "?",
            buttons=[home_button, university_button, other_button])
    attachment = attachments.TemplateAttachment(template=template)
    message = messages.Message(attachment=attachment)
    request = messages.MessageRequest(recipient, message)
    messenger.send(request)
    print("Ask Location Nature final context: " + str(context))
    return context
示例#22
0
def parseUserMessage(message, recipient):
    message = message.lower()

    # Tabela vseh moznih ukazov uporabnika
    allCommands = ['podatki', 'prijava', 'odjava', 'zamenjava']

    # Prva beseda je ukaz, vse naslednje pa dodatne informacije
    commandData = message.split(" ", 1)
    command = commandData[0]
    dateString = commandData[1] if len(commandData) > 1 else ''
    receivedMealType = ''
    if ':' in dateString:
        receivedMealType = dateString.split(':')[1].upper()
        dateString = dateString.split(':')[0]

    if command in allCommands:
        # We get user from database and log into malica.scng.si website
        userData = findUserInDatabase(recipient.recipient_id)
        user = malica.Malica(userData[1], userData[2])
        date = datumi.vDatum(dateString)
        typingIndicatorOn(recipient)

        if command == 'podatki':
            try:
                mealType = user.pridobiPodatkeNaDan(date)
                if mealType == "OSN":
                    sendMessage(
                        recipient, "V {}, {} si na toplem obroku. {}".format(
                            days[date.weekday()], date.strftime("%d.%m.%Y"),
                            random.choice(topelObrokEmojiji)))
                elif mealType == "SUH":
                    sendMessage(
                        recipient, "V {}, {} si na suhem obroku. {}".format(
                            days[date.weekday()], date.strftime("%d.%m.%Y"),
                            random.choice(suhObrokEmojiji)))
                else:
                    sendMessage(
                        recipient, "V {}, {} si od malice odjavljen. ❌".format(
                            days[date.weekday()], date.strftime("%d.%m.%Y")))
            except Exception:
                sendMessage(
                    recipient,
                    "Oprostite, toda na ta datum ne morem najti podatkov...")
        elif command == 'prijava':
            user.prijava(date)
            sendMessage(
                recipient, "V {}, {} si na toplem obroku. {}".format(
                    days[date.weekday()], date.strftime("%d.%m.%Y"),
                    random.choice(topelObrokEmojiji)))
        elif command == 'odjava':
            user.odjava(date)
            sendMessage(
                recipient, "V {}, {} si od malice odjavljen. ❌".format(
                    days[date.weekday()], date.strftime("%d.%m.%Y")))
        elif command == 'zamenjava':
            if len(receivedMealType) > 0:
                user.zamenjava(date, receivedMealType)
                sendMessage(
                    recipient, "V {}, {} si na {} obroku.".format(
                        days[date.weekday()], date.strftime("%d.%m.%Y"),
                        receivedMealType))
            else:
                gumbSuhiObrok = elements.PostbackButton(
                    title="Suhi obrok",
                    payload="zamenjava {}:suh".format(
                        date.strftime("%d.%m.%Y")))
                gumbOsnovniObrok = elements.PostbackButton(
                    title="Topli obrok",
                    payload="zamenjava {}:osn".format(
                        date.strftime("%d.%m.%Y")))
                gumbiZamenjava = templates.ButtonTemplate(
                    text='Kakšen tip obroka želiš?',
                    buttons=[gumbSuhiObrok, gumbOsnovniObrok])
                priponkaZamenjava = attachments.TemplateAttachment(
                    template=gumbiZamenjava)
                messageZamenjava = messages.Message(
                    attachment=priponkaZamenjava)
                messageRequest = messages.MessageRequest(
                    recipient, messageZamenjava)
                messenger.send(messageRequest)

    else:
        sendMessage(recipient, "Oprosti, tega ukaza ne razumem. 😐")
        messageHelp = messages.Message(attachment=priponkaPomoc)
        messageRequest = messages.MessageRequest(recipient, messageHelp)
        messenger.send(messageRequest)
示例#23
0
    data = json.load(dataFile)

accessToken = data["access_token"]
serverUrl = data["server_url"]
sole = data["sole"]

days = [
    "ponedeljek", "torek", "sredo", "četrtek", "petek", "soboto", "nedeljo"
]

# Ustvarimo ustrezne gumbe za povezovanje racuna
gumbPrijava = customelements.AccountLinkingButton(
    url="{}{}".format(serverUrl, "/prijava"))
gumbiZaSePrijavit = templates.ButtonTemplate(
    text='Prosim prijavi se s pomočjo spodnjega gumba.', buttons=[gumbPrijava])
priponkaPrijava = attachments.TemplateAttachment(template=gumbiZaSePrijavit)

# Ustvarimo gumbe za pomoc uporabniku
gumbPodatki = elements.PostbackButton(title="Podatki", payload="podatki danes")
gumbOdjava = elements.PostbackButton(title="Odjava", payload="odjava danes")
gumbPrijava = elements.PostbackButton(title="Prijava", payload="prijava danes")
#gumbZamenjava = elements.PostbackButton(title="Zamenjava danes", payload="zamenjava danes")
gumbiPomoc = templates.ButtonTemplate(
    text='Kako ti lahko pomagam?',
    buttons=[gumbPodatki, gumbOdjava, gumbPrijava])  #, gumbZamenjava])
priponkaPomoc = attachments.TemplateAttachment(template=gumbiPomoc)

# Emojiji za lepsi izgled odgovora
topelObrokEmojiji = ["🍝", "🍕", "🍗", "🍖", "🍱", "🍜", "🍛", "🍲"]
suhObrokEmojiji = ["🍞", "🍰", "🍩", "🍪", "🍔", "🍟"]
示例#24
0
def webhook(request):
    if request.GET:
        if request.GET['hub.verify_token'] == '':
            return HttpResponse(request.GET['hub.challenge'])
        else:
            return HttpResponse('Error, invalid token')
    try:
        output = json.loads(request.body.decode('utf-8'))
        print(output)
        try:
            for event in output['entry']:
                messaging = event['messaging']
                for x in messaging:
                    recipient_id = x['sender']['id']
                    recipient = messages.Recipient(recipient_id=recipient_id)
                    if x.get('message'):
                        # collect text
                        if x['message'].get('text'):
                            if x['message'].get('text').lower(
                            ) == 'hello' or x['message'].get(
                                    'text').lower() == 'hi':
                                message_text = x['message']['text']
                                # ask if they want to buy something
                                # message = messages.Message(text='Hello, do you wish to buy or sell a product?')
                                # request = messages.MessageRequest(recipient, message)
                                # messenger.send(request)
                                postback_button = elements.PostbackButton(
                                    title='Buy', payload='BUY')
                                postback_button1 = elements.PostbackButton(
                                    title='Sell', payload='SELL')
                                template = templates.ButtonTemplate(
                                    text=
                                    'Hello, do you wish to buy or sell a product?',
                                    buttons=[
                                        postback_button, postback_button1
                                    ])
                                attachment = attachments.TemplateAttachment(
                                    template=template)
                                message = messages.Message(
                                    attachment=attachment)
                                request = messages.MessageRequest(
                                    recipient, message)
                                messenger.send(request)
                            # elif x['message'].get('text').lower() == 'Page 1':
                            else:
                                my_elements = []
                                postback_button2 = elements.PostbackButton(
                                    title="Buy", payload='BUY_1')
                                # my_elements.append(Element(title="prod title", subtitle="prod substitle",
                                #                           image_url="https://cdn.shopify.com/s/files/1/0739/4315/products/laguna_profile_mayfair_fullres_4815ea8f-83a8-4e29-841f-c099841987de.png?v=1480399889",
                                #                           buttons=[postback_button2]))
                                # my_elements.append(Element(title="prod title", subtitle="prod substitle",
                                #                           image_url="https://cdn.shopify.com/s/files/1/0739/4315/products/laguna_profile_mayfair_fullres_4815ea8f-83a8-4e29-841f-c099841987de.png?v=1480399889",
                                #                           buttons=[postback_button2]))
                                # my_elements.append(Element(title="prod title", subtitle="prod substitle",
                                #                           image_url="https://cdn.shopify.com/s/files/1/0739/4315/products/laguna_profile_mayfair_fullres_4815ea8f-83a8-4e29-841f-c099841987de.png?v=1480399889",
                                #                           buttons=[postback_button2]))
                                # my_elements.append(Element(title="prod title", subtitle="prod substitle",
                                #                           image_url="https://cdn.shopify.com/s/files/1/0739/4315/products/laguna_profile_mayfair_fullres_4815ea8f-83a8-4e29-841f-c099841987de.png?v=1480399889",
                                #                           buttons=[postback_button2]))
                                my_elements.append(
                                    Element(
                                        title="HP Pavilion 420",
                                        subtitle="KES 24000",
                                        image_url=
                                        "http://www.browsingphones.com/wp-content/uploads/2015/11/HP-Laptop-Price-In-Kenya-Specs-Jumia-300x225.jpg",
                                        buttons=[postback_button2]))
                                my_elements.append(
                                    Element(
                                        title="Lenovo workbook 14 inch",
                                        subtitle="KES 30000",
                                        image_url=
                                        "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcThIxirSJSLuv9qpZCeyhp30itUZ-IrndcTyloWPSHEij2e3zjo2Q",
                                        buttons=[postback_button2]))
                                my_elements.append(
                                    Element(
                                        title="HP Workbook 8200",
                                        subtitle="KED 27000",
                                        image_url=
                                        "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQaz0E0LRQEwsNq1H24VKTn4Idxy0nnFDvHcyIuOzH9cQFJaG5E",
                                        buttons=[postback_button2]))
                                my_elements.append(
                                    Element(
                                        title="HP Pavilion 328",
                                        subtitle="KES 45000",
                                        image_url=
                                        "https://i5.walmartimages.com/dfw/4ff9c6c9-2ac9/k2-_ed8b8f8d-e696-4a96-8ce9-d78246f10ed1.v1.jpg",
                                        buttons=[postback_button2]))
                                template = templates.GenericTemplate(
                                    elements=my_elements)
                                attachment = attachments.TemplateAttachment(
                                    template=template)
                                message = messages.Message(
                                    attachment=attachment)
                                request = messages.MessageRequest(
                                    recipient, message)
                                messenger.send(request)

                        if x['message'].get('attachments'):
                            for att in x['message'].get('attachments'):
                                pass
                    elif x.get('postback').get('payload') == 'BUY':
                        quick_reply = quick_replies.QuickReplyItem(
                            content_type='text',
                            title='LaptopMart',
                            payload='page_1')
                        quick_reply2 = quick_replies.QuickReplyItem(
                            content_type='text',
                            title='BikeMart',
                            payload='page_2')
                        replies = quick_replies.QuickReplies(
                            quick_replies=[quick_reply, quick_reply2])
                        message = messages.Message(
                            text='Where would you like to shop?',
                            quick_replies=replies)
                        request = messages.MessageRequest(recipient, message)
                        messenger.send(request)
                        pass
                    elif x.get('postback').get(
                            'payload') == 'USER_DEFINED_PAYLOAD1':
                        message = messages.Message(text='New Message')
                        request = messages.MessageRequest(recipient, message)
                        messenger.send(request)
                        pass
                    elif x.get('postback').get('payload') == 'BUY_1':
                        my_elements = []
                        id = str(uuid.uuid4())
                        buy_response = buy('+254720000802', '+254720000800',
                                           id)
                        if buy_response.status_code == 202:
                            message = messages.Message(
                                text='Transaction complete')
                            request = messages.MessageRequest(
                                recipient, message)
                            messenger.send(request)
                            template = templates.GenericTemplate(
                                elements=my_elements)
                            attachment = attachments.TemplateAttachment(
                                template=template)
                            message = messages.Message(attachment=attachment)
                            request = messages.MessageRequest(
                                recipient, message)
                            messenger.send(request)
                    else:
                        print buy_response.status_code
                        buy_response = buy('+254720000802', '+254720000800',
                                           id)
                        quick_reply3 = quick_replies.QuickReplyItem(
                            content_type='text',
                            title=buy_response.status_code,
                            payload='page_2')

        except Exception, e:
            print e.message
    except Exception, e:
        print e
示例#25
0
                             data=json.dumps(payload))
    return response


ACCESS_TOKEN = ""
messenger = MessengerClient(access_token=ACCESS_TOKEN)

# Send button template
web_button = elements.WebUrlButton(title='Show website',
                                   url='https://petersapparel.parseapp.com')
postback_button = elements.PostbackButton(title='Start chatting',
                                          payload='USER_DEFINED_PAYLOAD')
template = templates.ButtonTemplate(text='What do you want to do next?',
                                    buttons=[web_button, postback_button])

attachment = attachments.TemplateAttachment(template=template)

# # Send button template 2
# web_button2 = elements.WebUrlButton(
#   title="I'm a buyer",
#   url='https://petersapparel.parseapp.com'
# )
# postback_button2 = elements.PostbackButton(
#   title='I have something to sell',
#   payload='USER_DEFINED_PAYLOAD'
# )

# template2 = templates.ButtonTemplate(
#   text='Which are you?',
#   buttons=[
#       web_button2, postback_button2
示例#26
0
def sendFBMessage(chat_id,from_user,msgs,suggested_responses=[],msg_type=None,extras=[]):
    # TODO: if suggested_response, create object to handle choices
    # if suggested responses > 3
    recipient = fbmessages.Recipient(recipient_id=from_user)
    if msg_type == 'text':
        if not suggested_responses:
            text_messages = msgs
        else:
            text_messages = msgs[:-1]
        for msg in text_messages:
            message = fbmessages.Message(text=msg)
            request = fbmessages.MessageRequest(recipient, message)
            fbmessenger.send(request)
            
        if suggested_responses:
            buttons = []
            for suggested_response in suggested_responses:
                
                buttons.append(elements.PostbackButton(
                    title=suggested_response,
                    payload=suggested_response
                ))
                
            template = templates.ButtonTemplate(
                text=msgs[-1],
                buttons=buttons
            )
            attachment = attachments.TemplateAttachment(template=template)
            message = fbmessages.Message(attachment=attachment)
            request = fbmessages.MessageRequest(recipient, message)
            fbmessenger.send(request)
    if msg_type == 'image':
        elmnts = []

        for i, url in enumerate(msgs):
            buttons = []
            buttons.append(elements.PostbackButton(
                    title="I like this one",
                    payload="I like number {}st".format(i+1)
                ))
# WEBSITE DOWN
#            buttons.append(elements.WebUrlButton( 
#                    title="See on gofind site",
#                    url="gofindfashion.com/?{}".format(url)  
#                ))
            buttons.append(elements.PostbackButton(
                    title="See more results",
                    payload="See more like this"
                ))
            title = suggested_responses[i]
            element = elements.Element(title=title[:43],image_url=url,buttons=buttons)
            elmnts.append(element)
            
        template = templates.GenericTemplate(elements=elmnts)
        attachment = attachments.TemplateAttachment(template=template)
        message = fbmessages.Message(attachment=attachment)
        request = fbmessages.MessageRequest(recipient, message)
        fbmessenger.send(request)
    if msg_type == 'link':
        

        for i, url in enumerate(msgs):

            elmnts = []
            buttons = []
            buttons.append(elements.WebUrlButton(
            title="Go to store",
            url=url
                ))
            buttons.append(elements.PostbackButton(
                    title="Search with this pic",
                    payload="Search with this pic"
                ))
            buttons.append(elements.PostbackButton(
                    title="See more results",
                    payload="See more like this"
                ))
            title = suggested_responses[i]
            element = elements.Element(title=title[:43],image_url=extras[i],buttons=buttons)
            elmnts.append(element)
            
            template = templates.GenericTemplate(elements=elmnts)
            attachment = attachments.TemplateAttachment(template=template)
            message = fbmessages.Message(attachment=attachment)
            request = fbmessages.MessageRequest(recipient, message)
            fbmessenger.send(request)