1 files changed, 25 insertions, 15 deletions
diff --git a/contrib/vertobot/bot.pl b/contrib/vertobot/bot.pl
index 0430a38aa8..31eed40925 100755
--- a/contrib/vertobot/bot.pl
+++ b/contrib/vertobot/bot.pl
@@ -126,12 +126,26 @@ sub on_unknown_event
if (!$bridgestate->{$room_id}->{gathered_candidates}) {
$bridgestate->{$room_id}->{gathered_candidates} = 1;
my $offer = $bridgestate->{$room_id}->{offer};
- my $candidate_block = "";
+ my $candidate_block = {
+ audio => '',
+ video => '',
+ };
foreach (@{$event->{content}->{candidates}}) {
- $candidate_block .= "a=" . $_->{candidate} . "\r\n";
+ if ($_->{sdpMid}) {
+ $candidate_block->{$_->{sdpMid}} .= "a=" . $_->{candidate} . "\r\n";
+ }
+ else {
+ $candidate_block->{audio} .= "a=" . $_->{candidate} . "\r\n";
+ $candidate_block->{video} .= "a=" . $_->{candidate} . "\r\n";
+ }
}
- # XXX: collate using the right m= line - for now assume audio call
- $offer =~ s/(a=rtcp.*[\r\n]+)/$1$candidate_block/;
+
+ # XXX: assumes audio comes first
+ #$offer =~ s/(a=rtcp-mux[\r\n]+)/$1$candidate_block->{audio}/;
+ #$offer =~ s/(a=rtcp-mux[\r\n]+)/$1$candidate_block->{video}/;
+
+ $offer =~ s/(m=video)/$candidate_block->{audio}$1/;
+ $offer =~ s/(.$)/$1\n$candidate_block->{video}$1/;
my $f = send_verto_json_request("verto.invite", {
"sdp" => $offer,
@@ -172,22 +186,18 @@ sub on_room_message
warn "[Matrix] in $room_id: $from: " . $content->{body} . "\n";
}
-my $verto_connecting = $loop->new_future;
-$bot_verto->connect(
- %{ $CONFIG{"verto-bot"} },
- on_connect_error => sub { die "Cannot connect to verto - $_[-1]" },
- on_resolve_error => sub { die "Cannot resolve to verto - $_[-1]" },
-)->then( sub {
- warn("[Verto] connected to websocket");
- $verto_connecting->done($bot_verto) if not $verto_connecting->is_done;
-});
-
Future->needs_all(
$bot_matrix->login( %{ $CONFIG{"matrix-bot"} } )->then( sub {
$bot_matrix->start;
}),
- $verto_connecting,
+ $bot_verto->connect(
+ %{ $CONFIG{"verto-bot"} },
+ on_connect_error => sub { die "Cannot connect to verto - $_[-1]" },
+ on_resolve_error => sub { die "Cannot resolve to verto - $_[-1]" },
+ )->on_done( sub {
+ warn("[Verto] connected to websocket");
+ }),
)->get;
$loop->attach_signal(
|