From: Dobrica Pavlinusic Date: Sat, 5 Feb 2011 16:11:35 +0000 (+0100) Subject: send protocol via chat and return response X-Git-Url: http://git.rot13.org/?p=skype-conference-recorder.git;a=commitdiff_plain;h=a655a5a01eb5ca8b492dd56f69ab07fbbe4d2cd1 send protocol via chat and return response --- diff --git a/SkypeAPI.pm b/SkypeAPI.pm index 60aa306..f506426 100644 --- a/SkypeAPI.pm +++ b/SkypeAPI.pm @@ -56,7 +56,17 @@ sub Notify { # only print to terminal. override this in a subclass for something # more useful. my ($self, $string) = @_; - print "-> $string\n"; + print "Notify <- $string\n"; + if ( $string =~ m{CHATMESSAGE (\d+) STATUS RECEIVED} ) { + my $id = $1; + my $body = $self->Invoke("GET CHATMESSAGE $id BODY"); + print "# $body\n"; + my $chat = $self->Invoke("GET CHATMESSAGE $id CHATNAME"); + my $o = $self->Invoke($body); + print "# $o\n"; + $self->Invoke("CHATMESSAGE $chat $o"); + } + # be careful with what you return here! DBus will try to serialize it, # returning it to skype. you should explicitely return something # simple to avoid to leak something unserializable, causing odd errors. @@ -67,7 +77,13 @@ sub Invoke { # this doesn't print $string, so that subclasses can call it without # that side effect. subclass it yourself if you want it to do that. my ($self, $string) = @_; - return $self->{invoker}->Invoke($string); + print "Invoke -> $string\n"; + my $response = $self->{invoker}->Invoke($string); + print "Invoke <- $response\n"; + if ( $string =~ s/^get //i ) { + $response =~ s/^\Q$string\E *//; + } + return $response; } package Example; # ------------------------------------------------------------