Rückrufknopf für Webseite

Hallo!

@Fredjam!
Ich sehe du nutzst auch VoIPOnCD und hast dir ein Webcall-Knopf gebastelt, wenn ich richtig verstehe.
Ich haette gerne ein Paar Fragen, da ich leider immer noch damit Probleme habe.

Wie sieht dein Callfile genau aus - so wie hier im Beispiel?
Ich frage deshalb weil, nur wenn ich im Channel-Feld SIP/xxxxx eintrage die Verbindung zwischen den beiden Telefon funktioniert (man kan den Partnet hoeren und beide Anrufe werden erfasst).
Sobald ich versuche, im Channel etwas anderes einzutragen, damit Asterisk den Diaplan in der MySQL-DB nutzt, baut Asterisk zwar die Verbindungen sauber auf - sowohl zu mersten Telefon als auch nach dem abnehmen zum zweiten, aber ich hoere die Gegenseite nicht und sie mich auch nicht.
Sprich wenn sowohl der erste als auch der zweite Call ueber DeadAGI(astcc.agi,account,nummer) laufen, wird alles schoen und sauber in der Datebank abgerechnet, aber man hoert sich nicht gegenseitig.

Beim SIP/xxxx dagegen hoert man sich gegenseitig gut, aber es wird doch immer nur das eine Gespraech berechnet - das zweite welche ueber astcc.agi laeuft - und das erste ueber SIP/xxx nicht. Weil astcc.agi macht doch die Eintraege in der DB, die dann wiederum VoIPOnCD in der Anrufliste anzeigt und bei SIP/xxxx wird ja nur in der CSV und die Tabelle asterisk.cdr. Aber um von VoIPOnCD berechnet und angezeigt zu werden in astcc.cdrs rein muss.
Oder irre ich mich?

Wie ist es bei dir? Werden bei dir beide Gespraeche erfasst? Benutzst du in beide Richtungen astcc.agi oder nur in die eine?

Danke dir vielmals in voraus!
Gruss
 
call.php
Code:
<?

if ($_REQUEST["call_nummer"]=="1")
{



       $num = $_REQUEST['nummer']; 
       $num = preg_replace( "/[^\d]/", "", $num ); 

       if ( ! empty( $num ) ) 
       { 
      
               echo "Wähle $num ...<br><br>"; 

               $timeout = 10; 
               $asterisk_ip = "55.66.346.120"; 
               $socket = fsockopen($asterisk_ip,"5038", $errno, $errstr, $timeout); 
               fputs($socket, "Action: Login\r\n"); 
               fputs($socket, "UserName: admin\r\n"); 
               fputs($socket, "Secret: 1234567\r\n\r\n"); 
               $wrets=fgets($socket,128); 
               fputs($socket, "Action: Originate\r\n" ); 
	       fputs($socket, "Channel: LOCAL/0211123456@webcall\r\n");
               fputs($socket, "Exten: $num\r\n" ); 
               fputs($socket, "Context: ausgehend2\r\n" ); 
               fputs($socket, "Priority: 1\r\n" ); 
               fputs($socket, "Callerid: 0211123456\r\n" ); 
               fputs($socket, "Async: no\r\n\r\n" ); 
               $wrets=fgets($socket,128); 

       } 
       else 
       { 
               echo "Die Nummer kann nicht ermittelt werden (" . $_REQUEST['link'] . ")\r\n"; 
       } 

}



echo '<html>';
echo '<head>';
echo '<title>Webcall</title>';
echo '</head>';
echo '<body>';


echo '<form method="post" name="<?php echo $PHP_SELF; ?>">';


echo 'Nummer : <input name="nummer" type="text" size="30" maxlength="30">';


echo '<input name="call_nummer" type="hidden" value="1">';
echo '<input type="submit" value=" Anrufen ">';
echo '</form>';


?>

Code:
[ausgehend2]  
exten => _.,1,SetCallerID(${CALLERIDNUM})
exten => _.,n,DeadAGI(astcc.agi|${CALLERIDNUM}|${EXTEN}|3)
exten => _.,n,Congestion
exten => _.,n,Hangup 


[webcall]
exten => _X.,1,SetCallerID(${EXTEN})
exten => _X.,n,noop(webcall)
exten => _X.,n,DeadAGI(astcc.agi,${EXTEN},${EXTEN}|3)
exten => _X.,n,Hangup

So sollte es eigedlich gehen vielleicht blickst du ja durch sonnst frag nach
Das prob was ich im moment noch habe ist halt das der den anruf an meine Festnetzt nummer nicht wirklich berechnet meistens steht der call dann nur 0 oder 1 sec in der DB also wird nich berechnet.... vielleicht findet ihr da eine lösung ich habe bis jetzt noch keine gefunden bin aber auf der suche...
 
