示例#1
0
def set_reminder(handler_input):
    persistent_attr = handler_input.attributes_manager.persistent_attributes
    session_attr = handler_input.attributes_manager.session_attributes
    namaaz_time = get_namaaz_times(handler_input)
    #print(namaaz_time)
    if not namaaz_time:
        return -2

    userTimeZone = session_attr["timezone"]
    now_date = datetime.now(timezone(userTimeZone))

    for i, (n, t) in enumerate(namaaz_time.items()):

        if (n == "magrib"):
            msg = data.RMNDR_MGRB
        elif (n == "fajr ending"):
            msg = data.RMNDR_FJR
        elif (n == "zohr starting"):
            msg = data.RMNDR_ZHR
        elif (n == "zohr ending"):
            msg = data.RMNDR_ZHRND
        else:
            continue

        hours, minutes = t.split(":")
        temp_time = now_date.replace(hour=int(hours),
                                     minute=int(minutes),
                                     second=0)
        notification_time = temp_time.strftime("%Y-%m-%dT%H:%M:%S")
        trigger = Trigger(object_type=TriggerType.SCHEDULED_ABSOLUTE,
                          scheduled_time=notification_time,
                          time_zone_id=userTimeZone,
                          recurrence=Recurrence(freq=RecurrenceFreq.DAILY))
        alert_info = AlertInfo(spoken_info=SpokenInfo(
            content=[SpokenText(locale="en-IN", text=msg)]))
        push_notification = PushNotification(PushNotificationStatus.ENABLED)
        reminder_request = ReminderRequest(notification_time, trigger,
                                           alert_info, push_notification)
        reminder_client = handler_input.service_client_factory.get_reminder_management_service(
        )
        try:
            reminder_response = reminder_client.create_reminder(
                reminder_request)
            logger.info("created {}".format(n))
        except ServiceException as s:
            logger.info("idhar bhi exception hein bhai")
            print(s.__class__)
            return -1

        except Exception as e:
            logger.info("exception hein bhai")
            print(e.__class__)
            return 0
    persistent_attr["reminder"] = True
    return 1
