Probleme mit Asterisk-API: originate geht, hangup nicht

mahla

Neuer User
Mitglied seit
12 Jul 2005
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Hallo

ich habe ein kleines Problem mit der Asterisk API.
Ich schaffe es inzwischen mich einzuloggen und eine Verbindung für eine SIP Nebenstelle aufzubauen:
Code:
Action: login
Events: off
Username: admin
Secret: *****

Action: originate
Channel: SIP/120
Exten: 08955555555
Context: from-internal

Aber wenn ich versuche den Anruf zu beenden klappt das leider nicht...

Code:
Action: login
Events: off
Username: admin
Secret: *****

Action: hangup
Channel: SIP/120

Ich bekomme als Antwort immer nur "No such channel" obwohl der gleiche beim Verbindugsaufbau geklappt hat.

wäre über einen Tip sehr dankbar

Patrick
 
Hi!

SIP/120 ist auch nicht der "Name" des Channels.
Der Channel hat ein Zahlen-Buchstaben Salat als Name. Den sieht man glaube ich bei "sip show channels". Auch "Call ID" gennant z.B. 0C14050F46F.
Wobei SIP/120 Asterisk als "Owner channel ID" nennt.

Gruss
 
Zuletzt bearbeitet:
Hmm ist der "Buchstabensalat" immer gleich? (dann könnte ich mir das in eine Datenbank ablegen damit ich weiss wie ich die Nebenstellen ansprechen muss).
Falls das nicht der Fall ist (was ich mal glaube) ist die Frage wie ich möglichst leicht an die jeweils aktuelle Info für den entsprechenden Channel mit Hilfe der API komme...
mich wundert es nur das es bei "Action: originate" geklappt hat dann.

Patrick
 
so ich habe eine Lösung gefunden...

anbei mal ein Beispielcode in PHP für "Hangup"
Code:
## Verbindungsdaten
$strHost = "localhost";
$strUser = "admin";
$strSecret = "amp111";
$strChannel=$_REQUEST['exten'];

## Aktive Extensions auslesen
#Verbindung öffnen
$oSocket = fsockopen ($strHost", 5038, &$errno, &$errstr, 20);
if (!$oSocket) {
  print "Err: $errstr ($errno)<br>\n";
} else {
  # Einloggen
  fputs($oSocket, "Action: login\r\n");
  fputs($oSocket, "Events: off\r\n");
  fputs($oSocket, "Username: $strUser\r\n");
  fputs($oSocket, "Secret: $strSecret\r\n\r\n");
  # Status abfragen
  fputs($oSocket, "Action: Status\r\n\r\n");
  # Ausloggen
  fputs($oSocket, "Action: Logoff\r\n\r\n");
  # Ausgabe verarbeiten
  while (!feof($oSocket)) {
    $wrets = fgets($oSocket, 8192);
    list($com, $rest) = explode(":",$wrets,2);
    if($com == "Channel") {
      list($xtype, $rest2) = explode("/",$rest,2);
      if($xtype == " SIP") {
        list($sipexten, $rest3) = explode("-",$rest2,2);
        $array[$sipexten]=$rest;
        print "$sipexten  ->  $rest <br>\n"; #Debugmeldung
      }
    }
  }
  # Verbindung schliessen
  sleep(2);
  fclose($oSocket);

## Hangup durchführen

  # 2. Verbindung aufbauen
  $oSocket = fsockopen ("localhost", 5038, &$errno, &$errstr, 20);
  if (!$oSocket) {
    echo "$errstr ($errno)<br>\n";
  } else {
    # Einloggen
    fputs($oSocket, "Action: login\r\n");
    fputs($oSocket, "Events: off\r\n");
    fputs($oSocket, "Username: $strUser\r\n");
    fputs($oSocket, "Secret: $strSecret\r\n\r\n");
    # Aktion ausführen
    list($bad,$channum)=explode("/",$strChannel,2);
    $activechan = trim($array[$channum]);
    echo "Hangup...  $strChannel /$activechan <br>"; #Debugmeldung
    fputs($oSocket, "Action: hangup\r\n");
    fputs($oSocket, "Channel: $activechan\r\n\r\n");
    break;
    # Ausloggen und Verbindung schliessen
    fputs($oSocket, "Action: Logoff\r\n\r\n");
    fclose($oSocket);
  }
}

Aufruf dann mit ?exten=SIP/xxx in der URL wobei SIP/xxx die Nebenstelle ist die auflegen soll.
Ich hoffe das Script hilft jemanden der evtl. mal das gleiche Problem wie ich hat.
Ausserdem habe ich auch noch was geschrieben für die Monitor Funktion - falls jemand Interesse hat kurze PN bitte.

Patrick

P.S.
Ich wollte den Thread Titel noch auf [gelöst] ändern, aber irgendwie kann ich beim editieren das Topic nicht ändern leider. Ausserdem wollte ich noch hinzufügen: Verwendung des PHP Codes auf eigene Gefahr. Das ist noch eine sehr "rohe" Version ohne Sicherheitsabfragen die mitten in der Nacht geschrieben wurde und damit sicher ein paar Sicherheitslöcher/Bugs haben könnte :)
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
248,887
Beiträge
2,303,981
Mitglieder
378,566
Neuestes Mitglied
draco777