Rückwärtssuche bei dasoertliche.de neues Script

Hi
hat vielleicht auch jemand ein script für klicktel? manche Einträge sind seltsamerweise nicht im örtlichen enthalten, aber im klicktel.

oder vielleicht wäre es ja auch möglich in beiden zu suchen???:confused:
 
Hi,

habe mich mal hingesetzt und ein kleines perl Script für das Örtliche geschrieben:
Code:
#!/usr/bin/perl
use strict;

$|=1;

my %AGI;
my $Timeout = 1;  # http timeout

while(<STDIN>) {
  chomp;
  last unless length($_);
  if (/^agi_(\w+)\:\s+(.*)$/) {
    $AGI{$1} = $2;
  }
}

# Name aus Telefonbuch raussuchen
my $CallerID = $AGI{'callerid'};
if ("${CallerID}" ne "") {
  my $SearchOutput = `wget -q -T ${Timeout} -O - "http://www.dasoertliche.de/?form_name=search_inv&ph=${CallerID}"`;
  $SearchOutput =~ /class=\"entry\".*>(.*)</;
  my $CallerName = "$1";
  if ("${CallerName}" ne "") {
    print "SET VARIABLE CALLERID(name) \"${CallerName}\" \"\"\n";
  }
}

Klicktel habe ich mir angeschaut, aber die haben die komische Eigenschaft ab und zu die gesuchte Nummer zu verkürzen und liefern dann mehrere Ergebnisse, die ich überhaupt nicht haben wollte. Teilweise bekomme ich dort auch Ergebnisse ohne die gesuchte Nummer.
Das macht es nicht gerade einfacher das zu parsen... :(

Gruß, Klaus
 
Hi,
habs mit Klicktel mittlerweile am laufen:
Code:
######################################_IM_KLICKTEL_SUCHEN_#################################################################
if echo $1 | grep '^01';then

	echo "Das ist ein Handy"
        
else
	if [ "$NAME" == "" ]; then
	echo "Suche nach $NUMMER in www.klicktel.de"
	wget -q -O $TMPFILE "http://www.klicktel.de/inverssuche/backwardssearch.html?newSearch=1&boxtype=backwards&sid=270asss9s9u1m4l7bfvhc3tbb6&vollstaendig=$NUMMER"
	# Adresse Zeile herausfiltern und in Datei speichern
    	#durch Verkürzung
		[COLOR="Red"]if grep -i "1 Treffer" $TMPFILE > $NULL;then[/COLOR]
		echo "EIN TREFFER!"	
		grep  $TMPFILE -e "$TITEL" >$TMPFILE1
		rm $TMPFILE
   		tr -d ' ' < $TMPFILE1 > $TMPFILE
                #Umwandlung von html in text
		NAME="`sed -e 's/<[^>]*>//g' $TMPFILE`" 
		echo "WEB2-Name: $NAME"
		else
		echo "FEHLER"
		fi;	
	fi;
fi;

Bekomme nur eine Ausgabe, wenn nur EIN Treffer gefunden wurde. Dann passt es wieder und Anlagennummern werden super gefunden
 
Hi,

ist aber mit Klicktel nicht wirklich zuverlässig, da auch bei Privatanschlüssen 1 Treffer zurückkommen kann durch Rufnummernverkürzung.
Du kannst Dir also nie wirklich sicher sein, dass der eine Treffer auch wirklich zur Rufnummer passt.


Nur kurz am Rande: Bei Klicktel ist sowas durch die Nutzungsbedingungen untersagt. Das Örtliche ist da (zumindest für mein juristisches Laienverständnis) kulanter und erlaubt sowas (solange man die Daten nicht speichert).

Gruß, Klaus
 
Problem mit ast_revers.agi

Hallo,
bin neu in der Asterisk-Szene und habe unter OS X 10.5 Asterisk 1.6.05 laufen. Jetzt wollte ich die Inverssuche einbauen und habe das weiter oben gepostete Skript installiert. Es läuft auch soweit, dass es den richtigen Namen und die richtige Adresse liefert. Danach kommt jedoch eine Fehlermeldung mit der ich nichts anfangen kann. Hier der log und die beiden conf:

Asterisk-Log
Code:
Executing [1234567@incoming:1] NoOp("SIP/-00869800", "Incoming call on sipgate.de") in new stack
    -- Executing [1234567@incoming:2] Ringing("SIP/1234567-00869800", "") in new stack
    -- Executing [1234567@incoming:3] AGI("SIP/1234567-00869800", "ast_revers.agi,02123456789") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/ast_revers.agi
/var/lib/asterisk/agi-bin/ast_revers.agi: line 558: svdrpsend.pl: command not found
/var/lib/asterisk/agi-bin/ast_revers.agi: line 559: svdrpsend.pl: command not found
    -- <SIP/1234567-00869800>AGI Script ast_revers.agi completed, returning 0
    -- Executing [1234567@incoming:4] Set("SIP/1234567-00869800", "CALLERID(name)=Name Vorname") in new stack
") in new stackg [1234567@incoming:5] Set("SIP/1234567-00869800", "CALLERID(num)=Strasse 1, 12345 Ort 
    -- Executing [1234567@incoming:6] Dial("SIP/1234567-00869800", "SIP/30&SIP/31&SIP/32,30") in new stack
    -- Called 30
    -- Called 31
    -- Called 32
[Feb  8 18:07:41] WARNING[514]: chan_sip.c:2794 retrans_pkt: Maximum retries exceeded on transmission [email protected] for seqno 102 (Critical Request) -- See doc/sip-retransmit.txt.
[Feb  8 18:07:41] WARNING[514]: chan_sip.c:2821 retrans_pkt: Hanging up call [email protected] - no reply to our critical packet (see doc/sip-retransmit.txt).
[Feb  8 18:07:41] WARNING[514]: chan_sip.c:2794 retrans_pkt: Maximum retries exceeded on transmission [email protected] for seqno 102 (Critical Request) -- See doc/sip-retransmit.txt.
[Feb  8 18:07:41] WARNING[514]: chan_sip.c:2821 retrans_pkt: Hanging up call [email protected] - no reply to our critical packet (see doc/sip-retransmit.txt).
[Feb  8 18:07:44] WARNING[514]: chan_sip.c:2794 retrans_pkt: Maximum retries exceeded on transmission [email protected] for seqno 102 (Critical Request) -- See doc/sip-retransmit.txt.
[Feb  8 18:07:44] WARNING[514]: chan_sip.c:2821 retrans_pkt: Hanging up call [email protected] - no reply to our critical packet (see doc/sip-retransmit.txt).
  == Everyone is busy/congested at this time (3:3/0/0)
    -- Executing [1234567@incoming:7] NoOp("SIP/1234567-00869800", "Dial beendet") in new stack
    -- Executing [1234567@incoming:8] VoiceMail("SIP/1234567-00869800", "30,u") in new stack
extensions.conf
Code:
[incoming]
;mit diesem dialplan läuft Asterisk wie gewünscht
;exten => 1234567,1,NoOp(Incoming call on sipgate.de)
;exten => 1234567,n,Ringing()
;exten => 1234567,n,Wait(1)
;exten => 1234567,n,Dial(SIP/30&SIP/31&SIP/32,30)
;exten => 1234567,n,VoiceMail(30,u)
;exten => 1234567,n,Hangup

;Test für Inverssuche
exten => 1234567,1,NoOp(Incoming call on sipgate.de)
exten => 1234567,n,Ringing()
exten => 1234567,n,AGI(ast_revers.agi,${CALLERID(NUM)})
exten => 1234567,n,Set(CALLERID(name)=${LONGNAME})
exten => 1234567,n,Set(CALLERID(num)=${LONGDETAILS})
exten => 1234567,n,Dial(SIP/30&SIP/31&SIP/32,30)
exten => 1234567,n,NoOp(Dial beendet)
exten => 1234567,n,VoiceMail(30,u)
exten => 1234567,n,Hangup()
sip.conf

Code:
[general]
context=default   

[30]
type=friend
username=30
secret=geheim
host=dynamic
disallow=all
allow=ulaw
allow=alaw
canreinvite=no
qualify=yes
dtmfmode=auto
nat=yes

[31]
type=friend
username=31
secret=geheim
host=dynamic
disallow=all
allow=ulaw
allow=alaw
canreinvite=no
qualify=yes
dtmfmode=auto
nat=yes

[32]
type=friend
username=32
secret=geheim
host=dynamic
disallow=all
allow=ulaw
allow=alaw
canreinvite=no
qualify=yes
dtmfmode=auto
nat=yes
Edit Guard-X: Bitte nächstes Mal Code-Tags verwenden!
 
Meinst Du den Fehler?
/var/lib/asterisk/agi-bin/ast_revers.agi: line 558: svdrpsend.pl: command not found
/var/lib/asterisk/agi-bin/ast_revers.agi: line 559: svdrpsend.pl: command not found

Wenn ja, dann findet das AGI-Script ein weiteres Script (svdrpsend.pl) nicht oder evtl. den zugehörigen Perl-Interpreter.

Du solltest das Script svdrpsend.pl mit vollem Pfad aufrufen.
 
Du solltest das Script svdrpsend.pl mit vollem Pfad aufrufen.
Oder

Code:
#VDR-Anzeige
VDR=0                       #Anzeige VDR 0=Nicht 1=Ja

setzen falls kein VDR angesteuert werden soll.

Ich musste für tel.search.ch noch zwei weitere sed expressions anhängen, sonst hatte ich HTML in der Ausgabe. Oder sollte das so sein?

Code:
SET VARIABLE LONGDETAILS "***strasse **nr***, SCHWEIZ <span class="tel_addrpart">***PLZ*** Winterthur/ZH</span>"

Original
Code:
DETAILS=`grep 'class=\"raddr\".*' -m1 $TMPFILE | sed -e s/^.*\"raddr\"\>//g -e s/\<'\/'div\>.*//g`

Erweitert:
Code:
DETAILS=`grep 'class=\"raddr\".*' -m1 $TMPFILE | sed -e s/^.*\"raddr\"\>//g -e s/\<'\/'div\>.*//g -e s/\<span.*addrpart\"\>//g -e s/\<'\/'span\>//g`
 
heyho,

danke erstma für das geniale ast_revers Skript!

Hab das mal um einen MySQL Log und eine Jabber Notification (etwas frickelig über wget, aber total einfach...) erweitert:

Da hier auch die angerufene Nummer (Extension) übermittelt werden soll, muss diese zusätzlich an das Skript übergeben ( AGI(ast_revers.agi|${CALLERID(NUM)}|${EXTEN}) ) und im Skript auf eine "normale" Variable gesetzt werden ( DEST=$2 , am besten nach NUMMER=$1).

das nach ## Anrufliste_log nach echo "$ALDATE - $ALTIME - $NUMMER - $NAME - $DETAILS" > $ALPFAD/$ALFILE einfügen:
Code:
## MYSQL LOG:
## Timestamp von mysql
echo "insert ignore into log (nummer,destination) values ('$NUMMER','$DEST')" | mysql -h$MYSQLHOST -u$MYSQLUSER -p$MYSQLPASS $MYSQLDB
wget -b "http://localhost/ast_log/sendmessage.php?nummer=$NUMMER&name=$NAME&details=$DETAILS&dest=$DEST" -o /tmp/ast_sendmessagelog -O /tmp/ast_sendmessageout

dafür wird natürlich eine neue mysql table benötigt:
Code:
CREATE TABLE log (
  id int(11) NOT NULL auto_increment,
  nummer varchar(100) default NULL,
  `date` timestamp NOT NULL default CURRENT_TIMESTAMP,
  destination varchar(50) default NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

Im Anhang eine Beispiel php Datei von meinem Bruder ;) ( www.fabian.loebhard.com ) , css und Hintergrund fehlt, das sollte aber keinem ein Bein brechen.

Im Anhang ist auch die passende sendmessage.php, wofür folgende Library benötigt wird:
http://code.google.com/p/xmpphp/


(eine Webserver mit PHP Unterstützung wird hier natürlich vorrausgesetzt)
 

Anhänge

  • ast_mysqllog.php.txt
    2.5 KB · Aufrufe: 6
  • sendmessage.php.txt
    747 Bytes · Aufrufe: 7
Neue Skriptversion

Die zahlreichen eingegangenen Änderungsvorschläge nebst hier diskutierten Bugfixes haben mich veranlasst, endlich mal ein neues Paket zu bauen.

Dabei sind neu enthalten:

* 2. Chachefile benutzbar bei Speicherort=CACHE (übernommen von Ralph*)
* Blacklistfunktionalitaet (manuelles/automatisches Blacklisting) / hierfür Erweiterung von pbook um das Attribut black (enum('Ja','Nein') default NULL)
* Inverssuche in Deutschland sequentiell und kaskadierend waehlbar fuer Das Oertliche und Klicktel (Klicktel auf Basis von SR166)
* Anruflog in DB (Anregung von quirxl)
* Anrufinfo per gmail (Anregung von quirxl)

Die Anrufinfo per gmail konnte ich leider mangels entsprechenden Accounts nicht selbst testen, im Unterschied zur Ursprungsidee ist jedoch kein eigener Webserver, sondern nur ein installiertes php5 erforderlich.
Die Klicktel-Funktion von SR166 wurde überarbeitet, so dass sie die äquivalenten Informationen wie Das Oertliche liefert, was man moechte, oder ob man bei Nichtreffer der ersten Suche im zweiten Verzeichnis suchen möchte, ist per Konfig einstellbar.
Die Konfigurationsbeispieldatei (ast_revers.conf.sample) hat naturgemäß eine ganze Reihe neuer Parameter bekommen, wer BLACKLIST nutzen will, muss zudem bei Datenbanknutzung die entsprechende Tabelle (standardmäßig pbook) um das Attribut black erweitern. Dessen Definition findet ihr in mysqlstructure.sql.
Die mysqldata.sql ist noch nicht aktualisiert, das schaffe ich leider bereits edit einiger Zeit nicht, obwohl sich in einigen (insb. nichteuropäischen) Ländern die Dialpläne geändert haben :mad:

Ich wünsche viel Spaß+Erfolg beim Ausprobieren!
 

Anhänge

  • ast_revers.tar.bz2
    761.1 KB · Aufrufe: 84
hallo,

danke für gescheit einbauen, super! :)