Hi!

Werde ich mal gleich ausprobieren.
Muss aber gestehen das ich nicht auf die Idee gekommen bin beide Anrufe ueber extensions.conf zu definieren/machen.
Ich hatte nur webcall darueber gemacht und der andere Ruf direkt ueber die sippool extension in der DB abgewickelt.
OK, Ich versuche es mal. Es entgeht mir zwar wo genau der unterschied liegt wenn ich direkt auf die extesion in de DB zugreife, aber schauen wir mal ;-)

Allerdings bei mir fehlt auch: SetCallerID(${EXTEN})
Ist das Pflicht? Ich bin bis jetzt davon ausgegangen das es VoIP-Provider spezifisch ist und in diesem Fall nicht Pflicht ist - oder uebersehe ich da was?

Jetzt sehe ich das bei mit nicht Nummer 'n' bei _X.,n,DeadAGI staht sondern 2 - aber das duerfte doch nicht das Problem sein oder?

Danke! :)

Gruss
 
Zuletzt bearbeitet:
Hi!

Hm... funktioniert nicht ....

Hier mein Callfile (den ich vorerst per Hand im outgoing spool Ordner von Asterisk kopiere):
Code:
Channel: Local/004930123456@webcall
Extension: 004930654321
Context: webpool
Priority: 1
Callerid: 31
Account: 31
Und Extensions.conf:
Code:
[webcall]
exten => _X.,1,SetCallerID(${EXTEN})
exten => _X.,2,NoOp(CallerId ist ${CALLERID} )
exten => _X.,3,NoOp(AccCode ist ${ACCOUNTCODE} )
exten => _X.,n,DeadAGI(astcc.agi|${ACCOUNTCODE}|${EXTEN}|3)
exten => _X.,n,Hangup

[webpool]
exten => _.,1,SetCallerID(${CALLERIDNUM})
exten => _.,n,DeadAGI(astcc.agi|${CALLERIDNUM}|${EXTEN}|3)
exten => _.,n,Congestion
exten => _.,n,Hangup
Wobei webcall beim AGI Script wenn ich EXTEN statt Accountcode eintrage, keine externe Calls moeglich sind. Abgesehen davon, dass Accountcode eigentlich "richtiger" waere.

Wo mache ich den Fehler, verstehe ich nicht? Und wieso geht es mit SIP/xxxx und nicht mit DeadAGI?

Danke fuer eure Hilfe!
Gruss
P.S. Ich benutze Webcalldirect fuer das ganze...
 
ja das liegt an den beiden callerids änder die mal einmal in der PHP und einmal in der extentions. dann solte es gehen :) also auf 7001 .... welchen acc halt dir gehoert.
Also bei mir würde das mit der eigene callid gehen da ich die agi selber noch umgeschrieben habe. Deswegen müsst ihr 7001 oder so eintragen ;-)
SetCallerID(7001)
das muss sein sonnst weis der ja nicht bei dem das abgerechnet werden solll
@gerdshi rechnet der bei dir nur die eine seite ab oder beide gleichzeitig ?
 
Zuletzt bearbeitet:
Hi!

Fredjam schrieb:
ja das liegt an den beiden callerids änder die mal einmal in der PHP und einmal in der extentions. dann solte es gehen :) also auf 7001 .... welchen acc halt dir gehoert.
...
SetCallerID(7001)
Sowohl am webpool und webcall?
Weil bei dir ist es auch so - ich habe es ja von dir abgeschrieben?

Am Beispiel vielleicht? Ich habe ein Asterisk-Account 31 auf dessen Konto beide Anrufe verrechnet werden sollen.
Also muss SetCallerID in beide Contexte 31 gesetzt werden?
Aha...