示例#2
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        permissions = handler_input.request_envelope.context.system.user.permissions
        if not(permissions and permissions.consent_token):
            logger.info("user hasn't granted reminder permissions")
            return \
                handler_input.response_builder.speak("Please give permissions to set reminders using the alexa app.") \
                .set_card(AskForPermissionsConsentCard(permissions=REQUIRED_PERMISSIONS)) \
                .response

        #Get the slot data
        slots = handler_input.request_envelope.request.intent.slots
        # userMedication = slots['userMedication'].value
        medicineDosage = slots['medicineDosage'].value
        medicineFrequency = slots['medicineFrequency'].value
        medicineTime = slots['medicineTime'].value

        #set the session attributes
        session_attributes = handler_input.attributes_manager.session_attributes
        # session_attributes['userMedication'] = userMedication
        session_attributes['medicineDosage'] = medicineDosage
        session_attributes['medicineFrequency'] = medicineFrequency
        session_attributes['medicineTime'] = medicineTime

        reminder_service = handler_input.service_client_factory.get_reminder_management_service()
        try:
            now = datetime.datetime.now(pytz.timezone(TIME_ZONE_ID))
            #scheduled_time="2020-02-13T03:00:00.000"
            notification_time = datetime.datetime.today()
            times = [int(t) for t in medicineTime.split(':')]
            notification_time = notification_time.replace(hour=times[0], minute=times[1]).strftime("%Y-%m-%dT%H:%M:%S")
            
            trigger = Trigger(object_type=TriggerType.SCHEDULED_ABSOLUTE , scheduled_time=notification_time, time_zone_id=TIME_ZONE_ID, recurrence=Recurrence(freq=RecurrenceFreq.DAILY))
            text = SpokenText(locale='en-US', ssml='<speak>This is your reminder for Kuvan</speak>', text='This is your reminder for Kuvan')  
            alert_info = AlertInfo(SpokenInfo([text]))  
            push_notification = PushNotification(PushNotificationStatus.ENABLED)  
            reminder_request = ReminderRequest(notification_time, trigger, alert_info, push_notification)
        except ServiceException as e:
            logger.info("Exception encountered while creating Reminder: {}".format(e.body))
            speech_text = "Uh Oh. Looks like something went wrong."
            return handler_input.response_builder.speak(speech_text).set_card(
                SimpleCard("Error while creating reminder.",str(e.body))).response

        speak_output = f'We have created {medicineFrequency} reminder at {medicineTime} for Kuvan'
        return (
            handler_input.response_builder
                .speak(speak_output)
                .set_card(SimpleCard('Kuvan Reminder', speak_output))
                # .ask("add a reprompt if you want to keep the session open for the user to respond")
                .response
        )
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("In SetCommittedAlarmHandler")
        #slot = handler_input.request_envelope.request.intent.slots
        """
        time_val = util.get_set_alarm_val(handler_input)
        
        print('pravesh output : type of time_val - {} ; value of time_val - {}'.format(type(time_val) , time_val))
        
                               
        attr = handler_input.attributes_manager.session_attributes
        attr["state"] = "SetCommittedAlarm"
        attr["time"] = time_val
        
        """
        rb = handler_input.response_builder
        permissions = handler_input.request_envelope.context.system.user.permissions
        reminder_service = handler_input.service_client_factory.get_reminder_management_service(
        )
        print('pravesh out - permissions : {} '.format(permissions))
        """
        if not (permissions and permissions.consent_token):
            logging.info("user hasn't granted reminder permissions")
            return rb.speak("Please give permissions to set reminders using the alexa app.").response
        """

        now = datetime.datetime.now()  #(pytz.timezone(TIME_ZONE_ID))
        five_mins_from_now = now + datetime.timedelta(seconds=+20)
        notification_time = five_mins_from_now.strftime("%Y-%m-%dT%H:%M:%S")

        trigger = Trigger(TriggerType.SCHEDULED_ABSOLUTE,
                          notification_time)  #, time_zone_id=TIME_ZONE_ID)
        text = SpokenText(locale='en-IN',
                          ssml='<speak>This is your reminder</speak>',
                          text='This is your reminder')
        alert_info = AlertInfo(SpokenInfo([text]))
        #push_notification = PushNotification(PushNotificationStatus.ENABLED)
        reminder_request = ReminderRequest(notification_time, trigger,
                                           alert_info)

        try:
            reminder_responce = reminder_service.create_reminder(
                reminder_request)
        except ServiceException as e:
            # see: https://developer.amazon.com/docs/smapi/alexa-reminders-api-reference.html#error-messages
            logger.error(e)
            raise e

        return rb.speak("reminder created").set_should_end_session(
            True).response
示例#4
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        rb = handler_input.response_builder
        request_envelope = handler_input.request_envelope
        permissions = request_envelope.context.system.user.permissions
        reminder_service = handler_input.service_client_factory.get_reminder_management_service(
        )

        if not (permissions and permissions.consent_token):
            logging.info("user hasn't granted reminder permissions")
            return rb.speak("Please give permissions to set reminders using the alexa app.") \
                .set_card(AskForPermissionsConsentCard(permissions=REQUIRED_PERMISSIONS)) \
                .response

        attribute_manager = handler_input.attributes_manager
        session_attr = attribute_manager.session_attributes

        tz = pytz.timezone('America/Chicago')
        nt = datetime.fromtimestamp(
            session_attr['walking_time']).astimezone(tz)
        notification_time = nt.strftime("%Y-%m-%dT%H:%M:%S")
        logger.info("Notification Time {}".format(notification_time))

        trigger = Trigger(TriggerType.SCHEDULED_ABSOLUTE,
                          notification_time,
                          time_zone_id=commands.TIME_ZONE_ID)
        text = SpokenText(
            locale='en-US',
            ssml=
            '<speak>This is your reminder to leave to get the next train</speak>',
            text='This is your reminder to leave to get the next train')
        alert_info = AlertInfo(SpokenInfo([text]))
        push_notification = PushNotification(PushNotificationStatus.ENABLED)
        reminder_request = ReminderRequest(notification_time, trigger,
                                           alert_info, push_notification)
        logger.info(reminder_request)
        try:
            reminder_response = reminder_service.create_reminder(
                reminder_request)
        except ServiceException as e:
            # see: https://developer.amazon.com/docs/smapi/alexa-reminders-api-reference.html#error-messages
            logger.error(e)
            raise e

        return rb.speak("reminder created") \
            .set_card(SimpleCard("Notify Me", "leave to get the next train")) \
            .set_should_end_session(True) \
            .response
