「Extension Macro To Gosub」の版間の差分

提供: VoIP-Info.jp
移動先: 案内検索
(MacroからGosubへの移行)
(Dial()コマンドのマクロ(M))
47行目: 47行目:
  
 
===Dial()コマンドのマクロ(M)===
 
===Dial()コマンドのマクロ(M)===
調査中ですが、たぶん影響を受けるはず。この場合にはU(Gosub)に置換できるはずです。
+
<del>調査中ですが、たぶん影響を受けるはず。この場合にはU(Gosub)に置換できるはずです。</del><br>
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
+
Asterisk 13での実行結果ではあるが、"Internal Gosub"に置換されているので影響受けない?(検証中)
 +
  -- SIP/demophone-00000xxb Internal Gosub(ch-afthang,s,1(1)) start
  
 
==参考==
 
==参考==
 
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月22日 (月) 10:59時点における版

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)に置換できるはずです。
Asterisk 13での実行結果ではあるが、"Internal Gosub"に置換されているので影響受けない?(検証中)

  -- SIP/demophone-00000xxb Internal Gosub(ch-afthang,s,1(1)) start

参考

https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Application_Gosub https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Application_Return