@gerdshi rechnet der bei dir nur die eine seite ab oder beide gleichzeitig ?
Ja, beide, nur hoere ich nichts :-(

Gruss

P.S. Nein, es funktioniert nicht. Ich kann weiterhin die andere Seite nicht hoeren...
 
Hi!

So, bin jetzt etwas naeher gekommen:
- Wenn ich versuche zwei Festnetznummer zu verbinden und die Verbindungen gehen gleichzeitig ueber einen Betamax Anbieter, dann gibt es kein Ton. Beide Gesrpaeche werden richtig abgerechnet.
- Wenn sie ueber verschiedene Betamax-Konten gehen - ebenfalls kein Ton. Beide Gesrpaeche werden richtig abgerechnet.
- Wenn nur der eine Anruf ueber Betamax laeuft und der andere ueber ein SIP-Telefon - alles super - Ton kommt in bedie Richtungen. Nur das eine Gespraech wird berechnet, da das andere intern per SIP-Befehl laeuft.
- Wenn beide Anrufe zum Festnetz aber ueber verschiedene Provider laufen, z.B. Betamax und GMX - einwandfrei - Ton ist vorhanden. Das eine Gesrpaech wird richtig berechnet, das andere so wie bei Fredjam nur mit eine Laenge von 1sec.

Jetzt muss ich nur noch verstehen wieso es nicht moeglich ist beide Anrufe ueber Betamax zu leiten?!
Insbesondere, da ich ein anderen Asterisk habe wo (ohne mySQL, Realtime und DeadAGI) die ganze Geschite dennoch klappt, mit Ton in beide Richtungen.
Hat jemand eine Idee woran es liegen kann?
Und wieso wird einmal das Gespraech richtig berechnet, aber ohne Ton und ein mal falsch, dafuer hoert man aber den anderen Teilnehmer?

Danke!
Gruss
 
Zuletzt bearbeitet:
Also das mit der Berechnung würde ich gerne auch wissen denn das ist echt scheiße ^^
 
Vielleicht ein Loop? Bei Gmx hab ich öfter die Situation, dass ich einen Loop erzeuge, weil ich Gespräche über das Festnetz herstellen will, die Gmx aber über direkt über SIP herstellen will, was natürlich nicht gehen kann, wenn kein Client angemeldet ist. Aber die Sache mit der Abrechnung würde das auch nicht erklären.
 
Aber auch schon Rowi angefragt aber der konnte mir leider keinen Support geben :-/ würde mich echt brennend interessieren.
Werde mich noch mal in den Ferien intensiever dammit beschäftiegen.
Da mein Callthrought da wünderbar mit automatischernummernerkennung geht da wir hier für ja extra einträge in die DB und in die Agi gemacht haben will ich das jetzt auch noch zum laufen bekommen.
 
Hi!

Klar kann man es nutzen.
NUR: ob es wirklich eine gute Idee ist seine Logindaten einer unbekannten Firma/WebSeite zu uebermittlen?!
Da spreche ich fuer mich persoenlich: Nein, Danke! ;-)

Abgesehen davon, wenn es bei justvoip auch funktioniert, deutet es darauf hin, dass die Web-Seite von dem Betamax-Ableger genutzt wird, was zu 5ct. Verbindungsgebuehr mit sich fuehrt.

Am sonsten, ja, das kann man wirklich nutzen und ist deutlich einfacher.

Gruss
 
Als da ich ja eine Asterisk server habe kommt mir das nicht in die Tüte ^^ will das selber machen und schaffen :)
 
Hallo Leute,

sorry ich stehe mit dem Script nun total auf dem Schlauch.

Das Script macht erfolgreich eine Verbindung zu meinem Asterisk auf.

Ich möchte gerne das er Local einmal auf den SIPAccount 3002 verbindet und dann einmal die Rufnummer wählt die der jenige eingeben hat.
Nur irgendwie geht nix :D

In der Cli kommt folgendes:
Code:
== Spawn extension (ausgehend2, h, 3) exited non-zero on 'OutgoingSpoolFailed'
kann mir jemand mal sagen was ich jetzt wo eintragen muss ? Anscheinend hab ich jetzt irgendwo ne denk Blockade :D :D :D

Danke euch.

Gruss
 
Schreib mal dein extensions.conf deine SIp.conf und welche user beide dir angemeldet sind also welcher user registiert ist + Credits drauf hat.

ach ja und local anzurufen sollte so funktionieren

ganz einfach so sollte es gehen ^^
[ausgehend2]
exten => _.,1,SetCallerID(${CALLERIDNUM})
exten => _.,n,DeadAGI(astcc.agi|${CALLERIDNUM}|${EXTEN}|3)
exten => _.,n,Congestion
exten => _.,n,Hangup

exten => 30XX,1,SetCallerID(${CALLERIDNUM})
exten => 30XX,n,Dial,SIP/${EXTEN}
exten => 30XX,n,Hangup
 
Zuletzt bearbeitet:
axo hätte vielleicht sagen sollen das dass ganz via voiponcd läuft ...
Hier der Part den ich eingefügt habe:

Code:
[ausgehend2]
exten => _.,1,SetCallerID(3002)
exten => _.,n,DeadAGI(astcc.agi|${CALLERIDNUM}|${EXTEN}|3)
exten => _.,n,Congestion
exten => _.,n,Hangup