nur zur Verbesserung: gmail steht hier nur als beispiel drin, man kann dazu natürlich jeden anderen Jabber/XMPP Server benutzen (jabber.org , jabber.ccc.de usw...), deswegen wärs vielleicht sinnvoll den Server auch in die .conf datei zu schreiben, nur welche Einstellungen man für welchen Server benutzen muss, keine Ahnung.

Habs bis jetz nur mit gmail ausprobiert, damits klappts top! :)


(installiertes php5 heißt hier (auf Debian) php5-cli , sonst fehlt die /usr/bin/php )
 
Neue Rufnummernpläne

Hallo zusammen,

jetzt auch endlich neue Nummernpläne in mysqldata.sql.
Bitte beachten: Die eingefügten Änderungen für Marokko und Mali werden zum 01.04.2009 wirksam, alles andere gilt schon.
Für die Neugierigen anbei der Inhalt der NEWS.mysqldata:

Code:
Version vom 31.03.2009

Durch ein Land geänderte Nummernpläne (Neugestaltung/Renummerierung):
Kuwait
Mali
Marokko
Nikaragua
Ruanda

Durch ein Land erweiterte Nummernpläne (neue Gassen):
Elfenbeinküste
Israel
Malta

Intern erweiterte Nummernpläne (Aufnahme der Orts/Gebietsnetze / Area codes)
Ägypten
Aserbaidschan
Ghana
Kasachstan
Kirgisien
Malawi
Tadschikistan
Tschad
Ungarn

