/ / Asterisk AGI: Wie bekomme oder setze ich den Wert einer globalen Variablen? - PHP, Sternchen, Telefonie, Agi

Asterisk AGI: Wie bekomme oder setze ich den Wert einer globalen Variable? - php, asterisk, Telefonie, agi

Ich verwende Asterisk 1.8 mit PHP für AGI-Scripting.

BEARBEITEN:

Ich habe Schwierigkeiten mit dem Setzen und Abrufen der Werte globaler Variablen aus einem AGI-PHP-Skript. Ich kann Kanalvariablen festlegen, jedoch keine globalen Variablen.

Versucht:

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

Das scheint überhaupt nicht zu funktionieren, wenn der Wert aus dem Wählplan abgerufen wird, ist er leer.

Hat jemand ein funktionierendes Beispiel für das Setzen und Abrufen globaler Variablen in einem AGI-Skript?

Antworten:

2 für die Antwort № 1

Ich habe eine Problemumgehung gefunden, damit es funktioniert.

Erstens darf die globale Variable nicht deklariert werdenim Wählplan unter dem Abschnitt [globals]. Es scheint, dass Sie keine globale Variable innerhalb eines AGI-Skripts festlegen können. Sie können jedoch eine Kanalvariable festlegen (lokal für den aktuellen Kanal). Um eine globale Variable aus einem AGI-Skript festzulegen, setzen Sie zunächst den Wert auf eine Kanalvariable. Wenn Sie vom Skript in den Wählplan zurückkehren, rufen Sie den Wert der Kanalvariablen ab und weisen ihn einer globalen Variablen zu. Grundsätzlich scheint es, dass Sie globale Variablen nur innerhalb des Wählplans und nicht innerhalb eines AGI-Skripts zuweisen können.

Beispielcode:

//in dial plan

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


// in myagiscript.php

$agi->set_variable("myLocalVar", "value");

0 für die Antwort № 2

Sternchen Wiki-Info zu AGI sagt verschiedene Dinge über globale Variablen: ... Globale Variablen werden auf diese Weise nicht an das AGI-Skript übergeben. Sie müssen sie mit dem AGI-Befehl "get variable" erhalten ...

und an anderer Stelle: ... GET VARIABLE: Funktioniert nicht mit globalen Variablen. Funktioniert nicht mit einigen Variablen, die von Modulen generiert werden.

Zur Einstellung des globalen Wertes können Sie Folgendes ausführen:

EXEC SetGlobalVar <var_name>=<value>

Um das Ding zu bekommen get_variable sollte funktionieren aber es war ein Fehler in Asterisk: https://issues.asterisk.org/view.php?id=7609

Dieser Fehler war in Asterisk 1.2.20. Welche Version von Asterisk verwenden Sie?