Python で Skype の応答メッセージを変更する
久しぶりの更新がこれなのはアレですが、世の中にサンプルがなさそうなので……
Skype4Py を使用して、Skype の応答メッセージ (voicemail greeting) として、PC上のwaveファイルをアップロードします。wave ファイルには、16KHz, 16bit, モノラルという制限があります。
プライベートなメソッドを使いまくっているので、Skype4Py の内部構造が変わったら動かなくなるかもしれません。(その前に Skype4Py が SEARCH GREETING や VOICEMAIL ALTER SET_INPUT に対応してくれるはず)
参考: http://forum.skype.com/topic/213301-uploading-a-voicemail-greeting-using-the-api/
コードは続きに。
import Skype4Py import time import wave def get_greeting(skype): try: res = skype._DoCommand('SEARCH GREETING') greeting_id = int((res.split())[1]) return skype.Voicemail(greeting_id) except: return None def upload_greeting(skype, file): w = wave.open(file) if w.getframerate() != 16000 or w.getnchannels() != 1 or w.getsampwidth() != 2: raise RuntimeError, "Wave file have to be 16KHz, 16bit, mono format" wave_length = float(w.getnframes())/w.getframerate() wave_length += 1.0 # add a little margin time greeting = get_greeting(skype) if not greeting: raise RuntimeError, "Cannot get the greeting voicemail" greeting._Alter('SET_INPUT', 'FILE="%s"' % file) greeting.StartRecording() time.sleep(wave_length) greeting.StopRecording() greeting._Alter('SET_INPUT', 'SOUNDCARD="default"') if __name__ == "__main__": skype = Skype4Py.Skype() skype.Attach() upload_greeting(skype, '/path/to/16k_16bit_mono.wav')