FreeSWITCH talks to MS Teams
Voy explicar como logre conectar FreeSWITCH con MS Team.
Para configurar MS TEAMS ver Kamailio SBC MS Teams
Escenario confirmado.
flowchart LR
MSTeams["MS Teams
v.2023.6.21.5
"]
PBX["FreeSWITCH
v1.10.10
"]
MSTeams ---|TLS/PUBLIC IP| PBX
Funcionalidades confirmadas:
- Llamadas MSTeams a PBX
- Llamadas PBX a MSTeams
- MSTeams Hold
- MSTeams Park
- MSTeams Unpark
Crear sofia profile para ser usado en las conexiones a MS Teams,
en este profile habilitar:
<param name="tls-only" value="true"/>
<param name="full-id-in-dialplan" value="true"/>
<param name="inbound-use-callid-as-uuid" value="true"/>
<param name="outbound-use-uuid-as-callid" value="true"/>
crear pasarela a MS Teams:
<!-- sustituir mysbc.bit4bit.in por el nombre registrado en MS Teams -->
<gateway name="mysbc.bit4bit.in">
<param name="realm" value="mysbc.bit4bit.in"/>
<param name="register" value="false"/>
<param name="caller-id-in-from" value="true"/>
<param name="contact-in-ping" value="true"/>
<param name="contact-host" value="mysbc.bit4bit.in"/>
<param name="extension-in-contact" value="true"/>
<param name="ping" value="30"/>
<param name="register-transport" value="tls"/>
<param name="cid-type" value="pid"/>
</gateway>
al refrescar los perfiles y pasarelas en FreeSWITCH, ya podríamos ver que tenemos conexiones en ambos sentidos.
Ahora para lanzar llamadas al MS Teams desde FreeSWITCH.
<condition...>
<action application="export" data="nolocal:sip_secure_media=true"/>
<action application="export" data="nolocal:rtp_secure_media=true"/>
<action application="bridge" data="{absolute_codec_string=G722}sofia/gateway/mysbc.bit4bit.in/+NUMERO"/>
</condition>
Y para gestionar Hold y Transferencias desde MS Teams.
<extension name="refer-msteams extract referred_by" continue="true">
<condition field="${sip_refer_to}" expression="microsoft\.com"/>
<condition field="${sip_h_Referred-By}" expression="^<(.+)>$">
<action application="set" data="sip_referrer_by_extracted=$1"/>
</condition>
</extension>
<extension name="refer-msteam">
<condition field="${sip_refer_to}" expression="microsoft\.com"/>
<condition field="${sip_referrer_by_extracted}" expresion="(.+)">
<action application="export" data="nolocal:sip_invite_to_uri=$1"/>
<action application="export" data="nolocal:sip_invite_req_uri=$1"/>
<action application="export" data="nolocal:sip_secure_media=true"/>
<action application="export" data="nolocal:rtp_secure_media=true"/>
<action application="bridge" data="{absolute_codec_string=G722}sofia/gateway/mysbc.bit4bit.in"/>
</condition>
</extension>
Para recibir llamadas desde MS Teams, debemos ajustar los planes de la siguiente manera.
<!-- las llamadas desde MS Teams llegarian como 31000@mysbc.bit4bit.in -->
<condition field="destination_number" expresion="^3(\d{9})@.+$">
...
<action application="set" data="sip_secure_media=true"/>
<action application="set" data="disable_q850_reason=true"/>
...