匿名

差分

Asterisk+Radio

2,159 バイト追加, 2024年10月18日 (金)
Asteriskから使う
exten => 8890,n,Hangup
ハングアップハンドラとしてPTTオフを登録します。
==電話機側も無線みたいに入りたい==
電話機側も複数入って無線区間とやりとりしたい場合には音声会議につっこむ手段があります。例えば無線レピータを以下のコマンドで会議、radioに参加させます。
channel originate PJSIP/phone10 application ConfBridge radio
これでConfBridge(radio)に電話機側から参加すれば無線区間同様に同時に通話できます。が、しかしPTTの制御ができないので少し工夫します。音声会議の場合、DTMFが音声会議のメニュー制御に取られるのでDYNAMIC_FEATURESの方法が使えないため、ConfBridgeのメニューでPTTを制御します。ただこのとき引数を受け付けないようなので、まずPTT制御用のextenを以下のように書きます。
[sub-pttctl2]
exten => s,1,NoOp
exten => s,n,Set(TARGET=phone10)
exten => s,n,Set(RCONTACT=${PJSIP_DIAL_CONTACTS(${TARGET})})
exten => s,n,Set(RCONTACT=${CUT(RCONTACT,@,2)})
exten => s,n,Set(RCONTACT=${CUT(RCONTACT,:,1)})
exten => s,n,System(echo "ALT" | /usr/bin/netwrite ${RCONTACT} 5091)
次にconfbridge.confには以下のような無線用メニューを書きます
[radiomenu]
type=menu
**=dialplan_exec(sub-pttctl2,s,1)
*1=toggle_mute
*4=decrease_listening_volume
*6=increase_listening_volume
*7=decrease_talking_volume
*8=leave_conference
*9=increase_talking_volume
"**"以外はまあ適当に。<br>
その上でダイヤルするには以下のように書きます
exten => 8891,1,NoOp
exten => 8891,n,Set(CHANNEL(hangup_handler_push)=sub-pttctl,s,1("OFF"))
exten => 8891,n,Answer
exten => 8891,n,ConfBridge(radio,,,radiomenu)
exten => 8891,n,Hangup
これで会議"radio"に参加するとPTTの制御もできるようになります。ただし『誰か』がPTTをオンにすると会議内の全員の声が無線に飛びますから、あまりわいわいしないようにとか、オンにしたのとは別な人がオフにもできるので運用上で注意してください。また、上の例ではPTTで発話中に誰かが回線を切るとPTTがオフになります。