差分

移動先: 案内検索

Extension Macro To Gosub

2,592 バイト追加, 2018年10月28日 (日) 14:06
Dial()コマンドのマクロ(M)
==MacroからGosubへの移行==
Asterisk 16からMacro()が廃止予定とされ、デフォルトではコンパイルされなくなりました(menuconfigで明示指定すれば使えます)。<BR>
(以前から廃止したかったらしいが、ずるずると使用されていたので16で思い切ってデフォルトから外した模様)<BR>
このためMacroで実装している場合にはGosubに書き換えることを推奨します。<BR>
Asterisk 13でもGosubは使用できますので早めの対策が良いです。<BR><BR>変更の方法としては、これまでMacroで呼び出されるマクロはcontextにmacro-を指定していましたが、GosubはGosub(context,exten,pri)の呼び出し方に変わるため、Macro(hoge)で書いていたものを、Gosub(macro-hoge,s,1)のように書き換えます。またMacroExitしていた箇所をRetunに書き換える必要があります。
===基本的な記述===
extenで以下のように記述している場合
exten => s,1,NoOp
exten => s,n,Some_app()
exten => s,n,RetrunReturn===引数がある場合===extenで以下のように記述している場合 exten => s,n,Macro(hogehoge,HOG1,HOG2)この場合Macroは以下のように定義されているはず [macro-hogehoge] exten => s,1,NoOp exten => s,n,NoOp(${ARG1}) exten => s,n,NoOp(${ARG2}) exten => s,n,Some_app() exten => s,n,MacroExit<BR>以下のように書き換えます<BR>exten側 exten => s,n,Gosub(macro-hogehoge,s,1(HOG1,HOG2))macro側 [macro-hogehoge] exten => s,1,NoOp exten => s,n,NoOp(${ARG1}) exten => s,n,NoOp(${ARG2}) exten => s,n,Some_app() exten => s,n,Returncontextにmacro-が付いているのがイヤだという場合にはここも書き換えましょう。ただし、サブルーチンだとわかりやすいので残しておいても構いませんし、何ならsub-みたいな接頭語を付けてもいいかもしれません。 ===Dial()コマンドのマクロ(M)===Asterisk 13のDial()で、Dialコマンドのマクロ(M)はapp_macroには依存していない。app_macroがない状態でもMオプションは動作する。<br>Asterisk 16のDial()ではDialコマンドのマクロ(M)も動作しなくなる。移行が必要。<BR>→何となくコンパイル時オプションのような気がしている(app_macroをコンパイルしないとDialにも組み込まない) Dial(SIP/201,,M(hoge,1,2,3))これは Dial(SIP/201,,U(macro-hoge,1,2,3))で書き換えが可能。ただしmacro-hogeは最後がReturnになるように書き足すことが必要です。<BR>DialマクロからのGosub呼び出しは何も指定しないとGosub(hoge,s,1)と同じになるので呼び出し元はUに書き換え、頭にmacro-を付けるだけです。 ===荒療治でのチェック方法===Asterisk CLIから module unload app_macroを実行し、Macroを無効にした状態でextenを走らせて落ちる箇所を探す。 ==参考==https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Application_Gosubhttps://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Application_Return

案内メニュー

VoIp-Info.jp

HP Directplus -HP公式オンラインストア-