Asterisk and Google Voice (chan_motif)

Home » Asterisk Users » Asterisk and Google Voice (chan_motif)
Asterisk Users No Comments

Today I started to experiment with google Voice and Asterisk-11.0.1.

Following the instructions on the wiki (https://wiki.asterisk.org/wiki/display/AST/Calling+using+Google), I was able to make/receive calls quite easily with a single account on asterisk.

Then I tried to add a second Google Voice account to Asterisk, and make calls between accounts. I defined a second connection in xmpp.conf, a second account in chan_motif (see relevant configuration below).

I’m getting the following error:

ERROR[28651][C-00000002]: chan_motif.c:1971 jingle_interpret_ice_udp_transport: Incomplete ICE-UDP candidate received on session (see full log below)

Should I open a bug report or did I make an mistake in configuration?
motif.conf:

[google-jd]
context=incoming-motif
disallow=all
allow=speex
allow=ulaw
allow=g722
allow=h264
allow=alaw connection=google-jd
; xmpp.conf

[google-cathy]
context=incoming-motif
disallow=all
allow=speex
allow=ulaw
allow=g722
allow=h264
allow=alaw
connection=google-cathy
; xmpp.conf

 

xmpp.conf:

[google-jd]
type=client
serverhost=talk.google.com
username=jeandenis.girard@gmail.com
secret=xxxxxxxxxx
priority=1
port=5222
usetls=yes
usesasl=yes
status=available
statusmessage="Disponible – GMT-10 !"
timeout=5

[google-cathy]
type=client
serverhost=talk.google.com
username=cathy.fourny@gmail.com
secret=xxxxxxxx
priority=1
port=5222
usetls=yes
usesasl=yes
status=available
statusmessage="Disponible – GMT-10 !"
timeout=5

 

extensions.conf:

[incoming-motif]
exten => s,1,NoOp()
same => n,Wait(1)
same => n,Answer()
same => n,SendDTMF(1)
same => n,Dial(SIP/FYJmmzJ3,20)

 

call log:

== Using SIP VIDEO TOS bits 136
== Using SIP VIDEO CoS mark 6
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
— Executing [711112@i9PuqEcv:1] Dial("SIP/i9PuqEcv-00000002", "Motif/google-jd/cathy.fourny@gmail.com,,r") in new stack to=’cathy.fourny@gmail.com/asterisk-xD2C13566′ type=’set’ id=’aaaao’> xmlns=’urn:xmpp:jingle:1′ initiator=’jeandenis.girard@gmail.com/asterisk-xBEE0DF06′> name=’speex’ channels=’1′ clockrate=’8000’/> name=’PCMU’ channels=’1′ clockrate=’8000’/> name=’G722′ channels=’1′ clockrate=’8000’/> name=’PCMA’ channels=’1′ clockrate=’8000’/> name=’telephone-event’ channels=’1′ clockrate=’8000’/>

— Called Motif/google-jd/cathy.fourny@gmail.com

to="cathy.fourny@gmail.com/asterisk-xD2C13566" type="set"
id="aaaao"> initiator="jeandenis.girard@gmail.com/asterisk-xBEE0DF06"
xmlns="urn:xmpp:jingle:1"> name="audio"> xmlns="urn:xmpp:jingle:apps:rtp:1"> channels="1" clockrate="8000"/> channels="1" clockrate="8000"/> channels="1" clockrate="8000"/> channels="1" clockrate="8000"/> name="telephone-event" channels="1"
clockrate="8000"/>

to=’jeandenis.girard@gmail.com/asterisk-xBEE0DF06′ id=’aaaao’/>
to=’jeandenis.girard@gmail.com/asterisk-xBEE0DF06′ type=’set’
id=’aaaaj’> xmlns=’urn:xmpp:jingle:1′> name=’audio’>
pwd=’4b4001b575f3c7b824e14d9436d5f466′
ufrag=’6c28e0a07a5269e82ee313d916a046f7′> foundation=’583375015′ generation=’0′ id=’0a86′ ip=’192.168.1.1′ port=’16384′ priority=’2130706431′ protocol=’udp’
type=’host’/> generation=’0′ id=’3c7f’ ip=’192.168.0.10′ port=’16384′
priority=’2130706431′ protocol=’udp’ type=’host’/> ip=’123.50.122.114′ port=’16384′ priority=’2130706431′ protocol=’udp’
type=’host’/> generation=’0′ id=’cc6e’ ip=’192.168.1.1′ port=’16385′
priority=’2130706430′ protocol=’udp’ type=’host’/> ip=’192.168.0.10′ port=’16385′ priority=’2130706430′ protocol=’udp’
type=’host’/> generation=’0′ id=’aaf7′ ip=’123.50.122.114′ port=’16385′
priority=’2130706430′ protocol=’udp’
type=’host’/>

— Executing [s@incoming-motif:1]
NoOp("Motif/jeandenis.girard-646f", "") in new stack
— Executing [s@incoming-motif:2]
Wait("Motif/jeandenis.girard-646f", "1") in new stack
to="jeandenis.girard@gmail.com/asterisk-xBEE0DF06" id="aaaao"/>
to=’cathy.fourny@gmail.com/asterisk-xD2C13566′ type=’set’
id=’aaaap’> xmlns=’urn:xmpp:jingle:1′> name=’audio’>
pwd=’2058a64771e310fd576c563678cccd67′
ufrag=’049597be78a9a2b91e37321e54d923c7′> foundation=’583375015′ generation=’0′ id=’7b63′ ip=’192.168.1.1′
port=’16118′ priority=’2130706431′ protocol=’udp’
type=’host’/> generation=’0′ id=’37c5′ ip=’192.168.0.10′ port=’16118′
priority=’2130706431′ protocol=’udp’ type=’host’/> ip=’123.50.122.114′ port=’16118′ priority=’2130706431′ protocol=’udp’
type=’host’/> generation=’0′ id=’7732′ ip=’192.168.1.1′ port=’16119′
priority=’2130706430′ protocol=’udp’ type=’host’/> ip=’192.168.0.10′ port=’16119′ priority=’2130706430′ protocol=’udp’
type=’host’/> generation=’0′ id=’76d2′ ip=’123.50.122.114′ port=’16119′
priority=’2130706430′ protocol=’udp’
type=’host’/>

— Motif/cathy.fourny@gmail.com/asterisk-xD2C13566-2001 is proceeding passing it to SIP/i9PuqEcv-00000002
to="jeandenis.girard@gmail.com/asterisk-xBEE0DF06" type="set"
id="aaaaj"> xmlns="urn:xmpp:jingle:1"> name="audio">
ufrag="6c28e0a07a5269e82ee313d916a046f7"
xmlns="urn:xmpp:jingle:transports:ice-udp:1"> foundation="583375015" generation="0" id="0a86" ip="192.168.1.1"
port="16384" priority="2130706431" protocol="udp"
type="host"/> generation="0" id="3c7f" ip="192.168.0.10" port="16384"
priority="2130706431" protocol="udp" type="host"/> ip="123.50.122.114" port="16384" priority="2130706431" protocol="udp"
type="host"/> generation="0" id="cc6e" ip="192.168.1.1" port="16385"
priority="2130706430" protocol="udp" type="host"/><
candidate component="2" foundation="583378294" generation="0" id="5cb8"
ip="192.168.0.10" port="16385" priority="2130706430" protocol="udp"
type="host"/> generation="0" id="aaf7" ip="123.50.122.114" port="16385"
priority="2130706430" protocol="udp"
type="host"/>

[Nov 5 18:30:15] ERROR[28651][C-00000004]: chan_motif.c:1971
jingle_interpret_ice_udp_transport: Incomplete ICE-UDP candidate received on session ‘7e44df781ce623b6’
to=’cathy.fourny@gmail.com/asterisk-xD2C13566′ id=’aaaaj’/>
id=’aaaaq’> xmlns=’urn:xmpp:jingle:1′>

== Everyone is busy/congested at this time (1:0/0/1)
— Auto fallthrough, channel ‘SIP/i9PuqEcv-00000002’ status is ‘CHANUNAVAIL’
to="cathy.fourny@gmail.com/asterisk-xD2C13566" type="set"
id="aaaap"> xmlns="urn:xmpp:jingle:1"> name="audio">
ufrag="049597be78a9a2b91e37321e54d923c7"
xmlns="urn:xmpp:jingle:transports:ice-udp:1"> foundation="583375015" generation="0" id="7b63" ip="192.168.1.1"
port="16118" priority="2130706431" protocol="udp"
type="host"/> generation="0" id="37c5" ip="192.168.0.10" port="16118"
priority="2130706431" protocol="udp" type="host"/> ip="123.50.122.114" port="16118" priority="2130706431" protocol="udp"
type="host"/> generation="0" id="7732" ip="192.168.1.1" port="16119"
priority="2130706430" protocol="udp" type="host"/><
candidate component="2" foundation="583378294" generation="0" id="cedf"
ip="192.168.0.10" port="16119" priority="2130706430" protocol="udp"
type="host"/> generation="0" id="76d2" ip="123.50.122.114" port="16119"
priority="2130706430" protocol="udp"
type="host"/>

[Nov 5 18:30:15] ERROR[28652][C-00000005]: chan_motif.c:1971
jingle_interpret_ice_udp_transport: Incomplete ICE-UDP candidate received on session ‘7e44df781ce623b6’
to=’jeandenis.girard@gmail.com/asterisk-xBEE0DF06′ id=’aaaap’/>

== Spawn extension (incoming-motif, s, 2) exited non-zero on
‘Motif/jeandenis.girard-646f’
id=’aaaak’> xmlns=’urn:xmpp:jingle:1′>
to="cathy.fourny@gmail.com/asterisk-xD2C13566" id="aaaaj"/>
from="jeandenis.girard@gmail.com/asterisk-xBEE0DF06"> xmlns="urn:xmpp:jingle:1">
to=’jeandenis.girard@gmail.com/asterisk-xBEE0DF06′ id=’aaaaq’>
to="jeandenis.girard@gmail.com/asterisk-xBEE0DF06" id="aaaap"/>
id="aaaak" from="cathy.fourny@gmail.com/asterisk-xD2C13566"> xmlns="urn:xmpp:jingle:1">
to=’cathy.fourny@gmail.com/asterisk-xD2C13566′ id=’aaaak’>
to="jeandenis.girard@gmail.com/asterisk-xBEE0DF06" id="aaaaq">
to="cathy.fourny@gmail.com/asterisk-xD2C13566" id="aaaak">

 

UPDATE:

This was due to a bug corrected recently in the newer versions of Asterisk. The issue in question is that the candidates were indeed incomplete according to the specification because we were not putting a “network” attribute within them. Joshua Colp fixed this. He also made the ICE-UDP candidate interpretation code that output the message above more forgiving, specifically it no longer requires them. They are for debugging purposes and aren’t used in chan_motif.

This didn’t show up earlier since many clients just don’t require it, and Google Talk/Google Voice don’t use ICE-UDP candidates.