diff --git a/contrib/vertobot/bot.pl b/contrib/vertobot/bot.pl index 085290508..828fc4878 100755 --- a/contrib/vertobot/bot.pl +++ b/contrib/vertobot/bot.pl @@ -62,6 +62,8 @@ my $bot_verto = Net::Async::WebSocket::Client->new( ); $loop->add( $bot_verto ); +my $sessid = lc new Data::UUID->create_str(); + my $bot_matrix = Net::Async::Matrix->new( %MATRIX_CONFIG, on_log => sub { warn "log: @_\n" }, @@ -79,20 +81,18 @@ my $bot_matrix = Net::Async::Matrix->new( $bot_matrix_rooms{$room->room_id} = $room; # log in to verto on behalf of this room - my $sessid = lc new Data::UUID->create_str(); $bridgestate->{$room->room_id}->{sessid} = $sessid; $room->configure( on_message => \&on_room_message, ); - Future->wait_all( - send_verto_json_request("login", { + my $f = send_verto_json_request("login", { 'login' => $CONFIG{'verto-dialog-params'}{'login'}, 'passwd' => $CONFIG{'verto-config'}{'passwd'}, 'sessid' => $sessid, - }), - )->get; + }); + $matrix->adopt_future($f); # we deliberately don't paginate the room, as we only care about # new calls @@ -133,11 +133,12 @@ sub on_unknown_event # XXX: collate using the right m= line - for now assume audio call $offer =~ s/(a=rtcp.*[\r\n]+)/$1$candidate_block/; - send_verto_json_request("verto.invite", { + my $f = send_verto_json_request("verto.invite", { "sdp" => $offer, "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, - })->get; + }); + $matrix->adopt_future($f); } else { # ignore them, as no trickle ICE, although we might as well @@ -149,10 +150,11 @@ sub on_unknown_event } elsif ($event->{type} eq 'm.call.hangup') { if ($bridgestate->{$room_id}->{matrix_callid} eq $event->{content}->{call_id}) { - send_verto_json_request("verto.bye", { + my $f = send_verto_json_request("verto.bye", { "dialogParams" => \%dp, "sessid" => $bridgestate->{$room_id}->{sessid}, - })->get; + }); + $matrix->adopt_future($f); } else { warn "Ignoring unrecognised callid: ".$event->{content}->{call_id};