「Extension Macro To Gosub」の版間の差分
(→参考) |
(→MacroからGosubへの移行) |
||
1行目: | 1行目: | ||
==MacroからGosubへの移行== | ==MacroからGosubへの移行== | ||
Asterisk 16からMacro()が廃止予定とされ、デフォルトではコンパイルされなくなりました(menuconfigで明示指定すれば使えます)。<BR> | Asterisk 16からMacro()が廃止予定とされ、デフォルトではコンパイルされなくなりました(menuconfigで明示指定すれば使えます)。<BR> | ||
+ | (以前から廃止したかったらしいが、ずるずると使用されていたので16で思い切ってデフォルトから外した模様)<BR> | ||
このためMacroで実装している場合にはGosubに書き換えることを推奨します。<BR> | このためMacroで実装している場合にはGosubに書き換えることを推奨します。<BR> | ||
Asterisk 13でもGosubは使用できますので早めの対策が良いです。<BR> | Asterisk 13でもGosubは使用できますので早めの対策が良いです。<BR> | ||
48行目: | 49行目: | ||
調査中ですが、たぶん影響を受けるはず。この場合にはU(Gosub)に置換できるはずです。 | 調査中ですが、たぶん影響を受けるはず。この場合にはU(Gosub)に置換できるはずです。 | ||
U( x^arg ) - Execute via Gosub the routine x for the called channel before connecting to the calling channel. Arguments can be specified to the Gosub using ^ as a delimiter. The Gosub routine can set the variable GOSUB_RESULT to specify the following actions after the Gosub returns | U( x^arg ) - Execute via Gosub the routine x for the called channel before connecting to the calling channel. Arguments can be specified to the Gosub using ^ as a delimiter. The Gosub routine can set the variable GOSUB_RESULT to specify the following actions after the Gosub returns | ||
+ | |||
==参考== | ==参考== | ||
https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Application_Gosub | https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Application_Gosub | ||
https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Application_Return | https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Application_Return |
2018年10月21日 (日) 18:11時点における版
MacroからGosubへの移行
Asterisk 16からMacro()が廃止予定とされ、デフォルトではコンパイルされなくなりました(menuconfigで明示指定すれば使えます)。
(以前から廃止したかったらしいが、ずるずると使用されていたので16で思い切ってデフォルトから外した模様)
このためMacroで実装している場合にはGosubに書き換えることを推奨します。
Asterisk 13でもGosubは使用できますので早めの対策が良いです。
変更の方法としては、これまでMacroで呼び出されるマクロはcontextにmacro-を指定していましたが、GosubはGosub(context,exten,pri)の呼び出し方に変わるため、Macro(hoge)で書いていたものを、Gosub(macro-hoge,s,1)のように書き換えます。またMacroExitしていた箇所をRetunに書き換える必要があります。
基本的な記述
extenで以下のように記述している場合
exten => s,n,Macro(hogehoge)
この場合Macroは以下のように定義されているはず
[macro-hogehoge] exten => s,1,NoOp exten => s,n,Some_app() exten => s,n,MacroExit
以下のように書き換えます
exten側
exten => s,n,Gosub(macro-hogehoge,s,1)
macro側
[macro-hogehoge] exten => s,1,NoOp exten => s,n,Some_app() exten => s,n,Retrun
引数がある場合
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
以下のように書き換えます
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,Retrun
contextにmacro-が付いているのがイヤだという場合にはここも書き換えましょう。ただし、サブルーチンだとわかりやすいので残しておいても構いませんし、何ならsub-みたいな接頭語を付けてもいいかもしれません。
Dial()コマンドのマクロ(M)
調査中ですが、たぶん影響を受けるはず。この場合にはU(Gosub)に置換できるはずです。
U( x^arg ) - Execute via Gosub the routine x for the called channel before connecting to the calling channel. Arguments can be specified to the Gosub using ^ as a delimiter. The Gosub routine can set the variable GOSUB_RESULT to specify the following actions after the Gosub returns
参考
https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Application_Gosub https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Application_Return