Die Daten basieren wie immer auf den Veröffentlichungen der ITU. Wer Fehler/vergessene Orts- oder Mobilfunkvorfahlen findet, kann dies gerne posten! Und jetzt: Es möge nützen ;)
 

Anhänge

  • mysqldata.tar.bz2
    721.1 KB · Aufrufe: 39
Hallo,
was mir bei der Installation aufgefallen ist (mehr oder weniger wichtige Sachen):
* Die INSTALL datei heißt INTALL
* ast_reverse.agi wird in der README genannt, in der bz2 heißt sie ast_revers.agi
* Gefundene Werte in die MYSQL-DB schreiben (Ausgabe in der Logdatei)
* # Log einb (1=Ja, 0=nein)? Was bedeutet das (steht in der ast_reverse.conf)?

Jetzt zu meinem eigentlichen Problem.
Code:
    -- Executing [s@macro-normal:1] AGI("SIP/5060-015bf158", "ast_reverse.agi,01234123456,201") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/ast_reverse.agi
[B][Apr  8 16:53:42] ERROR[7625]: utils.c:1126 ast_carefulwrite: write() returned error: Broken pipe[/B]
    -- <SIP/5060-015bf158>AGI Script ast_reverse.agi completed, returning 0
    -- Executing [s@macro-normal:2] NoOp("SIP/5060-015bf158", "Ein Anruf von ") in new stack
    -- Executing [s@macro-normal:3] NoOp("SIP/5060-015bf158", "Ein Anruf in ") in new stack