示例#5
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        reminder_client = handler_input.service_client_factory.get_reminder_management_service()
        req_envelope = handler_input.request_envelope
        response_builder = handler_input.response_builder
        
    # Check if user gave permissions to create reminders.
    # If not, request to provide permissions to the skill.
        if not (req_envelope.context.system.user.permissions and
                req_envelope.context.system.user.permissions.consent_token):
            response_builder.speak(NOTIFY_MISSING_PERMISSIONS)
            response_builder.set_card(
            AskForPermissionsConsentCard(permissions=permissions))
            return response_builder.response
        
        try:
            reminder_response = reminder_client.create_reminder(
            reminder_request=ReminderRequest(
                request_time=datetime.utcnow(),
                trigger=Trigger(
                    object_type=TriggerType.SCHEDULED_RELATIVE,
                    offset_in_seconds=60),
                alert_info=AlertInfo(
                    spoken_info=SpokenInfo(
                        content=[SpokenText(locale="en-US", text="Test reminder")])),
                push_notification=PushNotification(
                    status=PushNotificationStatus.ENABLED))) # type: ReminderResponse
            speech_text = "Great! I've scheduled a reminder for you."

            logger.info("Created reminder : {}".format(reminder_response))
            return handler_input.response_builder.speak(speech_text).set_card(
            SimpleCard(
                "Reminder created with id", reminder_response.alert_token)).response

        except ServiceException as e:
            logger.info("Exception encountered : {}".format(e.body))
            speech_text = "Uh Oh. Looks like something went wrong."
            return handler_input.response_builder.speak(speech_text).set_card(
                SimpleCard(
                    "Reminder not created",str(e.body))).response
            
        speak_output = "Your reminder has been scheduled successfully."
        return (
            handler_input.response_builder
                .speak(speak_text)
                # .ask("add a reprompt if you want to keep the session open for the user to respond")
                .response
            )
def notify_me_intent_handler(handler_input: HandlerInput) -> Response:
    """Handler for Notify Me Intent."""
    logging.info("running notify_me_intent_handler()")
    rb = handler_input.response_builder
    request_envelope = handler_input.request_envelope
    permissions = request_envelope.context.system.user.permissions
    reminder_service = handler_input.service_client_factory.get_reminder_management_service(
    )

    if not (permissions and permissions.consent_token):
        logging.info("user hasn't granted reminder permissions")
        return rb.speak("Please give permissions to set reminders using the alexa app.") \
            .set_card(AskForPermissionsConsentCard(permissions=REQUIRED_PERMISSIONS)) \
            .response

    now = datetime.datetime.now(pytz.timezone(TIME_ZONE_ID))
    five_mins_from_now = now + datetime.timedelta(minutes=+5)
    notification_time = five_mins_from_now.strftime("%Y-%m-%dT%H:%M:%S")

    trigger = Trigger(TriggerType.SCHEDULED_ABSOLUTE,
                      notification_time,
                      time_zone_id=TIME_ZONE_ID)
    text = SpokenText(locale='en-US',
                      ssml='<speak>This is your reminder</speak>',
                      text='This is your reminder')
    alert_info = AlertInfo(SpokenInfo([text]))
    push_notification = PushNotification(PushNotificationStatus.ENABLED)
    reminder_request = ReminderRequest(notification_time, trigger, alert_info,
                                       push_notification)

    try:
        reminder_responce = reminder_service.create_reminder(reminder_request)
    except ServiceException as e:
        # see: https://developer.amazon.com/docs/smapi/alexa-reminders-api-reference.html#error-messages
        logger.error(e)
        raise e

    return rb.speak("reminder created") \
        .set_card(SimpleCard("Notify Me", "reminder created")) \
        .set_should_end_session(True) \
        .response
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        request_envelope = handler_input.request_envelope
        permissions = request_envelope.context.system.user.permissions
        reminder_service = handler_input.service_client_factory.get_reminder_management_service(
        )

        if not (permissions and permissions.consent_token):
            return (handler_input.response_builder.speak(
                "Please give permissions to set reminders "
                "using the alexa app.").set_card(
                    AskForPermissionsConsentCard(
                        permissions=REQUIRED_PERMISSIONS)).response)

        now = datetime.datetime.now(pytz.timezone(TIME_ZONE_ID))
        one_min_from_now = now + datetime.timedelta(minutes=+1)
        notification_time = one_min_from_now.strftime("%Y-%m-%dT%H:%M:%S")

        trigger = Trigger(TriggerType.SCHEDULED_ABSOLUTE,
                          notification_time,
                          time_zone_id=TIME_ZONE_ID)
        text = SpokenText(locale='en-US',
                          ssml='<speak>This is your reminder</speak>',
                          text='This is your reminder')
        alert_info = AlertInfo(SpokenInfo([text]))
        push_notification = PushNotification(PushNotificationStatus.ENABLED)
        reminder_request = ReminderRequest(notification_time, trigger,
                                           alert_info, push_notification)

        try:
            reminder_response = reminder_service.create_reminder(
                reminder_request)
        except ServiceException as error:
            logger.error(error)
            raise error

        return (
            handler_input.response_builder.speak("Reminder Created").response)
