AsteriskNow その08(Gtalk をつなごう。加筆あり)

http://www16.atpages.jp/linuxer/wordpress/?p=186 を参考にさせていただきました。うまくいかないときには、一度 https://www.google.com/accounts/UnlockCaptcha にアクセスして、使用する google アカウントのロックを外してみると幸せになるかもです。

[size=large]iksemel のインストール[/size]
# cd /usr/local/src
# yum -y install gnutls-devel texinfo libtool mingw32-gnutls
# svn checkout http://svn.uludag.org.tr/projeler/iksemel iksemel
# cd iksemel
# ./autogen.sh
# ./configure –prefix=/usr –with-libgnutls-prefix=/usr –with-gnutls
# make
# make check
# make install

[size=large]asterisk 再コンパイル[/size]
# cd ../
# rm -Rf asterisk-1.6.2.20
# tar xzvf asterisk-1.6.2.20.tar.gz
# cd asterisk-1.6.2.20
パッチが /usr/local/src にある前提
# patch -p0 < ../app_voicemail.c.110420-01.patch # patch -p0 < ../say.c.110420-01.patch # ./configure # make # rm -f /usr/lib/asterisk/modules/app_addon_sql_mysql.so # rm -f /usr/lib/asterisk/modules/app_saycountpl.so # rm -f /usr/lib/asterisk/modules/cdr_addon_mysql.so # rm -f /usr/lib/asterisk/modules/chan_ooh323.so # rm -f /usr/lib/asterisk/modules/format_mp3.so # rm -f /usr/lib/asterisk/modules/res_config_mysql.so # make install # vi /etc/asterisk/jabber.conf

 [general] debug=no ;autoprune=no autoregister=yes [asterisk] type=client serverhost=talk.google.com username=ユーザー@gmail.com/Talk secret=パスワード port=5222 usetls=yes usesasl=yes buddy=ユーザー@gmail.com statusmessage="Connection with Asterisk Server" timeout=10000 

# vi /etc/asterisk/gtalk.conf

 [general] context=from-trunk allowguest=yes [guest] disallow=all allow=ulaw context=from-trunk [gtalk] username=ユーザー@gmail.com disallow=all allow=ulaw context=from-trunk connection=asterisk 

# vi /etc/asterisk/extensions_custom.conf ; 不要 (以下の部分を最後に付け加える。本来であれば gtalk だけでいいはずだが、なぜか default を見に行くので付け加えた。何が悪いか解明の必要あり。ってとこは、単に amportal restart で asterisk の再起動をしたら解決した。CLI で gtalk reload や jabber reload がうまく働かなかっただけであった。) しかし結局は、この部分は不要であった。DID をユーザー名@gmail.com(大文字はすべて小文字に)で、inbound rule を作るとそれにしたがって動作した。ということで、現在 /etc/asterisk/extensions_custom.conf の設定は削除してしまった。

 [gtalk] exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,MeetMe(会議室番号,scdpM)
exten => s,n,Hangup

[default]
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,MeetMe(会議室番号,scdpM)
exten => s,n,Hangup

# amportal restart

接続は確認できた。通話もOKであった。また、google アカウントによって着信動作の変更も可能であった。ただし、Windows7 64 bit 環境において、日本語版の Google Talk は着信後音声が聞こえなかった。英語版は問題なかった。 exolorer のプラグインからは発信音のみで応答できなかった。android 経由も発信音のみで接続されなかった。
これについては
Calling using Google Voice or via the Google Talk web client requires the use of Asterisk 1.8.1.1 or greater. The 1.6.x versions of Asterisk only support calls made using the legacy GoogleTalk external client.(出典 https://wiki.asterisk.org/wiki/display/AST/Calling+using+Google)とのことである。

[size=large]asterisk-1.8.7での動作[/size]
asterisk-1.8.7 をコンパイルして入れてみた。web 経由での通話もandroidからの通話も可能であった。ただし、inbound rule の DID Number で、 google アカウント名はandroid経由の場合はすべて小文字となり、web 経由の場合は大文字小文字の区別がある。Inbound Rule ではDIDに大文字小文字の区別がないのか、大文字小文字違いの別なルールが作成できないため、
# vi /etc/asterisk/extensions_additional.conf
で、Inbound Rule で作成した箇所を探し、([ext-did-0002であった)コピーして
# vi /etc/asterisk/extensions_custom.conf

[ext-did-0002-custom]
exten => ユーザー名@gmail.com,1,Set(__FROM_DID=${EXTEN})
exten => ユーザー名f@gmail.com,n,Gosub(app-blacklist-check,s,1)
exten => ユーザー名@gmail.com,n,ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)
=${CALLERID(num)}))
exten => ユーザー名@gmail.com,n,Set(__CALLINGPRES_SV=${CALLERPRES()})
exten => ユーザー名@gmail.com,n,Set(CALLERPRES()=allowed_not_screened)
exten => ユーザー名@gmail.com,n(dest-ext),Goto(ext-meetme,会議室番号,1)

を挿入した。DID 名を小文字だけとかに書き換えて戻すほうがスマートと思われるが、今のところこのままで(で、結局放置になりそう)

で、結局書き換えた。
# vi /etc/asterisk/extensions_custom.conf

[ext-did-0002-custom]
exten => 大文字小文字交じりユーザー名@gmail.com,1,Goto(全部小文字のユーザー名@gmail.com,1)

コメントを残す