рдЕрдЬрдЧрд░ рд╕реНрдХрд╛рдЗрдк рдЖрдВрд╕рд░рд┐рдВрдЧ рдорд╢реАрди

рдирдорд╕реНрддреЗ! рдпрд╣ рд╡рд┐рд╖рдп рд╕реНрдХрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрддрд░ рджреЗрдиреЗ рд╡рд╛рд▓реА рдорд╢реАрди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛, рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛, рдПрдХ рдЧреНрд░реАрдЯрд┐рдВрдЧ рдЦреЗрд▓реЗрдВрдЧреЗ рдФрд░ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВрдЧреЗред



рджрд┐рдпрд╛ рдЧрдпрд╛: Skype: 5.0.0.156, WinXPSP3, ActiveState рдкрд╛рдпрдерди 2.6.2.2ред



рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕реЗ * рдирд┐рдХреНрд╕ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Skype рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Skype4py рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рдФрд░ рдпрд╣рд╛рдБ рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред



Skype4py рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, Skype рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗ:



class AnsweringMachine: def __init__(self): self.FilesPath = os.getcwd() + '\\' #      self.WavFile = self.FilesPath + 'outofoffice.wav' #   self.IncomingCallsDir = self.FilesPath + 'incoming\\' #   self.time2wait = 30 #   self.callsanswered = dict() #        .
      
      







OnCall рд╣реИрдВрдбрд▓рд░ рдЙрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рдХреЙрд▓ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреЙрд▓ рдХрд╛ рд╕рдордп 2 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред Call.Answer рдХреЙрд▓ рдХреЛ рдХреЛрд╢рд┐рд╢ рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреЛрди рдФрд░ рдЕрдиреНрдп рдХреЛ рд▓реЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдХреЙрд▓ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ред WFFile рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рд╕рднреА рдХреЙрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓реЗрдВрдЧреЗ:



  def OnCall(self, call, status): if status == Skype4Py.clsRinging and call.Type.startswith('INCOMING'): print 'Incoming call from:', call.PartnerHandle time.sleep(self.time2wait) if call.Duration == 0: try: call.Answer() except: pass self.callsanswered[call.Id] = 'Answered' else: self.callsanswered[call.Id] = 'HumanAnswered' if status == Skype4Py.clsInProgress and self.callsanswered[call.Id] == 'Answered': self.callsanswered[call.Id] = 'Playing' print ' playing ' + self.WavFile call.InputDevice(Skype4Py.callIoDeviceTypeFile, self.WavFile) if status in CallIsFinished: print 'call ',status.lower()
      
      







OnInputStatusChanged рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗ рдФрд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреА рдЖрд╡рд╛рдЬрд╝ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдПрдХ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝реА рдЬрд╛рдПрдВрдЧреА, рдЬреЛ рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓рдбрд╛рдпрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЙрдкрдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдХреЙрд▓рд┐рдВрдЧред InputDevice (Skype4Py.callIoDeviceTypeFile, рдХреЛрдИ рдирд╣реАрдВ) рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдЦреЗрд▓рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдИ рдмрд╛рд░ рдЦреЗрд▓рд╛ рдЬрд╛рдПрдЧрд╛ред



  def OnInputStatusChanged(self, call, status): if not status and call.InputDevice().has_key('FILE') and call.InputDevice()['FILE'] == self.WavFile and self.callsanswered[call.Id] == 'Playing': self.callsanswered[call.Id] = 'Recording' print ' play finished' if not os.path.exists(self.IncomingCallsDir + call.PartnerHandle): os.mkdir(self.IncomingCallsDir + call.PartnerHandle) OutFile = self.IncomingCallsDir + call.PartnerHandle + '\\' + time.strftime("%Y-%m-%d_%H-%M-%S") + '.wav' call.InputDevice(Skype4Py.callIoDeviceTypeFile, None) print ' recording ' + OutFile call.OutputDevice(Skype4Py.callIoDeviceTypeFile, OutFile)
      
      







рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдиреАрдЪреЗ рдкреВрд░рд╛ рдХреЛрдб рд╣реИ:



 #!/usr/bin/python # -*- coding: cp1251 -*- import Skype4Py import sys, time, os CallIsFinished = set ([Skype4Py.clsFailed, Skype4Py.clsFinished, Skype4Py.clsMissed, Skype4Py.clsRefused, Skype4Py.clsBusy, Skype4Py.clsCancelled]); class AnsweringMachine: def __init__(self): self.FilesPath = os.getcwd() + '\\' #      self.WavFile = self.FilesPath + 'outofoffice.wav' #   self.IncomingCallsDir = self.FilesPath + 'incoming\\' #   self.time2wait = 30 #   self.callsanswered = dict() #        . if not os.path.exists(self.IncomingCallsDir): os.mkdir(self.IncomingCallsDir) def OnCall(self, call, status): if status == Skype4Py.clsRinging and call.Type.startswith('INCOMING'): print 'Incoming call from:', call.PartnerHandle time.sleep(self.time2wait) if call.Duration == 0: try: call.Answer() except: pass self.callsanswered[call.Id] = 'Answered' else: self.callsanswered[call.Id] = 'HumanAnswered' if status == Skype4Py.clsInProgress and self.callsanswered[call.Id] == 'Answered': self.callsanswered[call.Id] = 'Playing' print ' playing ' + self.WavFile call.InputDevice(Skype4Py.callIoDeviceTypeFile, self.WavFile) if status in CallIsFinished: print 'call ',status.lower() def OnInputStatusChanged(self, call, status): if not status and call.InputDevice().has_key('FILE') and call.InputDevice()['FILE'] == self.WavFile and self.callsanswered[call.Id] == 'Playing': self.callsanswered[call.Id] = 'Recording' print ' play finished' if not os.path.exists(self.IncomingCallsDir + call.PartnerHandle): os.mkdir(self.IncomingCallsDir + call.PartnerHandle) OutFile = self.IncomingCallsDir + call.PartnerHandle + '\\' + time.strftime("%Y-%m-%d_%H-%M-%S") + '.wav' call.InputDevice(Skype4Py.callIoDeviceTypeFile, None) print ' recording ' + OutFile call.OutputDevice(Skype4Py.callIoDeviceTypeFile, OutFile) def OnAttach(status): global skype print 'Attachment status: ' + skype.Convert.AttachmentStatusToText(status) if status == Skype4Py.apiAttachAvailable: skype.Attach() def main(): global skype am = AnsweringMachine() skype = Skype4Py.Skype() skype.OnAttachmentStatus = OnAttach skype.OnCallStatus = am.OnCall skype.OnCallInputStatusChanged = am.OnInputStatusChanged if not skype.Client.IsRunning: print 'Starting Skype..' skype.Client.Start() print 'Connecting to Skype process..' skype.Attach() print 'Waiting for incoming calls' try: while True: time.sleep(1) except: pass if __name__ == '__main__': main()
      
      







UPD : рддрд░реНрдХ рдореЗрдВ рджреЛ рдмрдЧ рддрдп рдХрд┐рдП, рдЙрддреНрддрд░ рджреЗрдиреЗ рд╡рд╛рд▓реА рдорд╢реАрди рднреА рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЪрд╛рд▓реВ рд╣реБрдИ рдФрд░ рдЪрд╛рд▓реВ рд╣реЛ рдЧрдИ рдЕрдЧрд░ рд░рд┐рд╕реАрд╡рд░ рдЕрднреА рднреА рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред



All Articles