Ich benutze 1.6.1.0-rc3. Das Skript an sich funktioniert super (Danke dafür!:)). Wenn ich es direkt auf der Konsole aufrufe gibt es folgende Ausgabe:

./ast_reverse.agi 01234 123456
SET VARIABLE LONGNAME "Hans Duck"
SET VARIABLE LONGDETAILS "Erpel Str. 1, 12345 Entenhausen"

In die Datenbank wird alles richtig geschrieben.

Vielen Dank schon mal!
 
Die Fehlerchen hab' ich hier lokal schon mal korrigiert. Danke für's Bemerken :rolleyes:

Was Dein Problem mit 1.6.1 angeht: Das broken pipe Problem ist neu. Ich hab' mal ein wenig bei Digium gestöbert und da gibt es einen entsprechende bugs die utils.c betreffend (die ja den Fehler wirft): Das Verhalten ist wohl ab 1.4.23 respektive 1.6.0.x geändert und seitdem funktioniert das einfache Schreiben auf stdout, wie es das Skript tut, offenbar nicht mehr (richtig). Eine Lösung habe ich allerdings auch noch nicht gefunden (wenn man es an der Stelle nicht auf phpagi umstellen will, die funktioniert nämlich reibungslos)

Derzeit wird wohl an utils.c und agi.c herumgeschraubt um die wechselseitigen Probleme zu lösen.
Leider habe ich dazu bislang weder eine bessere Nachricht noch Idee :mad:

Edit:

Habe eine Lösung gefunden: Scheinbar erzwingt Asterisk jetzt das Rücklesen der Statuswerte (z.B.: AGI Tx >> 200 result=1) und meldet broken pipe, wenn dies nicht getan wird. Ein entsprechend adaptiertes skript habe ich beigefügt. Wichtig: Damit das jetzt auf der Kommandozeile noch funktioniert, muss man als dritten Parameter test angeben, sonst bekommt man nichts zu sehen (der Aufruf aus dem Asterisk bleibt der gleiche)
 

Anhänge

  • ast_revers.tar
    40 KB · Aufrufe: 84
Zuletzt bearbeitet:
Habe eine Lösung gefunden: Scheinbar erzwingt Asterisk jetzt das Rücklesen der Statuswerte (z.B.: AGI Tx >> 200 result=1) und meldet broken pipe, wenn dies nicht getan wird. Ein entsprechend adaptiertes skript habe ich beigefügt. Wichtig: Damit das jetzt auf der Kommandozeile noch funktioniert, muss man als dritten Parameter test angeben, sonst bekommt man nichts zu sehen (der Aufruf aus dem Asterisk bleibt der gleiche)

hmm, bei mir tritt immer noch der selbe Fehler auf. Diesmal aber mit mehr Output:
Code:
    -- Executing [s@macro-normal:1] AGI("SIP/5060-015c0f78", "ast_reverse.agi,01234123456,201") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/ast_reverse.agi
agi_request: ast_reverse.agi
agi_channel: SIP/5060-015c0f78
agi_language: de
agi_type: SIP
agi_uniqueid: 1239210197.131
agi_version: 1.6.1.0-rc3
agi_callerid: 01234123456
agi_calleridname: unknown
agi_callingpres: 0
agi_callingani2: 0
agi_callington: 0
agi_callingtns: 0
agi_dnid: 712345
agi_rdnis: unknown
agi_context: macro-normal
agi_extension: s
agi_priority: 1
agi_enhanced: 0.0
agi_accountcode:
agi_threadid: 1077598544
agi_arg_1: 01234123456
agi_arg_2: 201

