3

AGI スクリプト用に PHP でアスタリスク 1.8 を使用しています。

編集:

AGI PHP スクリプト内からグローバル変数の値を設定および取得するのに苦労しています。チャネル変数は設定できますが、グローバル変数は設定できません。PHPAGI lib の使用。

試した:

Set({$varname}={$value},g)
Set({$varname}=\"{$value}\",g)
Set(GLOBAL({$varname})={$value})

ダイヤル プラン内から値を取得すると、値が空になります。

AGIスクリプトでグローバル変数を設定および取得する実際の例はありますか?

4

2 に答える 2

2

私はそれを機能させるための回避策を見つけました。

まず、グローバル変数は、[グローバル]セクションのダイヤルプランで宣言してはなりません。また、AGIスクリプト内からグローバル変数を設定することはできないようです。ただし、チャネル変数(現在のチャネルに対してローカル)を設定できます。したがって、AGIスクリプトからグローバル変数を設定するには、最初に値をチャネル変数に設定し、スクリプトからダイヤルプランに戻るときに、チャネル変数の値を取得してグローバル変数に割り当てます。基本的に、グローバル変数はダイヤルプラン内からのみ割り当てることができ、AGIスクリプト内からは割り当てることができないようです。

サンプルコード:

//in dial plan

exten => _XXXX,n,AGI(myagiscript.php)
exten => _XXXX,n,Set(GLOBAL(someGlobalVariable)=${myLocalVar})


// in myagiscript.php

$agi->set_variable("myLocalVar", "value");
于 2011-09-30T19:07:20.723 に答える
0

AGI に関するアスタリスクwiki 情報では、グローバル変数についてさまざまなことが述べ られています。 ... グローバル変数は、この方法では AGI スクリプトに渡されません。「get variable」AGIコマンドを使用してそれらを取得する必要があります...

その他の部分: ...GET VARIABLE: グローバル変数では機能しません。モジュールによって生成される一部の変数では機能しません....

グローバル値を設定するには、次を実行できます。

EXEC SetGlobalVar <var_name>=<value>

動作するはずのものを取得するためにget_variable、アスタリスクにバグがありました: https://issues.asterisk.org/view.php?id=7609

このバグは Asterisk 1.2.20 にありました。使用している Asterisk のバージョンは何ですか?

于 2011-09-30T08:46:38.777 に答える