[Freeswitch-users] Audio Bridge to Asterisk from Freeswitch video conference

Zach Rothy zrothy at monmouth.com
Tue May 9 21:26:38 UTC 2017


Good Afternoon,

I currently have a video conference which users connect to via the Verto 
library. I was looking to enhance this conference by also allowing users 
to join audio-wise to the video conference by making a bridge/call to my 
asterisk server which hosts audio conference rooms. Currently I have the 
conference_set_auto_outcall making the call via sip to the asterisk 
server, but ran into a couple of issues after asterisk and the 
freeswitch servers establish the call.

The first issue, though it may be on purpose, is that when I use the 
ghost flag for the member it seems RTP is never delivered to my verto 
endpoint from the sip call to the asterisk as well as the other way 
around. Though I clearly see freeswitch is recognizing energy detection 
from my asterisk conference, as I see the talking flag appear but no 
audio is heard from it on the verto client. It is the same the other way 
around, where I will talk via a mic on my verto client, but never hear 
it on the asterisk side of things. Though for asterisk it does not even 
seem to be sending audio to the asterisk server.

I'd prefer to use the ghost flag as I do with screen sharing so that the 
audio bridge does not count as a user for the video conference, of 
course I can always get around this by just bumping up the max users by 
one too if the user decides to use the bridge.

The second issue might be more of a misconfiguration issue, but I am a 
bit stuck on where to check. For other times when I don't have the ghost 
or any flag set for the outbound bridge call, things work as expected. I 
can transmit and hear audio from both ends to the other one without any 
issue. Though even though Freeswitch knows the bridged call has no video 
since has_video is set to false in conference <Room> xml_list, it seems 
to still try to use that as the presenter / floor occasionally. During 
these times I get the following in fs_cli constantly 2017-05-09 
17:10:05.742387 [WARNING] switch_core_media.c:11459 
sofia/internal/352650 at asterisk-server has no video codec wher asterisk 
server is actually the IP/dns host name of the asterisk server I develop 
with.

Ideally if I were not to use the ghost flag I'd want it to treat this 
bridged call as audio only and not constantly spew that warning message. 
Some ideas I haven't tested yet as I am not too familiar with freeswitch 
besides verto/mod_conference a bit, was to see if I could have it join 
the conference with an audio only profile maybe, or somehow set the SIP 
not to try offering video maybe. Any ideas?

Here is the profile and dialplan I was using to test

Conference profile (returned from mod_xml_curl):

<document type="freeswitch/xml">
  <section name="configuration">
   <configuration name="conference.conf" description="Conf Profiles">
    <profiles>
     <profile name="3525236">
      <param name="domain" value="$${domain}"/>
      <param name="rate" value="48000"/>
      <param name="channels" value="2"/>
      <param name="interval" value="20"/>
      <param name="energy-level" value="200"/>
      <param name="muted-sound" value="conference/conf-muted.wav"/>
      <param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
      <param name="alone-sound" value="conference/conf-alone.wav"/>
      <param name="hold-music" value="$${hold_music}"/>
      <param name="enter-sound" 
value="tone_stream://%(200,0,500,600,700)"/>
      <param name="exit-sound" 
value="tone_stream://%(500,0,300,200,100,50,25)"/>
      <param name="kicked-sound" value="conference/conf-kicked.wav"/>
      <param name="locked-sound" value="conference/conf-locked.wav"/>
      <param name="is-locked-sound" 
value="conference/conf-is-locked.wav"/>
      <param name="is-unlocked-sound" 
value="conference/conf-is-unlocked.wav"/>
      <param name="pin-sound" value="conference/conf-pin.wav"/>
      <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
      <param name="caller-id-name" value="$${outbound_caller_name}"/>
      <param name="caller-id-number" value="$${outbound_caller_id}"/>
      <param name="comfort-noise" value="false"/>
      <param name="conference-flags" 
value="video-floor-only|rfc-4579|livearray-sync|minimize-video-encoding|livearray-json-status|video-required-for-canvas|video-mute-exit-canvas"/>
      <param name="video-mode" value="passthrough"/>
      <param name="video-layout-name" value="1x1"/>
      <param name="video-layout-name" value="group:grid"/>
      <param name="video-canvas-size" value="1920x1080"/>
      <param name="video-canvas-bgcolor" value="#333333"/>
      <param name="video-layout-bgcolor" value="#000000"/>
      <param name="video-codec-bandwidth" value="1mb"/>
      <param name="video-fps" value="15"/>
      <param name="max-members-sound" 
value="conference/conf-conference_is_full.wav"/>
      <param name="endconf-grace-time" value="30"/>
      <param name="max-members" value="30"/>
     </profile>
    </profiles>
   </configuration>
  </section>
</document>


Dialplan(Returned from mod_xml_curl):

<document type="freeswitch/xml">
  <section name="dialplan" description="Dialplan routing">
   <context name="default">
    <extension name="3525236">
     <condition field="destination_number" 
expression="^3525236-moderator$">
      <action application="set" data="api_hangup_hook=system ROOM=3525236 
VCONFID=239 /usr/local/bin/flip_conference_flag.sh"/>
      <action application="answer"/>
      <action application="set" 
data="conference_auto_outcall_timeout=5"/>
      <action application="set" 
data="conference_utils_auto_outcall_flags=ghost"/>
      <action application="set" 
data="conference_auto_outcall_caller_id_name=$${effective_caller_id_name}"/>
      <action application="set" 
data="conference_auto_outcall_caller_id_number=$${effective_caller_id_number}"/>
      <action application="set" 
data="conference_auto_outcall_profile=3525236"/>
      <action application="conference_set_auto_outcall" 
data="sofia/internal/352650 at asterisk_server_hostname"/>
      <action application="sleep" data="2000"/>
      <action application="conference" 
data="3525236 at 3525236+flags{moderator|endconf}"/>
      <action application="hangup"/>
     </condition>
    </extension>
   </context>
  </section>
</document>


Thanks in advance,
Zach



More information about the FreeSWITCH-users mailing list