200 result=1
200 result=1
[Apr  8 19:03:19] ERROR[10489]: utils.c:1126 ast_carefulwrite: write() returned error: Broken pipe
[Apr  8 19:03:19] ERROR[10489]: utils.c:1126 ast_carefulwrite: write() returned error: Broken pipe
    -- <SIP/5060-015c0f78>AGI Script ast_reverse.agi completed, returning 0
    -- Executing [s@macro-normal:2] NoOp("SIP/5060-015c0f78", "Ein Anruf von ") in new stack
    -- Executing [s@macro-normal:3] NoOp("SIP/5060-015c0f78", "Ein Anruf in ") in new stack
 
Hast Du das neu hochgeladene agi benutzt ? (Laut Statistik ja nicht ;))

Die eigentliche Änderunge betrifft die Methode asterisk und eine entsprechend neue Methode checkresults: (Änderungen in grün )

Code:
[COLOR="SeaGreen"]##Helper-Funktion fuer Returnwerte
checkresults() {
        while read line
        do
        case ${line:0:4} in
        "200 " ) echo $line >&2
                 return;;
        "510 " ) echo $line >&2
                 return;;
        "520 " ) echo $line >&2
                 return;;
        *      ) echo $line >&2;;       #keep on reading those Invlid command
                                        #command syntax until "520 End ..."
        esac
        done
}

[/COLOR]
## LONGNAME an die Asterisk uebergeben
function asterisk {
echo 'SET VARIABLE LONGNAME '"\"$NAME\"" >/dev/stdout
[COLOR="SeaGreen"]if [ "$READRES" == "0" ]; then
        checkresults
fi[/COLOR]
# Für mein Fax-Script wird auch Details zurückgeschrieben
echo 'SET VARIABLE LONGDETAILS '"\"$DETAILS\"" >/dev/stdout
[COLOR="SeaGreen"]if [ "$READRES" == "0" ]; then
        checkresults
fi[/COLOR]
#falls BLACKLISTING-Funktionalitaet gesetzt, dieses auch zuückgeben
if [ "$BLACKLIST" == "YES" ]; then
        echo 'SET VARIABLE BLACK '"\"$ISBLACK\"" >/dev/stdout
[COLOR="SeaGreen"]        if [ "$READRES" == "0" ]; then
                checkresults
        fi[/COLOR]
fi
}

READRES wird initial auf den Wert 0 gesetzt:

Code:
NUMMER=$1
DEST=$2
[COLOR="SeaGreen"]if [ "$3" == "test" ]; then
        READRES=1
else
        READRES=0
fi[/COLOR]

Mit diesen Änderungen (siehe tar-File an meinem vorherigen Beitrag) funktioniert es hier unter 1.6.0.9
 
Ich habe deine geupdatete Version auf jeden Fall auf der Platte ;). Der Test-Parameter zb ist zwingend notwendig, damit ich es auf der Konsole testen kann.

