Asterisk cmd Playtones

「Playtones」はextension.conf中に書くアプリケーションの一つで、通話相手にトーン音などを聞かせる事時などに使います。
回線を切断せずにビジー音を流したりすることも出来ます。

目次

使い方

トーン音を流す

exten => {電話番号},{プライオリティ},Playtones(トーン名|出したい音)

トーン音を止める

exten => {電話番号},{プライオリティ},StopPlaytones

書き方(1)

ダイヤル音や話中音を出したい時は、extensions.conf中に、このように書きます。
Asterisk_indications.confも参考にしてみてください。

; 4がダイヤルされると色々な音を流すサンプル
exten => _4,1,Answer
exten => _4,n,Wait(1)
exten => _4,n,Playtones(dial)   ←ダイヤル音を流す
exten => _4,n,Wait(3)       ←3秒間待つ(ダイヤル音が3秒流れ続ける)
exten => _4,n,Playtones(busy)   ←ビジー音を流す
exten => _4,n,Wait(3)       ←3秒間待つ(話中音が3秒流れ続ける)
exten => _4,n,Playtones(ring)
exten => _4,n,Wait(3)
exten => _4,n,Playtones(congestion)
exten => _4,n,Wait(3)
exten => _4,n,Playtones(callwaiting)
exten => _4,n,Wait(3)
exten => _4,n,Playtones(dialrecall)
exten => _4,n,Wait(3)
exten => _4,n,Playtones(record)
exten => _4,n,Wait(3)
exten => _4,n,Playtones(info)
exten => _4,n,Wait(3)
exten => _4,n,Playtones(stutter)
exten => _4,n,Wait(3)
exten => _4,n,StopPlaytones
exten => _4,n,Hangup

書き方(2)

直接トーン音の周波数、タイミングを指定することもできます。
Asterisk_indications.confを参照ください。

; 500番代のダイヤルがあったらトーン音を鳴らして内線発信をかける例
exten => _5XX,1,Answer
exten => _5XX,n,Playtones(400/50,0/50)
exten => _5XX,n,Wait(1)
exten => _5XX,n,Dial(SIP/${EXTEN}@192.168.0.44)
exten => _5XX,n,hangup

サンプル

チャイム

1がダイヤルされると、「ド~ミ~ソ~ド~ ド~ソ~ミ~ド~」のチャイムを鳴らして電話を切る

exten => _1,1,Answer
exten => _1,n,Wait(1)
exten => _1,n,Playtones(!261/330,!329/330,!391/330,!532/330,!0/330,!532/330,!391/330,!329/330,!261/330,0)
exten => _1,n,Wait(5)
exten => _1,n,StopPlaytones
exten => _1,n,Hangup

チャルメラ

2がダイヤルされると、チャルメラを奏でた後、電話を切る

exten => _2,1,Answer
exten => _2,n,Wait(1)
exten => _2,n,Playtones(!261/220,!293/220,!329/1200,0/330,!293/220,!261/220,0/220,!261/220,!293/220,!329/220,!293/220,!261/220,!293)
exten => _2,n,Wait(5)
exten => _2,n,StopPlaytones
exten => _2,n,Hangup

緊急警報信号風味

666がダイヤルされると、精神的ダメージを与えて電話を切る

exten => 666,1,Answer
exten => 666,n,Wait(1)
exten => 666,n,Playtones(640/16,1024/16,640/16,1024/16,640/16,1024/16,640/16,1024/16,1024/16,640/16,1024/16,640/16,1024/16,0/16)
exten => 666,n,Wait(1)
exten => 666,n,StopPlaytones
exten => 666,n,Playtones(640/16,1024/16,640/16,1024/16,640/16,1024/16,640/16,1024/16,1024/16,640/16,1024/16,640/16,1024/16,640/16,1024/16,640/16,1024/16,640/16,1024/16,640/16,0/16)
exten => 666,n,Wait(666)
exten => 666,n,Hangup

Playtonesのコツ

  • StopPlaytonesが出てくるまで流しっぱなし
  • Playtonesの処理が始まったら、すぐに次の処理が始まるので注意(音が鳴り終わってから次に進むわけでは無い)
    Wait文などを挟むとベター
  • Hz数は正の整数であること
  • 和音は同時2音のみ。(ファミコンの音を再現するのは無理)

失敗例

音が流れる前にStopPlaytones処理が始まってしまうサンプル

exten => _3,1,Answer
exten => _3,n,Wait(1)
exten => _3,n,Playtones(400)
exten => _3,n,StopPlaytones
exten => _3,n,Hangup

成功例

400Hzの音が2秒鳴り、停止するサンプル
Playtonesで流す音が2秒あるなら、Waitにて2秒追加すること。

exten => _3,1,Answer
exten => _3,n,Wait(1)
exten => _3,n,Playtones(400)
exten => _3,n,Wait(2)     ←ここがポイント
exten => _3,n,StopPlaytones
exten => _3,n,Hangup