2012-01-25 5 views
0

ユーザーとのやりとりが必要な複雑なダイヤルプランを実装しようとしています。この相互作用に基づいて、ダイヤルプランは別の部分にジャンプします。いくつかのサンプルコードは以下の通りである:上記のコードを実行するにはダイヤルプランでGotoIfを使用しているエラー

[test] 
;This is a test. 

exten => 0,n(qa1),NoOp() 
exten => 0,1,Verbose(1, "This is a test") 
exten => 0,n,Set(USER_ANSWER=0) 
exten => 0,n,Read(USER_ANSWER,,1,,2,10) 
exten => 0,n,Verbose(1, "User keyed in ${USER_ANSWER}") 

exten => 0,n,GotoIf($[$["${USER_ANSWER}"="1"] | $["${USER_ANSWER}"="2"]]?eval1:qa1) 
exten => 0,n,Verbose(1, "User keyed in ${USER_ANSWER}") 

exten => 0,n(eval),NoOp() 
... 
  1. は、アスタリスクは、上記GotoIf条件を評価した後にハングアップします。

    - ユーザーが入力した '1' - [0 @ test:19] Verbose( "DAHDI/13-1"、 "1"、1 ""でキー入力)を実行するとエラーメッセージが表示されます。新しいスタック内で "ユーザーが1を入力しました" - [0 @ test:20] GotoIf( "DAHDI/13-1"、 "1?eval1:qa1")を新スタックで実行する - Goto(test、0 、21) - 新しいスタックで[0 @ test:21] NoOp( "DAHDI/13-1"、 "")を実行中 [Jan 25 10:47:48]警告[29738]:pbx.c:3677 pbx_extension_helper:拡張機能(テスト、0、22)のために

私の質問

である 'の場合' いいえアプリケーション:

  1. エラーメッセージは何を意味していますか?
  2. どうすれば修正できるのですか?

答えて

0

GotoIfが正しく呼び出されます。ラベルeval1には、それに続くIfの文があります。アスタリスクにはIfステートメントはありません。 IfステートメントをExecIfに置き換えると、このトリックが実行されました。 AsteriskのCLIプロンプトで、次のコマンドを入力すると、使用可能なコマンドを知ることができます。 core show application <command name here>
上記のコマンドが出力を戻す場合は、そのコマンドを使用できます。

関連する問題