def create_reminder_request(date, text):
    """Create a ReminderRequest to be oassed when creating a Reminder
    """
    # type: () -> ReminderRequest
    #build alert and trigger for the Reminder Request
    reminder_date = datetime.strptime(date, "%Y-%m-%d")
    reminder_date = reminder_date.replace(hour=13, minute=0)
    if reminder_date < datetime.now():
        return None


#TODO manage locale language
    text = SpokenText(locale=None, ssml=None, text=text)
    alert = AlertInfo(spoken_info=SpokenInfo([text]))
    trigger = Trigger(object_type=TriggerType.SCHEDULED_ABSOLUTE,
                      scheduled_time=reminder_date,
                      offset_in_seconds=None,
                      time_zone_id=None,
                      recurrence=None)
    return ReminderRequest(request_time=datetime.now(),
                           trigger=trigger,
                           alert_info=alert,
                           push_notification=PushNotification(
                               PushNotificationStatus.ENABLED))
示例#9
0
    def handle(self, handler_input):
        """Handle the intent; fetch and serve appropriate response.

        Handles prompt response if one exists (ie. if this was called as an
        updated_intent from NextMassIntent). Unless told not to, creates
        a reminder via the reminder API for 30 minutes prior to mass, handling
        edge cases such as being within a 30 minute window of next mass OR
        lack of Reminder permissions by the user.

        Supports a DEV_MODE for a quick reminder.

        Ends the current session.

        Args:
            handler_input (ask_sdk_core.handler_input.HandlerInput):
                Input from Alexa.

        Returns:
            ask_sdk_model.response.Response: Response for this intent and
                device.

        """
        DEV_MODE = False
        speech = ""
        LOGGER.info("Running NotifyNextMassHandler")
        userSession = session.KilianUserSession(handler_input)

        negativeResponses = ["nah", "nope", "no thank you", "no thanks", "no"]

        # Did this intent come from an updated_intent redirect? Was the user
        #  just asked a yes/no question?:
        if userSession.desiresReminder:
            # Yup, check for a negative answer and bail.
            if userSession.desiresReminder.lower() in negativeResponses:
                LOGGER.info("DESIRES_REMINDER slot indicates 'no'")
                speech = "Okay."
                cardTitle = "Next Mass"
                cardText = "No reminder requested."
                handler_input.response_builder.speak(speech).set_card(
                    StandardCard(title=cardTitle, text=cardText))
                handler_input.response_builder.set_should_end_session(True)
                return handler_input.response_builder.response
        else:
            # Nope, the user must have explicitly asked for the reminder.
            LOGGER.info("No DESIRES_REMINDER slot filled.")

        # Set up the reminder framework:
        responseBuilder = handler_input.response_builder
        requestEnvelope = handler_input.request_envelope
        permissions = requestEnvelope.context.system.user.permissions
        serviceFactory = handler_input.service_client_factory
        reminderService = serviceFactory.get_reminder_management_service()

        # If no permissions
        if not (permissions and permissions.consent_token):
            LOGGER.info("user hasn't granted reminder permission")
            speech = "Please give Saint Kilian permissions to set reminders"
            speech += " using your Alexa app."
            permissions = ["alexa::alerts:reminders:skill:readwrite"]
            card = AskForPermissionsConsentCard(permissions=permissions)
            return responseBuilder.speak(speech).set_card(card).response

        # Else, let's set up the reminder
        msg = "Necessary permissions found. Creating reminder."
        print(msg)
        LOGGER.info(msg)
        now = datetime.datetime.now(pytz.timezone("America/Los_Angeles"))
        massTime = events.MassResponse(userSession).getNextMass()
        msg = "massTime getNextMass query returned"
        print(msg)
        LOGGER.debug(msg)
        # If no more masses today:
        if not massTime:
            LOGGER.info("no next mass found for today")
            speech = "Sorry, but it looks like there are no more masses today."
            cardText = "No more masses today.\nTry again tomorrow."
            card = SimpleCard("St. Kilian - Mass Reminder", cardText)
            return responseBuilder.speak(speech).set_card(card) \
                .set_should_end_session(True).response

        # Good, a mass was found. Convert it to the local timezone.
        msg = "Mass found. Converting to local timezone"
        print(msg)
        LOGGER.debug(msg)
        massTime = massTime["time"]
        todayEvent = datetime.datetime.combine(now, massTime)
        reminderTime = todayEvent - datetime.timedelta(minutes=30)
        timezone = pytz.timezone("America/Los_Angeles")
        reminderTime = timezone.localize(reminderTime)
        todayEvent = timezone.localize(todayEvent)
        msg = "Upcoming event, local time, is {}".format(todayEvent)
        print(msg)
        LOGGER.debug(msg)
        # Are we within 30 minutes before it starts? If so, apologize and bail.
        if reminderTime < now and not DEV_MODE:
            LOGGER.info("too late. reminder is in the past.")
            speech = "It looks like it's too late for a reminder. "
            left = int(((todayEvent - now).seconds) / 60)
            speech += "You only have {} minutes left until Mass.".format(left)
            card = SimpleCard("St. Kilian - Mass Reminder",
                              "Reminder set for Mass.")
            return responseBuilder.speak(speech).set_card(card) \
                .set_should_end_session(True).response

        # Rather than waiting all day, if in dev mode, just wait one minute:
        if DEV_MODE:
            reminderTime = now + datetime.timedelta(minutes=+1)

        # Build and invoke the response:
        msg = "Building response"
        print(msg)
        LOGGER.debug(msg)
        reminderString = reminderTime.strftime("%Y-%m-%dT%H:%M:%S")
        trigger = Trigger(TriggerType.SCHEDULED_ABSOLUTE,
                          reminderString,
                          time_zone_id="America/Los_Angeles")
        msg = "It is time to leave for mass."
        markup = "<speak>{}</speak>".format(msg)
        reminderSpeech = SpokenText(locale="en-US", ssml=markup, text=msg)
        alertInfo = AlertInfo(SpokenInfo(content=[reminderSpeech]))
        pushNotification = PushNotification(PushNotificationStatus.ENABLED)
        reminderRequest = ReminderRequest(request_time=reminderTime,
                                          trigger=trigger,
                                          alert_info=alertInfo,
                                          push_notification=pushNotification)
        try:
            LOGGER.debug("creating reminder...")
            print("creating reminder...")
            reminderService.create_reminder(reminder_request=reminderRequest)
            LOGGER.debug("reminder created.")
        except ServiceException as e:
            msg = "An error occurred while creating reminder from\n{}"
            msg = msg.format(reminderRequest)
            print(msg)
            LOGGER.error(msg)
            LOGGER.error(e)
            if hasattr(e, "message"):
                LOGGER.error(e.message)
            raise e

        # Build the speech response:
        if DEV_MODE:
            speech += "Okay. Since you are in demo mode, I'll remind "
            speech += "in one minute to go to mass. "
        speech += "I will remind you at {}:{}{} to leave for mass."
        hour = reminderTime.hour
        minute = "{:02d}".format(reminderTime.minute)
        if hour >= 12:
            suffix = "pm"
        else:
            suffix = "am"

        if hour > 12:
            hour = hour - 12
        speech = speech.format(hour, minute, suffix)
        card = SimpleCard("St. Kilian", "Reminder set for Mass.")
        msg = "returning final response."
        print(msg)
        return responseBuilder.speak(speech).set_card(card) \
            .set_should_end_session(True).response
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        permissions = handler_input.request_envelope.context.system.user.permissions
        reminder_service = handler_input.service_client_factory.get_reminder_management_service(
        )
        med_data = handler_input.attributes_manager.session_attributes[
            'med_data']

        if not (permissions and permissions.consent_token):
            return (handler_input.response_builder.speak(
                data.set_permissions_message).response)
        else:
            for med in med_data:
                med_name = med_data[med]['name']
                med_times = med_data[med]['times']
                for time in med_times:
                    time_now = datetime.datetime.now(
                        pytz.timezone(TIME_ZONE_ID))

                    # get reminder time hour, minute and create reminder_time datetime object
                    time = time.split(':')
                    hour = int(time[0])
                    minute = int(time[1])
                    reminder_time = datetime.datetime(
                        year=time_now.year,
                        month=time_now.month,
                        day=time_now.day,
                        hour=hour,
                        minute=minute,
                        tzinfo=pytz.timezone(TIME_ZONE_ID))
                    time_now = time_now.strftime("%Y-%m-%dT%H:%M:%S")
                    notification_time = reminder_time.strftime(
                        "%Y-%m-%dT%H:%M:%S")

                    recurrence = Recurrence(
                        freq=recurrence_freq.RecurrenceFreq.DAILY)

                    trigger = Trigger(TriggerType.SCHEDULED_ABSOLUTE,
                                      scheduled_time=notification_time,
                                      time_zone_id=TIME_ZONE_ID,
                                      recurrence=recurrence)
                    text = SpokenText(
                        locale='en-US',
                        text='Time to take your medicine {}'.format(med_name))
                    alert_info = AlertInfo(SpokenInfo([text]))
                    push_notification = PushNotification(
                        PushNotificationStatus.ENABLED)

                    # generate the reminder request object
                    reminder_request = ReminderRequest(
                        request_time=time_now,
                        trigger=trigger,
                        alert_info=alert_info,
                        push_notification=push_notification)

                    reminder_response = reminder_service.create_reminder(
                        reminder_request, full_response=True)

        return (handler_input.response_builder.speak(
            "Reminders have been successfully created for all your medicines!"
        ).response)
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("Reminder Intent handler")
        request_envelope = handler_input.request_envelope
        response_builder = handler_input.response_builder
        reminder_service = handler_input.service_client_factory.get_reminder_management_service(
        )

        if not (request_envelope.context.system.user.permissions and
                request_envelope.context.system.user.permissions.consent_token
                ):

            #return response_builder.speak(NOTIFY_MISSING_PERMISSIONS).set_card(AskForPermissionsConsentCard(permissions=PERMISSIONS)).response

            return response_builder.add_directive(
                SendRequestDirective(
                    name="AskFor",
                    payload={
                        "@type":
                        "AskForPermissionsConsentRequest",
                        "@version":
                        "1",
                        "permissionScope":
                        "alexa::alerts:reminders:skill:readwrite"
                    },
                    token="correlationToken")).response

        now = datetime.datetime.now(pytz.timezone(TIME_ZONE_ID))
        five_mins_from_now = now + datetime.timedelta(minutes=+5)
        notification_time = five_mins_from_now.strftime("%Y-%m-%dT%H:%M:%S")

        # Create an instance of the recurrence object

        # Set the missing attributes on the instance's deserialized_types map,
        # as following :
        recurrence_pattern = [
            "FREQ=DAILY;BYHOUR=6;BYMINUTE=10;BYSECOND=0;INTERVAL=1;",
            "FREQ=DAILY;BYHOUR=17;BYMINUTE=15;BYSECOND=0;INTERVAL=1;",
            "FREQ=DAILY;BYHOUR=19;BYMINUTE=45;BYSECOND=0;INTERVAL=1;"
        ]

        trigger = Trigger(
            object_type=TriggerType.SCHEDULED_ABSOLUTE,
            scheduled_time=notification_time,
            time_zone_id=TIME_ZONE_ID,
            recurrence=Recurrence(recurrence_rules=recurrence_pattern))
        text = SpokenText(
            locale='en-US',
            ssml="<speak> Great! I have scheduled reminder for you.</speak>",
            text='This is medicine reminder. Please take your medicine')
        alert_info = AlertInfo(SpokenInfo([text]))
        push_notification = PushNotification(PushNotificationStatus.ENABLED)
        reminder_request = ReminderRequest(notification_time, trigger,
                                           alert_info, push_notification)

        try:
            reminder_response = reminder_service.create_reminder(
                reminder_request)
            logger.info("Reminder Created: {}".format(reminder_response))
        except ServiceException as e:
            logger.info("Exception encountered: {}".format(e.body))
            return response_builder.speak(ERROR).response

        return response_builder.speak(
            "Your medicine reminder created").set_card(
                SimpleCard("Medicine Reminder",
                           "Medicine Reminder created")).response