Ich habe es jetzt auch einfach nochmal mit der 1.6.0.9. getestet. Leider tritt der selbe Fehler auf :(
Der einzige unterschied wäre vielleicht noch die Architektur. Mein Asterisk läuft als 64bit Version. Wie siehts mit deinem aus?
 
64Bit und funktioniert wie gepostet.

ohne agi debug:

Code:
Asterisk 1.6.0.9, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer <[email protected]>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
  == Parsing '/etc/asterisk/asterisk.conf':   == Found
Running as group 'dialout'
  == Parsing '/etc/asterisk/extconfig.conf':   == Found
Connected to Asterisk 1.6.0.9 currently running on bnas01 (pid = 23793)
Verbosity is at least 5
  == Using SIP RTP CoS mark 5
    -- Executing [15@sip_phone:1] Set("SIP/300-800ab750", "~~EXTEN~~=15") in new stack
    -- Executing [15@sip_phone:2] Set("SIP/300-800ab750", "SIPDOMAIN=192.168.1.11") in new stack
    -- Executing [15@sip_phone:3] Set("SIP/300-800ab750", "DESTDOMAIN=") in new stack
    -- Executing [15@sip_phone:4] Set("SIP/300-800ab750", "MYNUM=15") in new stack
    -- Executing [15@sip_phone:5] NoOp("SIP/300-800ab750", "Incoming Call from house extension 300 for 15@") in new stack
    -- Executing [15@sip_phone:6] Set("SIP/300-800ab750", "STATUS=NOK") in new stack
    -- Executing [15@sip_phone:7] GotoIf("SIP/300-800ab750", "0?8:11") in new stack
    -- Goto (sip_phone,15,11)
    -- Executing [15@sip_phone:11] NoOp("SIP/300-800ab750", "Finish if-sip_dial-1670") in new stack
    -- Executing [15@sip_phone:12] GotoIf("SIP/300-800ab750", "1?13:23") in new stack
    -- Goto (sip_phone,15,13)
    -- Executing [15@sip_phone:13] GotoIf("SIP/300-800ab750", "0?14:15") in new stack
    -- Goto (sip_phone,15,15)
    -- Executing [15@sip_phone:15] NoOp("SIP/300-800ab750", "Finish if-if-sip_dial-1673-1674") in new stack
    -- Executing [15@sip_phone:16] GotoIf("SIP/300-800ab750", "0?17:18") in new stack
    -- Goto (sip_phone,15,18)
    -- Executing [15@sip_phone:18] NoOp("SIP/300-800ab750", "Finish if-if-sip_dial-1673-1675") in new stack
    -- Executing [15@sip_phone:19] GotoIf("SIP/300-800ab750", "0?20:21") in new stack
    -- Goto (sip_phone,15,21)
    -- Executing [15@sip_phone:21] NoOp("SIP/300-800ab750", "Finish if-if-sip_dial-1673-1676") in new stack
    -- Executing [15@sip_phone:22] Goto("SIP/300-800ab750", "handle_outbound_call,15,1") in new stack
    -- Goto (handle_outbound_call,15,1)
    -- Executing [15@handle_outbound_call:1] NoCDR("SIP/300-800ab750", "") in new stack
    -- Executing [15@handle_outbound_call:2] AGI("SIP/300-800ab750", "ast_revers.agi,0123451234567,300") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/ast_revers.agi
    -- <SIP/300-800ab750>AGI Script ast_revers.agi completed, returning 0
    -- Auto fallthrough, channel 'SIP/300-800ab750' status is 'UNKNOWN'

mit agi debug:

Code:
Asterisk 1.6.0.9, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer <[email protected]>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
  == Parsing '/etc/asterisk/asterisk.conf':   == Found
Running as group 'dialout'
  == Parsing '/etc/asterisk/extconfig.conf':   == Found
Connected to Asterisk 1.6.0.9 currently running on bnas01 (pid = 23793)
Verbosity is at least 5
bnas01*CLI> agi set debug on
AGI Debugging Enabled
  == Using SIP RTP CoS mark 5
    -- Executing [15@sip_phone:1] Set("SIP/300-8013dfc0", "~~EXTEN~~=15") in new stack
    -- Executing [15@sip_phone:2] Set("SIP/300-8013dfc0", "SIPDOMAIN=192.168.1.11") in new stack
    -- Executing [15@sip_phone:3] Set("SIP/300-8013dfc0", "DESTDOMAIN=") in new stack
    -- Executing [15@sip_phone:4] Set("SIP/300-8013dfc0", "MYNUM=15") in new stack
    -- Executing [15@sip_phone:5] NoOp("SIP/300-8013dfc0", "Incoming Call from house extension 300 for 15@") in new stack
    -- Executing [15@sip_phone:6] Set("SIP/300-8013dfc0", "STATUS=NOK") in new stack
    -- Executing [15@sip_phone:7] GotoIf("SIP/300-8013dfc0", "0?8:11") in new stack
    -- Goto (sip_phone,15,11)
    -- Executing [15@sip_phone:11] NoOp("SIP/300-8013dfc0", "Finish if-sip_dial-1670") in new stack
    -- Executing [15@sip_phone:12] GotoIf("SIP/300-8013dfc0", "1?13:23") in new stack
    -- Goto (sip_phone,15,13)
    -- Executing [15@sip_phone:13] GotoIf("SIP/300-8013dfc0", "0?14:15") in new stack
    -- Goto (sip_phone,15,15)
    -- Executing [15@sip_phone:15] NoOp("SIP/300-8013dfc0", "Finish if-if-sip_dial-1673-1674") in new stack
    -- Executing [15@sip_phone:16] GotoIf("SIP/300-8013dfc0", "0?17:18") in new stack
    -- Goto (sip_phone,15,18)
    -- Executing [15@sip_phone:18] NoOp("SIP/300-8013dfc0", "Finish if-if-sip_dial-1673-1675") in new stack
    -- Executing [15@sip_phone:19] GotoIf("SIP/300-8013dfc0", "0?20:21") in new stack
    -- Goto (sip_phone,15,21)
    -- Executing [15@sip_phone:21] NoOp("SIP/300-8013dfc0", "Finish if-if-sip_dial-1673-1676") in new stack
    -- Executing [15@sip_phone:22] Goto("SIP/300-8013dfc0", "handle_outbound_call,15,1") in new stack
    -- Goto (handle_outbound_call,15,1)
    -- Executing [15@handle_outbound_call:1] NoCDR("SIP/300-8013dfc0", "") in new stack
    -- Executing [15@handle_outbound_call:2] AGI("SIP/300-8013dfc0", "ast_revers.agi,0123451234567,300") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/ast_revers.agi
<SIP/300-8013dfc0>AGI Tx >> agi_request: ast_revers.agi
<SIP/300-8013dfc0>AGI Tx >> agi_channel: SIP/300-8013dfc0
<SIP/300-8013dfc0>AGI Tx >> agi_language: de
<SIP/300-8013dfc0>AGI Tx >> agi_type: SIP
<SIP/300-8013dfc0>AGI Tx >> agi_uniqueid: 1239224472.84
<SIP/300-8013dfc0>AGI Tx >> agi_version: 1.6.0.9
<SIP/300-8013dfc0>AGI Tx >> agi_callerid: 300
<SIP/300-8013dfc0>AGI Tx >> agi_calleridname: Test
<SIP/300-8013dfc0>AGI Tx >> agi_callingpres: 0
<SIP/300-8013dfc0>AGI Tx >> agi_callingani2: 0
<SIP/300-8013dfc0>AGI Tx >> agi_callington: 0
<SIP/300-8013dfc0>AGI Tx >> agi_callingtns: 0
<SIP/300-8013dfc0>AGI Tx >> agi_dnid: 15
<SIP/300-8013dfc0>AGI Tx >> agi_rdnis: unknown
<SIP/300-8013dfc0>AGI Tx >> agi_context: handle_outbound_call
<SIP/300-8013dfc0>AGI Tx >> agi_extension: 15
<SIP/300-8013dfc0>AGI Tx >> agi_priority: 2
<SIP/300-8013dfc0>AGI Tx >> agi_enhanced: 0.0
<SIP/300-8013dfc0>AGI Tx >> agi_accountcode: Test
<SIP/300-8013dfc0>AGI Tx >> agi_threadid: 140678952446288
<SIP/300-8013dfc0>AGI Tx >> agi_arg_1: 0123451234567
<SIP/300-8013dfc0>AGI Tx >> agi_arg_2: 300
<SIP/300-8013dfc0>AGI Tx >>
<SIP/300-8013dfc0>AGI Rx << SET VARIABLE LONGNAME "kein Eintrag"
<SIP/300-8013dfc0>AGI Tx >> 200 result=1
<SIP/300-8013dfc0>AGI Rx << SET VARIABLE LONGDETAILS "keine Adresse"
<SIP/300-8013dfc0>AGI Tx >> 200 result=1
    -- <SIP/300-8013dfc0>AGI Script ast_revers.agi completed, returning 0
    -- Auto fallthrough, channel 'SIP/300-8013dfc0' status is 'UNKNOWN'

Da verstehe noch einer die Welt ...

Du kannst natürlich mal spaßeshalber agi-test.agi aus den asterisk-sourcen vom * aus aufrufen. Der verwendet das gleiche Prinzip nur unter perl.
Nach meinem unmaßgeblichen Dafürhalten bringt Dir das ggf. vergleichbare Fehler. Und dann hieße das, das da noch irgendwas in den Wicken sein muß ...

BTW: Funktionieren bei Dir - ganz allgemein - andere agi-Skripte ???
 
Zuletzt bearbeitet:
Bis auf ein paar nicht gefunden Sounddateien funktioniert agi-test.agi:

Code:
    -- Executing [30@intern:1] AGI("SIP/jansip-0157d428", "agi-test.agi") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/agi-test.agi
    -- Playing 'beep' (escape_digits=) (sample_offset 0)
[Apr  8 22:59:21] WARNING[12641]: file.c:638 ast_openstream_full: File digits/1N does not exist in any format
[Apr  8 22:59:21] WARNING[12641]: file.c:916 ast_streamfile: Unable to open digits/1N (format 0x1000 (g722)): No such file or directory
    -- <SIP/jansip-0157d428> Playing 'digits/hundred.g722' (language 'de')
[Apr  8 22:59:22] WARNING[12641]: file.c:638 ast_openstream_full: File digits/and does not exist in any format
[Apr  8 22:59:22] WARNING[12641]: file.c:916 ast_streamfile: Unable to open digits/and (format 0x1000 (g722)): No such file or directory
[Apr  8 22:59:22] WARNING[12641]: file.c:638 ast_openstream_full: File digits/2-and does not exist in any format
[Apr  8 22:59:22] WARNING[12641]: file.c:916 ast_streamfile: Unable to open digits/2-and (format 0x1000 (g722)): No such file or directory
    -- <SIP/jansip-0157d428> Playing 'digits/90.g722' (language 'de')
[Apr  8 22:59:23] WARNING[12641]: file.c:638 ast_openstream_full: File digits/millions does not exist in any format
[Apr  8 22:59:23] WARNING[12641]: file.c:916 ast_streamfile: Unable to open digits/millions (format 0x1000 (g722)): No such file or directory
    -- <SIP/jansip-0157d428> Playing 'digits/8.g722' (language 'de')
    -- <SIP/jansip-0157d428> Playing 'digits/hundred.g722' (language 'de')
[Apr  8 22:59:24] WARNING[12641]: file.c:638 ast_openstream_full: File digits/and does not exist in any format
[Apr  8 22:59:24] WARNING[12641]: file.c:916 ast_streamfile: Unable to open digits/and (format 0x1000 (g722)): No such file or directory
[Apr  8 22:59:24] WARNING[12641]: file.c:638 ast_openstream_full: File digits/7-and does not exist in any format
[Apr  8 22:59:24] WARNING[12641]: file.c:916 ast_streamfile: Unable to open digits/7-and (format 0x1000 (g722)): No such file or directory
    -- <SIP/jansip-0157d428> Playing 'digits/30.g722' (language 'de')
    -- <SIP/jansip-0157d428> Playing 'digits/thousand.g722' (language 'de')
    -- <SIP/jansip-0157d428> Playing 'digits/4.g722' (language 'de')
    -- <SIP/jansip-0157d428> Playing 'digits/hundred.g722' (language 'de')
[Apr  8 22:59:27] WARNING[12641]: file.c:638 ast_openstream_full: File digits/and does not exist in any format
[Apr  8 22:59:27] WARNING[12641]: file.c:916 ast_streamfile: Unable to open digits/and (format 0x1000 (g722)): No such file or directory
[Apr  8 22:59:27] WARNING[12641]: file.c:638 ast_openstream_full: File digits/5-and does not exist in any format
[Apr  8 22:59:27] WARNING[12641]: file.c:916 ast_streamfile: Unable to open digits/5-and (format 0x1000 (g722)): No such file or directory
    -- <SIP/jansip-0157d428> Playing 'digits/60.g722' (language 'de')

Welche php-cli version läuft bei dir? Hier ist es:
Code:
PHP 5.2.6-2ubuntu4.1 with Suhosin-Patch 0.9.6.2 (cli) (built: Feb 11 2009 20:44:58)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
Am Suhosin-Patch sollte es eigentlich nicht liegen, da diese Version nur PHP-Fehler berichtet, aber nicht eingreift.

Edit:
So, mit agi set debug on kommt schon mehr ans Tageslicht:
Code:
<SIP/5060-0159e368>AGI Tx >> agi_threadid: 1102633296
<SIP/5060-0159e368>AGI Tx >> agi_arg_1: 012345677
<SIP/5060-0159e368>AGI Tx >> agi_arg_2: 201
<SIP/5060-0159e368>AGI Tx >>
<SIP/5060-0159e368>AGI Rx << SET VARIABLE LONGNAME "Hans Xy"
<SIP/5060-0159e368>AGI Tx >> 200 result=1
<SIP/5060-0159e368>AGI Rx << SET VARIABLE LONGDETAILS "geheime straße"
<SIP/5060-0159e368>AGI Tx >> 200 result=1
<SIP/5060-0159e368>AGI Rx << 220 svp SVDRP VideoDiskRecorder 1.6.0; Wed Apr  8 23:15:35 2009
<SIP/5060-0159e368>AGI Tx >> 510 Invalid or unknown command
<SIP/5060-0159e368>AGI Rx << 250 Message queued
<SIP/5060-0159e368>AGI Tx >> 510 Invalid or unknown command
<SIP/5060-0159e368>AGI Rx << 221 svp closing connection
<SIP/5060-0159e368>AGI Tx >> 510 Invalid or unknown command
<SIP/5060-0159e368>AGI Rx << 220 svp SVDRP VideoDiskRecorder 1.6.0; Wed Apr  8 23:15:36 2009
<SIP/5060-0159e368>AGI Tx >> 510 Invalid or unknown command
<SIP/5060-0159e368>AGI Rx << 250 Message queued
<SIP/5060-0159e368>AGI Tx >> 510 Invalid or unknown command
[Apr  8 23:15:38] ERROR[13306]: utils.c:1126 ast_carefulwrite: write() returned error: Broken pipe
<SIP/5060-0159e368>AGI Rx << 221 svp closing connection
<SIP/5060-0159e368>AGI Tx >> 510 Invalid or unknown command
[Apr  8 23:15:38] ERROR[13306]: utils.c:1126 ast_carefulwrite: write() returned error: Broken pipe
    -- <SIP/5060-0159e368>AGI Script ast_reverse.agi completed, returning 0
    -- Executing [s@macro-normal:2] NoOp("SIP/5060-0159e368", "Ein Anruf von ") in new stack
    -- Executing [s@macro-normal:3] NoOp("SIP/5060-0159e368", "Ein Anruf in ") in new stack
Wenn ich jetzt den VDR-Teil in der Konfig ausschalte, sieht es so aus wie bei dir. Es tritt also kein Fehler mehr auf. :)