[webcall]
exten => _X.,1,SetCallerID(3002)
exten => _X.,n,noop(webcall)
exten => _X.,n,DeadAGI(astcc.agi,${EXTEN},${EXTEN}|3)
exten => _X.,n,Hangup

In der sip.conf hab ich nicht verändert.

Gruß und Danke
 
also

[ausgehend2]
exten => _.,1,SetCallerID(3002)
exten => _.,n,DeadAGI(astcc.agi|${CALLERIDNUM}|${EXTEN}|3)
exten => _.,n,Congestion
exten => _.,n,Hangup


exten => 30XX,1,SetCallerID(3002)
exten => 30XX,n,Dial,SIP/${EXTEN}
exten => 30XX,n,Hangup


[webcall]
exten => _X.,1,SetCallerID(3002)
exten => _X.,n,noop(webcall)
exten => _X.,n,DeadAGI(astcc.agi,${EXTEN},${EXTEN}|3)
exten => _X.,n,Hangup

exten => 30XX,1,SetCallerID(3002)
exten => 30XX,n,Dial,SIP/${EXTEN}
exten => 30XX,n,Hangup

und du must natuerlich dann auch noch deinen php editieren und da reinschreiben
fputs($socket, "Channel: LOCAL/3002@webcall\r\n");
 
hi,

also ich hab das jetzt eingebaut. Nun passiert als vorhin nur es klappt immer noch nicht.
Hier mal die CLi Ausgabe:
Code:
== Parsing '/etc/asterisk/manager.conf': Found
  == Manager 'webserver' logged on from 192.168.0.1
    -- Executing SetCallerID("Local/3002@webcall-af86,2", "3002") in new stack
    -- Executing NoOp("Local/3002@webcall-af86,2", "webcall") in new stack
    -- Executing DeadAGI("Local/3002@webcall-af86,2", "astcc.agi|3002|3002|3") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/astcc.agi
    -- AGI Script astcc.agi completed, returning 0
    -- Executing Hangup("Local/3002@webcall-af86,2", "") in new stack
  == Spawn extension (webcall, 3002, 4) exited non-zero on 'Local/3002@webcall-af86,2'
    -- Executing SetCallerID("OutgoingSpoolFailed", "3002") in new stack
    -- Executing DeadAGI("OutgoingSpoolFailed", "astcc.agi|3002|failed|3") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/astcc.agi
May  9 17:30:25 WARNING[2331]: channel.c:2326 set_format: Unable to find a codec translation path from unknown to gsm
May  9 17:30:25 WARNING[2331]: channel.c:2326 set_format: Unable to find a codec translation path from unknown to gsm
    -- AGI Script astcc.agi completed, returning 0
    -- Executing Congestion("OutgoingSpoolFailed", "") in new stack
  == Spawn extension (ausgehend2, failed, 3) exited non-zero on 'OutgoingSpoolFailed'
    -- Executing SetCallerID("OutgoingSpoolFailed", "3002") in new stack
    -- Executing DeadAGI("OutgoingSpoolFailed", "astcc.agi|3002|h|3") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/astcc.agi
May  9 17:30:25 WARNING[2331]: channel.c:2326 set_format: Unable to find a codec translation path from unknown to gsm
May  9 17:30:25 WARNING[2331]: channel.c:2326 set_format: Unable to find a codec translation path from unknown to gsm
    -- AGI Script astcc.agi completed, returning 0
    -- Executing Congestion("OutgoingSpoolFailed", "") in new stack
  == Spawn extension (ausgehend2, h, 3) exited non-zero on 'OutgoingSpoolFailed'
  == Manager 'webserver' logged off from 192.168.0.1
Es rührt sich nichts :( Ich Sehe auch nirgends das er versucht zuwählen.
Im WebInterface steht allerdings die Rufnummer drin die er anwählen soll auch der richtig SIP Account nur das da dann noch der Ruf abgebrochen wurde.

Gruß
 
Also wie man sieht versucht der immer noch über die Deadagi raus zugehen....
das ist das Problem...


so mach das in die PHP
fputs($socket, "Channel: Sip/3002\r\n");



und so in die extensions.conf

[ausgehend2]
exten => 30XX,n,Dial,SIP/${EXTEN}
exten => 30XX,n,Hangup

Probiers mal so
 
also nun klingelt das SIP Telefon ...
CLi Ausgabe:
Code:
== Starting SIP/3002-1c19 at ausgehend2,091100000,1 failed so falling back to exten 's'
  == Starting SIP/3002-1c19 at ausgehend2,s,1 still failed so falling back to context 'default'

nun scheint er ein Problem mit dem context ausgehend2 zu haben.


gruss
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.