set_output to tcp port
[skype-conference-recorder.git] / SkypeAPI.pm
index 60aa306..26683b5 100644 (file)
@@ -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; # ------------------------------------------------------------
@@ -90,6 +106,13 @@ sub Notify {
                # away mode is no good!  let's be not available
                $self->Invoke('SET USERSTATUS NA');
        }
+
+       if ( $string =~ m{CALL (\d+) STATUS INPROGRESS} ) {
+               my $call_id = $1;
+               my $port = 5000;
+               $self->Invoke(qq|ALTER CALL $call_id set_output port="$port"|);
+       }
+
        return 0;
 }