Jedoch sind die Vars bei mir noch leer:
Code:
    -- Executing [s@macro-normal:2] NoOp("SIP/8001123-780d9398", "Ein Anruf von ") in new stack
    -- Executing [s@macro-normal:3] NoOp("SIP/8001123-780d9398", "Ein Anruf in ") in new stack
 
Zuletzt bearbeitet:
agi-test.agi sollte perl sein, unser ast_revers ist ja bash (im Grundsatz, nur ein paar externe Skripte, die Du u.U. gar nicht ansprichst, sind in PHP (-> jabber und Reverssuche für Spanien)).
Das kann also eigentlich nicht das Problem sein.

Aber zur Info:

Code:
PHP 5.2.9 with Suhosin-Patch 0.9.7 (cli) (built: Mar 23 2009 12:43:40)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

Code:
This is perl, v5.10.0 built for x86_64-linux-thread-multi

Code:
GNU bash, version 3.2.39(1)-release (x86_64-suse-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.

Ich bin nun tatsächlich für Deinen speziellen Fall ratlos - wie gesagt test-agi verwendet das gleiche Prinzip, das ich jetzt in ast_revers eingebaut habe (Auslesen des Ergebnisses der Variablensetzung) und es funktioniert hier - siehe meine vorher geposteten CLI-logs.

Ansonsten kann ich Dir nur noch empfehlen mal in Richtung asterisk agi bash zu googeln, vielleicht findest Du ja noch weitere Lösungsideen für stdin und stdout zwischen asterisk und bash-basierten agi-Skripten ...
 
So, bei mir geht es nun auch komplett.
Die "utils.c:1126 ast_carefulwrite: write() returned error: Broken pipe" treten nicht mehr auf, wenn man VDR=0 setzt. Anscheinend empfängt der Asterisk noch den Output vom vdr-skript (siehe meinen vorherigen Post).

Damit bei den Telefonen dann auch der Name im Display steht, musste ich
noch folgendes im Dialplan hinzufügen:
exten => s,n,Set(CALLERID(name)=${LONGNAME})

Auch die NoOps müssen so aussehen:
exten => s,n,NoOp(Ein Anruf von ${LONGNAME})
exten => s,n,NoOp(Ein Anruf in ${LONGDETAILS})

Vielen Dank nochmal abw1oim, für deine schnelle Hilfe :)
 

Statistik des Forums

Themen
246,347
Beiträge
2,250,583
Mitglieder
374,001
Neuestes Mitglied
curious2315
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.