技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

VOICEROID+でSkypeメッセージ喋らせる(4)

さて、今度はSkypeだ。
Skype 自体にCOMインターフェースがあるようだがSkype4COMというライブラリもあるらしい。
勝手知ったるC#で使うなら使っといたほうがそらええわってことでSkype4COMを弄ってみる。
使いにくければCOM叩くよ。

メッセージの受信

namespace SkypeSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Skype skype = new Skype();
            skype.Attach();
            skype.MessageStatus += new _ISkypeEvents_MessageStatusEventHandler(MessageRecieved);
            skype.OnlineStatus += new _ISkypeEvents_OnlineStatusEventHandler(skype_OnlineStatus);
            skype.CallStatus += new _ISkypeEvents_CallStatusEventHandler(skype_CallStatus);
            Console.ReadLine();
        }

        static void skype_CallStatus(Call pCall, TCallStatus Status)
        {
            Console.WriteLine("{0} -> {1} : {2}", pCall.ForwardedBy, pCall.PartnerDisplayName, Status.ToString());
        }

        static void skype_OnlineStatus(User pUser, TOnlineStatus Status)
        {
            Console.WriteLine("{0} : {1}", pUser.FullName, Status);
        }

        static void MessageRecieved(ChatMessage pMessage, TChatMessageStatus Status)
        {
            Console.WriteLine("{0} : {1}", pMessage.FromDisplayName, pMessage.Body);
            Console.WriteLine(Status.ToString());
        }
    }
}

実行結果

white-azalea : サンプル
cmsSending
white-azalea : サンプル
cmsSent
XXXX : おねえちゃん大好き
cmsReceived
XXXX : おねえちゃん大好き
cmsRead
 -> XXXX : clsFinished
 -> XXXX : clsUnplaced
 -> XXXX : clsRouting
 -> XXXX : clsRinging
 -> XXXX : clsInProgress
XX : olsOnline
XX : olsOffline

ぼ、、、僕はお姉ちゃん居ないですからっ!(何)
送信はcmsSentイベントステータス、受信はcmsReceivedを受ければいいのか。