Exemplo n.º 1
0
def remoteInquiry(config, user, call, receivedQ):
    """
    Remote inquiry function (uses german wave snippets!)

    Implemented commands for remote inquiry are:
      delete message - 1
      next message - 4
      last message - 5
      repeat current message - 6

    'user' name of the user who is responsible for this
    'config' ConfigParser instance holding the config data
    'call' reference to the call. Needed by all capisuite functions
    'receivedQ' the received queue dir of the user
    """
    try:
        lock = fileutils._getLock(
            os.path.join(receivedQ, 'inquiry_lock'), blocking=0)
    except fileutils.LockTakenError:
        say(config, user, call, "fernabfrage-aktiv.la")
        return
    try:
        # read directory contents
        messages = capisuite.voice.getQueueFiles(config, user)
        # read the number of the message heard last at the last inquiry
        lastinquiry = capisuite.voice.getInquiryCounter(config, user)
        # filter out old messages
        oldmessages = [m for m in capisuite.voice.getQueueFiles(config, user) if int(m[0]) <= lastinquiry]
        messages    = [m for m in capisuite.voice.getQueueFiles(config, user) if int(m[0]) >  lastinquiry]
        #oldmessages = [m for m in messages if m[0] <= lastinquiry]
        #messages    = [m for m in messages if m[0] >  lastinquiry]
	call.log("Count of messages = %x" % lastinquiry, 1)
        oldmessages.sort()
        messages.sort()

        announceNumMessages(config, user, call, len(messages), new=1)

        # menu for record new announcement
        cmd = ""
        while cmd not in ("1", "9"):
            if len(messages) or len(oldmessages):
                say(config, user, call, "zum-abhoeren-1.la")
            say(config, user, call, "fuer-neue-ansage-9.la")
            cmd = call.read_DTMF(0, 1)
        if cmd == "9":
            cmd_recordNewAnnouncement(config, user, call, receivedQ)
            return

        # start inquiry
        cmd_inquiry(config, user, call, oldmessages, messages, lastinquiry)

    finally:
        fileutils._releaseLock(lock)
Exemplo n.º 2
0
def remoteInquiry(config, user, call, receivedQ):
    """
    Remote inquiry function (uses german wave snippets!)

    Implemented commands for remote inquiry are:
      delete message - 1
      next message - 4
      last message - 5
      repeat current message - 6

    'user' name of the user who is responsible for this
    'config' ConfigParser instance holding the config data
    'call' reference to the call. Needed by all capisuite functions
    'receivedQ' the received queue dir of the user
    """
    try:
        lock = fileutils._getLock(os.path.join(receivedQ, 'inquiry_lock'),
                                  blocking=0)
    except fileutils.LockTakenError:
        say(config, user, call, "fernabfrage-aktiv.la")
        return
    try:
        # read directory contents
        messages = capisuite.voice.getQueueFiles(config, user)

        # read the number of the message heard last at the last inquiry
        lastinquiry = capisuite.voice.getInquiryCounter(config, user)
        # filter out old messages
        oldmessages = [m for m in messages if m[0] <= lastinquiry]
        messages = [m for m in messages if m[0] > lastinquiry]
        oldmessages.sort()
        messages.sort()

        announceNumMessages(config, user, call, len(messages), new=1)

        # menu for record new announcement
        cmd = ""
        while cmd not in ("1", "9"):
            if len(messages) or len(oldmessages):
                say(config, user, call, "zum-abhoeren-1.la")
            say(config, user, call, "fuer-neue-ansage-9.la")
            cmd = call.read_DTMF(0, 1)
        if cmd == "9":
            cmd_recordNewAnnouncement(config, user, call, receivedQ)
            return

        # start inquiry
        cmd_inquiry(config, user, call, oldmessages, messages, lastinquiry)

    finally:
        fileutils._releaseLock(lock)
Exemplo n.º 3
0
                          and result in (0, 0x3400, 0x3480, 0x3490, 0x349f)
                tries = control.getint("tries") + 1
                control.set('tries', tries)
                if send_ok:
                    core.log("job %s: finished successfully" % jobnum, 1)
                    control = capisuite.fax.moveJob(controlfile, doneQ, user)
                    sendinfo.update(control.items())
                    helpers.sendSimpleMail(
                        fromaddress, mailaddress,
                        config.get('MailFaxSent', 'subject') % sendinfo,
                        config.get('MailFaxSent', 'text') % sendinfo)
                elif tries >= max_tries:
                    # too many ties, send failed
                    core.log("job %s: failed finally" % jobnum, 1)
                    control = capisuite.fax.moveJob(controlfile, failedQ, user)
                    sendinfo.update(control.items())
                    helpers.sendSimpleMail(
                        fromaddress, mailaddress,
                        config.get('MailFaxFailed', 'subject') % sendinfo,
                        config.get('MailFaxFailed', 'text') % sendinfo)
                else:
                    # delay next try
                    next_delay = int(delays[min(len(delays), tries) - 1])
                    core.log("job %s: delayed for %i seconds" % \
                             (jobnum, next_delay), 2)
                    starttime = time.time() + next_delay
                    control.set('starttime', time.ctime(starttime))
                    control.write(controlfile)
            finally:
                _releaseLock(lock)
Exemplo n.º 4
0
                tries = control.getint("tries") +1
                control.set('tries', tries)
                if send_ok:
                    core.log("job %s: finished successfully" % jobnum, 1)
                    control = capisuite.fax.moveJob(controlfile, doneQ, user)
                    sendinfo.update(control.items())
                    helpers.sendSimpleMail(
                        fromaddress, mailaddress,
                        config.get('MailFaxSent', 'subject') % sendinfo,
                        config.get('MailFaxSent', 'text') % sendinfo)
                elif tries >= max_tries:
                    # too many ties, send failed
                    core.log("job %s: failed finally" % jobnum, 1)
                    control = capisuite.fax.moveJob(controlfile, failedQ, user)
                    sendinfo.update(control.items())
                    helpers.sendSimpleMail(
                        fromaddress, mailaddress,
                        config.get('MailFaxFailed', 'subject') % sendinfo,
                        config.get('MailFaxFailed', 'text') % sendinfo)
                else:
                    # delay next try
                    next_delay = int(delays[ min(len(delays),tries) -1 ])
                    core.log("job %s: delayed for %i seconds" % \
                             (jobnum, next_delay), 2)
                    starttime = time.time() + next_delay
                    control.set('starttime', time.ctime(starttime))
                    control.write(controlfile)
            finally:
                _releaseLock(lock)