「AquesTalkPi」の版間の差分

提供: VoIP-Info.jp
移動先: 案内検索
(ページの作成:「AquesTalkPiをAsteriskにインテグレーションする。簡単! ==AquesTalkPiの入手とインストール== *AquesTalkPi :https://www.a-quest.com/products/aquest...」)
 
(Asteriskマクロの作成)
10行目: 10行目:
 
==Asteriskマクロの作成==
 
==Asteriskマクロの作成==
 
次のようなマクロをつくる
 
次のようなマクロをつくる
 +
;AquesTalkPiによる音声合成用マクロ
 
  [macro-AquesTalkPi]
 
  [macro-AquesTalkPi]
 
  exten => s,1,NoOp(AquesTalkPi)
 
  exten => s,1,NoOp(AquesTalkPi)
 
  exten => s,n,Set(ID=${CHANNEL})
 
  exten => s,n,Set(ID=${CHANNEL})
 
  exten => s,n,Set(FN=${CUT(ID,/,2)})
 
  exten => s,n,Set(FN=${CUT(ID,/,2)})
  exten => s,n,System(/usr/lib/asterisk/atp/AquesTalkPi ${ARG1} > /tmp/${FN}.wav)
+
exten => s,n,Set(FN=/tmp/${FN})
  exten => s,n,Playback(/tmp/${FN})
+
exten => s,n,Set(CHANNEL(hangup_handler_push)=atp-rm-hdlr,s,1(${FN}));
  exten => s,n,System(rm -f /tmp/${FN}.wav)
+
  exten => s,n,System(/usr/lib/asterisk/atp/AquesTalkPi ${ARG1} > ${FN}.wav)
  exten => s,n,MacroExit
+
  exten => s,n(loop),Playback(${FN})
乱暴なので注意。テクノロジ/チャネル(e.g. SIP/phone-1)のよううな形なら問題ないが/が複数入るタイプは要変更。
+
exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="FAILED"]?endm)
 +
  exten => s,n,System(rm -f ${FN}.wav)
 +
  exten => s,n,Set(CHANNEL(hangup_handler_pop)=);
 +
exten => s,n(endm),MacroExit
 +
 +
;AquesTalkPi ファイル削除用ハンドラ
 +
[atp-rm-hdlr]
 +
exten => s,1,System(rm -f ${ARG1}.wav)
 +
exten => s,n,Return()
 +
乱暴なので注意。テクノロジ/チャネル(e.g. SIP/phone-1)のよううな形なら問題ないが/が複数入るタイプは要変更。<BR>
 +
再生中に回線断した場合に音声ファイルを削除するように修正。
 +
 
 
==使い方==
 
==使い方==
 
とても簡単
 
とても簡単

2018年5月9日 (水) 10:34時点における版

AquesTalkPiをAsteriskにインテグレーションする。簡単!

AquesTalkPiの入手とインストール

  • AquesTalkPi
https://www.a-quest.com/products/aquestalkpi.html
  • インストール
展開したファイル一式を/usr/lib/asterisk/atpの下に置く(ディレクトリごと)
drwxr-xr-x 2 pi pi 4096 8月 27 2013 aq_dic
-rwxr-xr-x 1 pi pi 281984 8月 27 2013 AquesTalkPi
-rw-r--r-- 1 pi pi 216 8月 17 2013 test.txt

Asteriskマクロの作成

次のようなマクロをつくる

;AquesTalkPiによる音声合成用マクロ
[macro-AquesTalkPi]
exten => s,1,NoOp(AquesTalkPi)
exten => s,n,Set(ID=${CHANNEL})
exten => s,n,Set(FN=${CUT(ID,/,2)})
exten => s,n,Set(FN=/tmp/${FN})
exten => s,n,Set(CHANNEL(hangup_handler_push)=atp-rm-hdlr,s,1(${FN}));
exten => s,n,System(/usr/lib/asterisk/atp/AquesTalkPi ${ARG1} > ${FN}.wav)
exten => s,n(loop),Playback(${FN})
exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="FAILED"]?endm)
exten => s,n,System(rm -f ${FN}.wav)
exten => s,n,Set(CHANNEL(hangup_handler_pop)=);
exten => s,n(endm),MacroExit

;AquesTalkPi ファイル削除用ハンドラ
[atp-rm-hdlr]
exten => s,1,System(rm -f ${ARG1}.wav)
exten => s,n,Return()

乱暴なので注意。テクノロジ/チャネル(e.g. SIP/phone-1)のよううな形なら問題ないが/が複数入るタイプは要変更。
再生中に回線断した場合に音声ファイルを削除するように修正。

使い方

とても簡単

exten => 8765,1,Macro(AquesTalkPi,明日の天気は晴れ)
exten => 8765,n,Hangup

AquesTalkPiに引数(オプション)を渡したければマクロを修正してARGを複数にすれば良いかも。