当前位置: 首页>>代码示例>>Python>>正文


Python Messenger.initial_message方法代码示例

本文整理汇总了Python中messenger.Messenger.initial_message方法的典型用法代码示例。如果您正苦于以下问题:Python Messenger.initial_message方法的具体用法?Python Messenger.initial_message怎么用?Python Messenger.initial_message使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在messenger.Messenger的用法示例。


在下文中一共展示了Messenger.initial_message方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: __init__

# 需要导入模块: from messenger import Messenger [as 别名]
# 或者: from messenger.Messenger import initial_message [as 别名]
class Manager:
    """
    The middle-man of interaction between messenger and the SMS service.
    """
    def __init__(self):
        self.config = self.__load_config_file()
        self.messenger = Messenger(self.config)
        self.sms_service = SMSService()

    def send_initial_greeting(self):
        """
        Sends the initial SMS to new* patients at a pre-defined client time.

        *New patients are those that have recently been added
        to the clients database, which the service does not know.

        Note: this is REQUIRED otherwise 'respond' & other services do not
        function as database errors are thrown (understandably).
        """
        from datetime import datetime
        current_time = str(datetime.now().time())[0:5]
        # Send the message to new patients at the defined time.
        if current_time == self.config['initialQuestion']['time']:
            for number in self.__new_patients():
                message = self.messenger.initial_message()
                self.sms_service.send(number, message)
                self.__create_new_patient(number)
                self.__save_message(number, message, 'sent')

    def respond(self, patient_response):
        """
        Respond to new SMS when it is received via a POST request.

        Args:
            patient_message (dict): Contains the number, and message sent to
            the service by a patient.

        Returns:
            response (XML): twilio formatted response.
        """
        number = patient_response['number']
        patient_message = patient_response['message']
        # Generate a reflective summary based on the patient's response.
        summary = self.messenger.summary(patient_message)

        # TODO: Fix this with the system set time (i.e. UTC)
        midnight = int(datetime.today().strftime("%s")) - 24*60*60
        # The number of questions sent since last night.
        _questions = db.session.query(models.Message).filter(
            models.Message.mobile == number,
            models.Message.status == 'sent',
            models.Message.timestamp >= midnight).all()

        all_sent = [item.message for item in _questions]
        # The number of OEQ sent since last night.
        num_oeq = len([i for i in self.config['questions'] if i in all_sent])

        print 'Number OEQ sent since last night was: %s' % str(num_oeq)

        response = None

        # Do not send a response if initial daily conversation not started.
        if num_oeq >= 1:
            print 'The last sms sent was: %s' % all_sent[-1]
            if all_sent[-1] in self.config['questions']:
                print 'Last message sent was an OEQ. Sending a RS to patient.'
                response = summary
            else:
                print 'Inside the else..'
                if (num_oeq >= int(self.config['limit'])):  # True: OEQ >= LIMIT
                    print 'Inside the else... in the if...'
                    if self.config['endQuestion'] not in all_sent:
                        print 'Sending the conversation closer as limit met.'
                        response = self.config['endQuestion']
                else:
                    print 'Message received was response to a RS. Sending OEQ.'
                    response = self.__select_question(number)

        if response:
            self.__save_message(number, patient_message, 'received')
            self.__save_message(number, response, 'sent')
            print 'The response (%s) has been saved to the database.' % response
            return self.sms_service.reply(response)
        else:
            print 'No response was created.'
            return ''  # Prevents a 500 error code returned to POST.

    def send_initial_question_to_all(self):
        """
        Sends a question to all patients at a pre-defined day and time.
        """
        known_patients = [item.mobile for item in
                          db.session.query(models.Patient.mobile).all()]
        from datetime import datetime
        print "Checking to see if open-ended question should be sent."
        isDay = datetime.now().strftime("%A") in self.config["daysToSend"]
        isTime = str(datetime.now().time())[0:5] == self.config["sendTime"]
        if isDay and isTime:
            for number in known_patients:
                message = self.__select_question(number)
#.........这里部分代码省略.........
开发者ID:jawrainey,项目名称:sris,代码行数:103,代码来源:manager.py


注:本文中的messenger.Messenger.initial_message方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。